diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:22 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:22 -0800 |
commit | 7a80622f69812ca3262d2027c07a4ed0c0242945 (patch) | |
tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 | |
parent | ee6008996aa701ad2a50d5d6b1529c9e2c2724c1 (diff) | |
download | android_external_elfutils-7a80622f69812ca3262d2027c07a4ed0c0242945.tar.gz android_external_elfutils-7a80622f69812ca3262d2027c07a4ed0c0242945.tar.bz2 android_external_elfutils-7a80622f69812ca3262d2027c07a4ed0c0242945.zip |
auto import from //depot/cupcake/@135843
522 files changed, 0 insertions, 115378 deletions
diff --git a/ABOUT-NLS b/ABOUT-NLS deleted file mode 100644 index 7e121c5b..00000000 --- a/ABOUT-NLS +++ /dev/null @@ -1,588 +0,0 @@ -Notes on the Free Translation Project -************************************* - - Free software is going international! The Free Translation Project -is a way to get maintainers of free software, translators, and users all -together, so that will gradually become able to speak many languages. -A few packages already provide translations for their messages. - - If you found this `ABOUT-NLS' file inside a distribution, you may -assume that the distributed package does use GNU `gettext' internally, -itself available at your nearest GNU archive site. But you do _not_ -need to install GNU `gettext' prior to configuring, installing or using -this package with messages translated. - - Installers will find here some useful hints. These notes also -explain how users should proceed for getting the programs to use the -available translations. They tell how people wanting to contribute and -work at translations should contact the appropriate team. - - When reporting bugs in the `intl/' directory or bugs which may be -related to internationalization, you should tell about the version of -`gettext' which is used. The information can be found in the -`intl/VERSION' file, in internationalized packages. - -INSTALL Matters -=============== - - Some packages are "localizable" when properly installed; the -programs they contain can be made to speak your own native language. -Most such packages use GNU `gettext'. Other packages have their own -ways to internationalization, predating GNU `gettext'. - - By default, this package will be installed to allow translation of -messages. It will automatically detect whether the system already -provides the GNU `gettext' functions. If not, the GNU `gettext' own -library will be used. This library is wholly contained within this -package, usually in the `intl/' subdirectory, so prior installation of -the GNU `gettext' package is _not_ required. Installers may use -special options at configuration time for changing the default -behaviour. The command: - - ./configure --disable-nls - -will bypass any pre-existing `gettext' to _totally_ disable translation -of messages. - - The configuration process will not test for the `catgets' function -and therefore it will not be used. The reason is that even an -emulation of `gettext' on top of `catgets' could not provide all the -extensions of the GNU `gettext' library. - - Internationalized packages have usually many `po/LL.po' files, where -LL gives an ISO 639 two-letter code identifying the language. Unless -translations have been forbidden at `configure' time by using the -`--disable-nls' switch, all available translations are installed -together with the package. However, the environment variable `LINGUAS' -may be set, prior to configuration, to limit the installed set. -`LINGUAS' should then contain a space separated list of two-letter -codes, stating which languages are allowed. - -Using This Package -================== - - As a user, if your language has been installed for this package, you -only have to set the `LANG' environment variable to the appropriate -`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, -and `CC' is an ISO 3166 two-letter country code. For example, let's -suppose that you speak German and live in Germany. At the shell -prompt, merely execute `setenv LANG de_DE' (in `csh'), -`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). -This can be done from your `.login' or `.profile' file, once and for -all. - - You might think that the country code specification is redundant. -But in fact, some languages have dialects in different countries. For -example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The -country code serves to distinguish the dialects. - - The locale naming convention of `LL_CC', with `LL' denoting the -language and `CC' denoting the country, is the one use on systems based -on GNU libc. On other systems, some variations of this scheme are -used, such as `LL' or `LL_CC.ENCODING'. You can get the list of -locales supported by your system for your country by running the command -`locale -a | grep '^LL''. - - Not all programs have translations for all languages. By default, an -English message is shown in place of a nonexistent translation. If you -understand other languages, you can set up a priority list of languages. -This is done through a different environment variable, called -`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' -for the purpose of message handling, but you still need to have `LANG' -set to the primary language; this is required by other parts of the -system libraries. For example, some Swedish users who would rather -read translations in German than English for when Swedish is not -available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. - - In the `LANGUAGE' environment variable, but not in the `LANG' -environment variable, `LL_CC' combinations can be abbreviated as `LL' -to denote the language's main dialect. For example, `de' is equivalent -to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' -(Portuguese as spoken in Portugal) in this context. - -Translating Teams -================= - - For the Free Translation Project to be a success, we need interested -people who like their own language and write it well, and who are also -able to synergize with other translators speaking the same language. -Each translation team has its own mailing list. The up-to-date list of -teams can be found at the Free Translation Project's homepage, -`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" -area. - - If you'd like to volunteer to _work_ at translating messages, you -should become a member of the translating team for your own language. -The subscribing address is _not_ the same as the list itself, it has -`-request' appended. For example, speakers of Swedish can send a -message to `sv-request@li.org', having this message body: - - subscribe - - Keep in mind that team members are expected to participate -_actively_ in translations, or at solving translational difficulties, -rather than merely lurking around. If your team does not exist yet and -you want to start one, or if you are unsure about what to do or how to -get started, please write to `translation@iro.umontreal.ca' to reach the -coordinator for all translator teams. - - The English team is special. It works at improving and uniformizing -the terminology in use. Proven linguistic skill are praised more than -programming skill, here. - -Available Packages -================== - - Languages are not equally supported in all packages. The following -matrix shows the current state of internationalization, as of May 2003. -The matrix shows, in regard of each package, for which languages PO -files have been submitted to translation coordination, with a -translation percentage of at least 50%. - - Ready PO files am az be bg ca cs da de el en en_GB eo es - +-------------------------------------------+ - a2ps | [] [] [] [] | - aegis | () | - anubis | | - ap-utils | | - bash | [] [] [] | - batchelor | | - bfd | [] [] | - binutils | [] [] | - bison | [] [] [] | - bluez-pin | [] [] | - clisp | | - clisp | [] [] [] | - coreutils | [] [] [] [] | - cpio | [] [] [] | - darkstat | () [] | - diffutils | [] [] [] [] [] [] [] | - e2fsprogs | [] [] | - enscript | [] [] [] [] | - error | [] [] [] [] [] | - fetchmail | [] () [] [] [] [] | - fileutils | [] [] [] | - findutils | [] [] [] [] [] [] | - flex | [] [] [] [] | - gas | [] | - gawk | [] [] [] [] | - gcal | [] | - gcc | [] [] | - gettext | [] [] [] [] [] | - gettext-runtime | [] [] [] [] [] | - gettext-tools | [] [] | - gimp-print | [] [] [] [] [] | - gliv | | - glunarclock | [] [] [] | - gnucash | () [] | - gnucash-glossary | [] () [] | - gnupg | [] () [] [] [] [] | - gpe-calendar | [] | - gpe-conf | [] | - gpe-contacts | [] | - gpe-edit | | - gpe-login | [] | - gpe-ownerinfo | [] | - gpe-sketchbook | [] | - gpe-timesheet | | - gpe-today | [] | - gpe-todo | [] | - gphoto2 | [] [] [] [] | - gprof | [] [] | - gpsdrive | () () () | - grep | [] [] [] [] [] | - gretl | [] | - hello | [] [] [] [] [] [] | - id-utils | [] [] | - indent | [] [] [] [] | - jpilot | [] [] [] [] | - jwhois | [] | - kbd | [] [] [] [] [] | - ld | [] [] | - libc | [] [] [] [] [] [] | - libgpewidget | [] | - libiconv | [] [] [] [] [] | - lifelines | [] () | - lilypond | [] | - lingoteach | | - lingoteach_lessons | () () | - lynx | [] [] [] [] | - m4 | [] [] [] [] | - mailutils | [] [] | - make | [] [] [] | - man-db | [] () [] [] () | - mysecretdiary | [] [] [] | - nano | [] () [] [] [] | - nano_1_0 | [] () [] [] [] | - opcodes | [] [] | - parted | [] [] [] [] [] | - ptx | [] [] [] [] [] | - python | | - radius | | - recode | [] [] [] [] [] [] | - screem | | - sed | [] [] [] [] [] | - sh-utils | [] [] [] | - sharutils | [] [] [] [] [] [] | - sketch | [] () [] | - soundtracker | [] [] [] | - sp | [] | - tar | [] [] [] [] | - texinfo | [] [] [] [] | - textutils | [] [] [] [] | - tin | () () | - util-linux | [] [] [] [] [] | - vorbis-tools | [] [] [] | - wastesedge | () | - wdiff | [] [] [] [] | - wget | [] [] [] [] [] [] [] | - xchat | [] [] [] | - xpad | | - +-------------------------------------------+ - am az be bg ca cs da de el en en_GB eo es - 0 1 4 2 31 17 54 60 14 1 4 12 56 - - et fa fi fr ga gl he hr hu id it ja ko - +----------------------------------------+ - a2ps | [] [] [] () () | - aegis | | - anubis | [] | - ap-utils | [] | - bash | [] [] | - batchelor | [] | - bfd | [] [] | - binutils | [] [] | - bison | [] [] [] [] | - bluez-pin | [] [] [] [] | - clisp | | - clisp | [] | - coreutils | [] [] [] [] | - cpio | [] [] [] [] | - darkstat | () [] [] [] | - diffutils | [] [] [] [] [] [] [] | - e2fsprogs | | - enscript | [] [] | - error | [] [] [] [] | - fetchmail | [] | - fileutils | [] [] [] [] [] | - findutils | [] [] [] [] [] [] [] [] [] [] [] | - flex | [] [] | - gas | [] | - gawk | [] [] | - gcal | [] | - gcc | [] | - gettext | [] [] [] | - gettext-runtime | [] [] [] [] | - gettext-tools | [] | - gimp-print | [] [] | - gliv | () | - glunarclock | [] [] [] [] | - gnucash | [] | - gnucash-glossary | [] | - gnupg | [] [] [] [] [] [] [] | - gpe-calendar | [] | - gpe-conf | | - gpe-contacts | [] | - gpe-edit | [] [] | - gpe-login | [] | - gpe-ownerinfo | [] [] [] | - gpe-sketchbook | [] | - gpe-timesheet | [] [] [] | - gpe-today | [] [] | - gpe-todo | [] [] | - gphoto2 | [] [] [] | - gprof | [] [] | - gpsdrive | () [] () () | - grep | [] [] [] [] [] [] [] [] [] [] [] | - gretl | [] | - hello | [] [] [] [] [] [] [] [] [] [] [] [] [] | - id-utils | [] [] [] | - indent | [] [] [] [] [] [] [] [] | - jpilot | [] () | - jwhois | [] [] [] [] | - kbd | [] | - ld | [] | - libc | [] [] [] [] [] [] | - libgpewidget | [] [] [] | - libiconv | [] [] [] [] [] [] [] [] | - lifelines | () | - lilypond | [] | - lingoteach | [] [] | - lingoteach_lessons | | - lynx | [] [] [] [] | - m4 | [] [] [] [] | - mailutils | | - make | [] [] [] [] [] [] | - man-db | [] () () | - mysecretdiary | [] [] | - nano | [] [] [] [] | - nano_1_0 | [] [] [] [] | - opcodes | [] [] | - parted | [] [] [] | - ptx | [] [] [] [] [] [] [] | - python | | - radius | | - recode | [] [] [] [] [] [] | - screem | | - sed | [] [] [] [] [] [] [] [] | - sh-utils | [] [] [] [] [] [] | - sharutils | [] [] [] [] [] | - sketch | [] | - soundtracker | [] [] [] | - sp | [] () | - tar | [] [] [] [] [] [] [] [] [] | - texinfo | [] [] [] [] | - textutils | [] [] [] [] [] | - tin | [] () | - util-linux | [] [] [] [] () [] | - vorbis-tools | [] | - wastesedge | () | - wdiff | [] [] [] [] [] | - wget | [] [] [] [] [] [] [] [] | - xchat | [] [] [] | - xpad | | - +----------------------------------------+ - et fa fi fr ga gl he hr hu id it ja ko - 20 1 15 73 14 24 8 10 30 31 19 31 9 - - lg lt lv ms nb nl nn no pl pt pt_BR ro - +----------------------------------------+ - a2ps | [] [] () () () [] [] | - aegis | () | - anubis | [] [] | - ap-utils | () | - bash | [] | - batchelor | | - bfd | | - binutils | | - bison | [] [] [] [] | - bluez-pin | [] | - clisp | | - clisp | [] | - coreutils | [] | - cpio | [] [] [] | - darkstat | [] [] [] [] | - diffutils | [] [] [] | - e2fsprogs | | - enscript | [] [] | - error | [] [] | - fetchmail | () () | - fileutils | [] | - findutils | [] [] [] [] | - flex | [] | - gas | | - gawk | [] | - gcal | | - gcc | | - gettext | [] | - gettext-runtime | [] | - gettext-tools | | - gimp-print | [] | - gliv | [] | - glunarclock | [] | - gnucash | | - gnucash-glossary | [] [] | - gnupg | | - gpe-calendar | [] [] | - gpe-conf | [] [] | - gpe-contacts | [] | - gpe-edit | [] [] | - gpe-login | [] [] | - gpe-ownerinfo | [] [] | - gpe-sketchbook | [] [] | - gpe-timesheet | [] [] | - gpe-today | [] [] | - gpe-todo | [] [] | - gphoto2 | | - gprof | [] | - gpsdrive | () () () | - grep | [] [] [] [] | - gretl | | - hello | [] [] [] [] [] [] [] [] [] | - id-utils | [] [] [] | - indent | [] [] [] | - jpilot | () () | - jwhois | [] [] [] | - kbd | | - ld | | - libc | [] [] [] [] | - libgpewidget | [] [] | - libiconv | [] [] | - lifelines | | - lilypond | [] | - lingoteach | | - lingoteach_lessons | | - lynx | [] [] | - m4 | [] [] [] [] | - mailutils | | - make | [] [] | - man-db | [] | - mysecretdiary | [] | - nano | [] [] [] [] | - nano_1_0 | [] [] [] [] | - opcodes | [] [] [] | - parted | [] [] [] | - ptx | [] [] [] [] [] [] [] | - python | | - radius | | - recode | [] [] [] | - screem | | - sed | [] [] | - sh-utils | [] | - sharutils | [] | - sketch | [] | - soundtracker | | - sp | | - tar | [] [] [] [] [] [] | - texinfo | [] | - textutils | [] | - tin | | - util-linux | [] [] | - vorbis-tools | [] [] | - wastesedge | | - wdiff | [] [] [] [] | - wget | [] [] [] | - xchat | [] [] | - xpad | [] | - +----------------------------------------+ - lg lt lv ms nb nl nn no pl pt pt_BR ro - 0 0 2 11 7 26 3 4 18 15 34 34 - - ru sk sl sr sv ta tr uk vi wa zh_CN zh_TW - +-------------------------------------------+ - a2ps | [] [] [] [] [] | 16 - aegis | () | 0 - anubis | [] [] | 5 - ap-utils | () | 1 - bash | [] | 7 - batchelor | | 1 - bfd | [] [] [] | 7 - binutils | [] [] [] | 7 - bison | [] [] | 13 - bluez-pin | | 7 - clisp | | 0 - clisp | | 5 - coreutils | [] [] [] [] [] | 14 - cpio | [] [] [] | 13 - darkstat | [] () () | 9 - diffutils | [] [] [] [] | 21 - e2fsprogs | [] | 3 - enscript | [] [] [] | 11 - error | [] [] [] | 14 - fetchmail | [] | 7 - fileutils | [] [] [] [] [] [] | 15 - findutils | [] [] [] [] [] [] | 27 - flex | [] [] [] | 10 - gas | [] | 3 - gawk | [] [] | 9 - gcal | [] [] | 4 - gcc | [] | 4 - gettext | [] [] [] [] [] [] | 15 - gettext-runtime | [] [] [] [] [] [] | 16 - gettext-tools | [] [] | 5 - gimp-print | [] [] | 10 - gliv | | 1 - glunarclock | [] [] [] | 11 - gnucash | [] [] | 4 - gnucash-glossary | [] [] [] | 8 - gnupg | [] [] [] [] | 16 - gpe-calendar | [] | 5 - gpe-conf | | 3 - gpe-contacts | [] | 4 - gpe-edit | [] | 5 - gpe-login | [] | 5 - gpe-ownerinfo | [] | 7 - gpe-sketchbook | [] | 5 - gpe-timesheet | [] | 6 - gpe-today | [] | 6 - gpe-todo | [] | 6 - gphoto2 | [] [] | 9 - gprof | [] [] | 7 - gpsdrive | [] [] | 3 - grep | [] [] [] [] | 24 - gretl | | 2 - hello | [] [] [] [] [] | 33 - id-utils | [] [] [] | 11 - indent | [] [] [] [] | 19 - jpilot | [] [] [] [] [] | 10 - jwhois | () () [] [] | 10 - kbd | [] [] | 8 - ld | [] [] | 5 - libc | [] [] [] [] | 20 - libgpewidget | | 6 - libiconv | [] [] [] [] [] [] | 21 - lifelines | [] | 2 - lilypond | [] | 4 - lingoteach | | 2 - lingoteach_lessons | () | 0 - lynx | [] [] [] [] | 14 - m4 | [] [] [] | 15 - mailutils | | 2 - make | [] [] [] [] | 15 - man-db | [] | 6 - mysecretdiary | [] [] | 8 - nano | [] [] [] | 15 - nano_1_0 | [] [] [] | 15 - opcodes | [] [] | 9 - parted | [] [] | 13 - ptx | [] [] [] | 22 - python | | 0 - radius | | 0 - recode | [] [] [] [] | 19 - screem | [] | 1 - sed | [] [] [] [] [] | 20 - sh-utils | [] [] [] | 13 - sharutils | [] [] [] [] | 16 - sketch | [] | 5 - soundtracker | [] | 7 - sp | [] | 3 - tar | [] [] [] [] [] | 24 - texinfo | [] [] [] [] | 13 - textutils | [] [] [] [] [] | 15 - tin | | 1 - util-linux | [] [] | 14 - vorbis-tools | [] | 7 - wastesedge | | 0 - wdiff | [] [] [] [] | 17 - wget | [] [] [] [] [] [] [] | 25 - xchat | [] [] [] | 11 - xpad | | 1 - +-------------------------------------------+ - 50 teams ru sk sl sr sv ta tr uk vi wa zh_CN zh_TW - 97 domains 32 19 16 0 56 0 48 10 1 1 12 23 913 - - Some counters in the preceding matrix are higher than the number of -visible blocks let us expect. This is because a few extra PO files are -used for implementing regional variants of languages, or language -dialects. - - For a PO file in the matrix above to be effective, the package to -which it applies should also have been internationalized and -distributed as such by its maintainer. There might be an observable -lag between the mere existence a PO file and its wide availability in a -distribution. - - If May 2003 seems to be old, you may fetch a more recent copy of -this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date -matrix with full percentage details can be found at -`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. - -Using `gettext' in new packages -=============================== - - If you are writing a freely available program and want to -internationalize it you are welcome to use GNU `gettext' in your -package. Of course you have to respect the GNU Library General Public -License which covers the use of the GNU `gettext' library. This means -in particular that even non-free programs can use `libintl' as a shared -library, whereas only free software can use `libintl' as a static -library or use modified versions of `libintl'. - - Once the sources are changed appropriately and the setup can handle -the use of `gettext' the only thing missing are the translations. The -Free Translation Project is also available for packages which are not -developed inside the GNU project. Therefore the information given above -applies also for every other Free Software Project. Contact -`translation@iro.umontreal.ca' to make the `.pot' files available to -the translation teams. - diff --git a/AUTHORS b/AUTHORS deleted file mode 100644 index 29b776f0..00000000 --- a/AUTHORS +++ /dev/null @@ -1,2 +0,0 @@ -For Now: -Ulrich Drepper. diff --git a/Android.mk b/Android.mk deleted file mode 100755 index b283024e..00000000 --- a/Android.mk +++ /dev/null @@ -1,230 +0,0 @@ -LOCAL_PATH:= $(call my-dir) - -COMMON_SOURCES:=\ - lib/xmalloc.c \ - lib/xstrdup.c \ - lib/xstrndup.c - -# -# libelf -# - -include $(CLEAR_VARS) - -LOCAL_SRC_FILES:=$(COMMON_SOURCES) -LOCAL_SRC_FILES+=\ - libelf/elf32_checksum.c \ - libelf/elf32_fsize.c \ - libelf/elf32_getehdr.c \ - libelf/elf32_getphdr.c \ - libelf/elf32_getshdr.c \ - libelf/elf32_newehdr.c \ - libelf/elf32_newphdr.c \ - libelf/elf32_updatefile.c \ - libelf/elf32_updatenull.c \ - libelf/elf32_xlatetof.c \ - libelf/elf32_xlatetom.c \ - libelf/elf64_checksum.c \ - libelf/elf64_fsize.c \ - libelf/elf64_getehdr.c \ - libelf/elf64_getphdr.c \ - libelf/elf64_getshdr.c \ - libelf/elf64_newehdr.c \ - libelf/elf64_newphdr.c \ - libelf/elf64_updatefile.c \ - libelf/elf64_updatenull.c \ - libelf/elf64_xlatetof.c \ - libelf/elf64_xlatetom.c \ - libelf/elf_begin.c \ - libelf/elf_clone.c \ - libelf/elf_cntl.c \ - libelf/elf_end.c \ - libelf/elf_error.c \ - libelf/elf_fill.c \ - libelf/elf_flagdata.c \ - libelf/elf_flagehdr.c \ - libelf/elf_flagelf.c \ - libelf/elf_flagphdr.c \ - libelf/elf_flagscn.c \ - libelf/elf_flagshdr.c \ - libelf/elf_getarhdr.c \ - libelf/elf_getarsym.c \ - libelf/elf_getbase.c \ - libelf/elf_getdata.c \ - libelf/elf_getident.c \ - libelf/elf_getscn.c \ - libelf/elf_getshnum.c \ - libelf/elf_getshstrndx.c \ - libelf/elf_hash.c \ - libelf/elf_kind.c \ - libelf/elf_memory.c \ - libelf/elf_ndxscn.c \ - libelf/elf_newdata.c \ - libelf/elf_newscn.c \ - libelf/elf_next.c \ - libelf/elf_nextscn.c \ - libelf/elf_rand.c \ - libelf/elf_rawdata.c \ - libelf/elf_rawfile.c \ - libelf/elf_readall.c \ - libelf/elf_strptr.c \ - libelf/elf_update.c \ - libelf/elf_version.c \ - libelf/gelf_checksum.c \ - libelf/gelf_freechunk.c \ - libelf/gelf_fsize.c \ - libelf/gelf_getclass.c \ - libelf/gelf_getdyn.c \ - libelf/gelf_getehdr.c \ - libelf/gelf_getlib.c \ - libelf/gelf_getmove.c \ - libelf/gelf_getphdr.c \ - libelf/gelf_getrel.c \ - libelf/gelf_getrela.c \ - libelf/gelf_getshdr.c \ - libelf/gelf_getsym.c \ - libelf/gelf_getsyminfo.c \ - libelf/gelf_getsymshndx.c \ - libelf/gelf_getverdaux.c \ - libelf/gelf_getverdef.c \ - libelf/gelf_getvernaux.c \ - libelf/gelf_getverneed.c \ - libelf/gelf_getversym.c \ - libelf/gelf_newehdr.c \ - libelf/gelf_newphdr.c \ - libelf/gelf_rawchunk.c \ - libelf/gelf_update_dyn.c \ - libelf/gelf_update_ehdr.c \ - libelf/gelf_update_lib.c \ - libelf/gelf_update_move.c \ - libelf/gelf_update_phdr.c \ - libelf/gelf_update_rel.c \ - libelf/gelf_update_rela.c \ - libelf/gelf_update_shdr.c \ - libelf/gelf_update_sym.c \ - libelf/gelf_update_syminfo.c \ - libelf/gelf_update_symshndx.c \ - libelf/gelf_update_verdaux.c \ - libelf/gelf_update_verdef.c \ - libelf/gelf_update_vernaux.c \ - libelf/gelf_update_verneed.c \ - libelf/gelf_update_versym.c \ - libelf/gelf_xlate.c \ - libelf/gelf_xlatetof.c \ - libelf/gelf_xlatetom.c \ - libelf/libelf_crc32.c \ - libelf/libelf_next_prime.c \ - libelf/nlist.c - -ifeq ($(HOST_OS),linux) -LOCAL_CFLAGS +=-include $(LOCAL_PATH)/config-compat-linux.h -endif -ifeq ($(HOST_OS),darwin) -LOCAL_CFLAGS +=-include $(LOCAL_PATH)/config-compat-darwin.h -endif -ifeq ($(HOST_OS),windows) -LOCAL_CFLAGS +=-include $(LOCAL_PATH)/config-compat-cygwin.h -endif - -LOCAL_MODULE:= libelf - -LOCAL_CFLAGS += -include $(LOCAL_PATH)/config.h -ifeq ($(HOST_OS),windows) -LOCAL_CFLAGS += -Doff64_t=_off64_t -else -LOCAL_CFLAGS += -Doff64_t=__off64_t -endif - -LOCAL_C_INCLUDES:=$(LOCAL_PATH)/lib/ $(LOCAL_PATH)/libelf/ - -include $(BUILD_HOST_STATIC_LIBRARY) - -# -# libebl -# - -include $(CLEAR_VARS) - -LOCAL_SRC_FILES:=$(COMMON_SOURCES) -LOCAL_SRC_FILES+=\ - libebl/eblbackendname.c \ - libebl/eblclosebackend.c \ - libebl/eblcorenote.c \ - libebl/eblcorenotetypename.c \ - libebl/ebldebugscnp.c \ - libebl/ebldynamictagcheck.c \ - libebl/ebldynamictagname.c \ - libebl/eblgotpcreloccheck.c \ - libebl/eblgstrtab.c \ - libebl/eblmachineflagcheck.c \ - libebl/eblmachineflagname.c \ - libebl/eblobjecttypename.c \ - libebl/eblobjnote.c \ - libebl/eblobjnotetypename.c \ - libebl/eblopenbackend.c \ - libebl/eblosabiname.c \ - libebl/eblreloctypecheck.c \ - libebl/eblreloctypename.c \ - libebl/eblrelocvaliduse.c \ - libebl/eblsectionname.c \ - libebl/eblsectiontypename.c \ - libebl/eblsegmenttypename.c \ - libebl/eblshflagscombine.c \ - libebl/eblstrtab.c \ - libebl/eblsymbolbindingname.c \ - libebl/eblsymboltypename.c \ - libebl/eblwstrtab.c - -ifeq ($(HOST_OS),linux) -LOCAL_CFLAGS +=-include $(LOCAL_PATH)/config-compat-linux.h -endif -ifeq ($(HOST_OS),darwin) -LOCAL_CFLAGS +=-include $(LOCAL_PATH)/config-compat-darwin.h -endif -ifeq ($(HOST_OS),windows) -LOCAL_CFLAGS +=-include $(LOCAL_PATH)/config-compat-cygwin.h -endif - -LOCAL_MODULE:=libebl - -LOCAL_CFLAGS += -include $(LOCAL_PATH)/config.h -DLIBSTR=\"$(LOCAL_MODULE)\" -Dstpcpy=strcpy -ifeq ($(HOST_OS),windows) -LOCAL_CFLAGS += -Doff64_t=_off64_t -else -LOCAL_CFLAGS += -Doff64_t=__off64_t -endif - -LOCAL_C_INCLUDES:=$(LOCAL_PATH)/lib/ $(LOCAL_PATH)/libelf/ $(LOCAL_PATH)/libebl/ - -include $(BUILD_HOST_STATIC_LIBRARY) - -# -# libebl_arm -# - -include $(CLEAR_VARS) - -#LOCAL_SRC_FILES:=$(COMMON_SOURCES) -LOCAL_SRC_FILES+=\ - libebl/arm_destr.c \ - libebl/arm_init.c \ - libebl/arm_symbol.c - -ifeq ($(HOST_OS),linux) -endif -ifeq ($(HOST_OS),darwin) -endif - -LOCAL_MODULE:=libebl_arm - -LOCAL_CFLAGS += -include $(LOCAL_PATH)/config.h -ifeq ($(HOST_OS),windows) -LOCAL_CFLAGS += -Doff64_t=_off64_t -else -LOCAL_CFLAGS += -Doff64_t=__off64_t -endif - -LOCAL_C_INCLUDES:=$(LOCAL_PATH)/lib/ $(LOCAL_PATH)/libelf/ $(LOCAL_PATH)/libebl/ - -include $(BUILD_HOST_STATIC_LIBRARY) - diff --git a/COPYING b/COPYING deleted file mode 100644 index ed8461a8..00000000 --- a/COPYING +++ /dev/null @@ -1,162 +0,0 @@ - The Open Software License - v. 1.0 - -This Open Software License (the "License") applies to any original -work of authorship (the "Original Work") whose owner (the "Licensor") -has placed the following notice immediately following the copyright -notice for the Original Work: "Licensed under the Open Software -License version 1.0" - -License Terms - -1) Grant of Copyright License. Licensor hereby grants You a -world-wide, royalty-free, non-exclusive, perpetual, non-sublicenseable -license to do the following: - - a) to reproduce the Original Work in copies; - - b) to prepare derivative works ("Derivative Works") based upon the - Original Work; - - c) to distribute copies of the Original Work and Derivative Works - to the public, with the proviso that copies of Original Work or - Derivative Works that You distribute shall be licensed under the - Open Software License; - - d) to perform the Original Work publicly; and - - e) to display the Original Work publicly. - -2) Grant of Patent License. Licensor hereby grants You a world-wide, -royalty-free, non-exclusive, perpetual, non-sublicenseable license, -under patent claims owned or controlled by the Licensor that are -embodied in the Original Work as furnished by the Licensor ("Licensed -Claims") to make, use, sell and offer for sale the Original Work. -Licensor hereby grants You a world-wide, royalty-free, non-exclusive, -perpetual, non-sublicenseable license under the Licensed Claims to -make, use, sell and offer for sale Derivative Works. - -3) Grant of Source Code License. The term "Source Code" means the -preferred form of the Original Work for making modifications to it and -all available documentation describing how to access and modify the -Original Work. Licensor hereby agrees to provide a machine-readable -copy of the Source Code of the Original Work along with each copy of -the Original Work that Licensor distributes. Licensor reserves the -right to satisfy this obligation by placing a machine-readable copy of -the Source Code in an information repository reasonably calculated to -permit inexpensive and convenient access by You for as long as -Licensor continues to distribute the Original Work, and by publishing -the address of that information repository in a notice immediately -following the copyright notice that applies to the Original Work. - -4) Exclusions From License Grant. Nothing in this License shall be -deemed to grant any rights to trademarks, copyrights, patents, trade -secrets or any other intellectual property of Licensor except as -expressly stated herein. No patent license is granted to make, use, -sell or offer to sell embodiments of any patent claims other than the -Licensed Claims defined in Section 2. No right is granted to the -trademarks of Licensor even if such marks are included in the Original -Work. Nothing in this License shall be interpreted to prohibit -Licensor from licensing under different terms from this License any -Original Work that Licensor otherwise would have a right to license. - -5) External Deployment. The term "External Deployment" means the use -or distribution of the Original Work or Derivative Works in any way -such that the Original Work or Derivative Works may be accessed or -used by anyone other than You, whether the Original Work or Derivative -Works are distributed to those persons, made available as an -application intended for use over a computer network, or used to -provide services or otherwise deliver content to anyone other than -You. As an express condition for the grants of license hereunder, You -agree that any External Deployment by You shall be deemed a -distribution and shall be licensed to all under the terms of this -License, as prescribed in section 1(c) herein. - -6) Warranty and Disclaimer of Warranty. LICENSOR WARRANTS THAT THE -COPYRIGHT IN AND TO THE ORIGINAL WORK IS OWNED BY THE LICENSOR OR THAT -THE ORIGINAL WORK IS DISTRIBUTED BY LICENSOR UNDER A VALID CURRENT -LICENSE FROM THE COPYRIGHT OWNER. EXCEPT AS EXPRESSLY STATED IN THE -IMMEDIATELY PRECEEDING SENTENCE, THE ORIGINAL WORK IS PROVIDED UNDER -THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY, EITHER EXPRESS OR -IMPLIED, INCLUDING, WITHOUT LIMITATION, THE WARRANTY OF -NON-INFRINGEMENT AND WARRANTIES THAT THE ORIGINAL WORK IS MERCHANTABLE -OR FIT FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF -THE ORIGINAL WORK IS WITH YOU. THIS DISCLAIMER OF WARRANTY CONSTITUTES -AN ESSENTIAL PART OF THIS LICENSE. NO LICENSE TO ORIGINAL WORK IS -GRANTED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -7) Limitation of Liability. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL -THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, -SHALL THE LICENSOR BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, -SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING -AS A RESULT OF THIS LICENSE OR THE USE OF THE ORIGINAL WORK INCLUDING, -WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, -COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL -DAMAGES OR LOSSES, EVEN IF SUCH PERSON SHALL HAVE BEEN INFORMED OF THE -POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT -APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH -PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH -LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR -LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION -AND LIMITATION MAY NOT APPLY TO YOU. - -8) Acceptance and Termination. Nothing else but this License (or -another written agreement between Licensor and You) grants You -permission to create Derivative Works based upon the Original Work, -and any attempt to do so except under the terms of this License (or -another written agreement between Licensor and You) is expressly -prohibited by U.S. copyright law, the equivalent laws of other -countries, and by international treaty. Therefore, by exercising any -of the rights granted to You in Sections 1 and 2 herein, You indicate -Your acceptance of this License and all of its terms and conditions. -This license shall terminate immediately and you may no longer -exercise any of the rights granted to You by this License upon Your -failure to honor the proviso in Section 1(c) herein. - -9) Mutual Termination for Patent Action. This License shall terminate -automatically and You may no longer exercise any of the rights granted -to You by this License if You file a lawsuit in any court alleging -that any OSI Certified open source software that is licensed under any -license containing this "Mutual Termination for Patent Action" clause -infringes any patent claims that are essential to use that software. - -10) Jurisdiction, Venue and Governing Law. You agree that any lawsuit -arising under or relating to this License shall be maintained in the -courts of the jurisdiction wherein the Licensor resides or in which -Licensor conducts its primary business, and under the laws of that -jurisdiction excluding its conflict-of-law provisions. The application -of the United Nations Convention on Contracts for the International -Sale of Goods is expressly excluded. Any use of the Original Work -outside the scope of this License or after its termination shall be -subject to the requirements and penalties of the U.S. Copyright Act, -17 U.S.C. § 101 et seq., the equivalent laws of other countries, and -international treaty. This section shall survive the termination of -this License. - -11) Attorneys Fees. In any action to enforce the terms of this License -or seeking damages relating thereto, the prevailing party shall be -entitled to recover its costs and expenses, including, without -limitation, reasonable attorneys' fees and costs incurred in -connection with such action, including any appeal of such action. This -section shall survive the termination of this License. - -12) Miscellaneous. This License represents the complete agreement -concerning the subject matter hereof. If any provision of this License -is held to be unenforceable, such provision shall be reformed only to -the extent necessary to make it enforceable. - -13) Definition of "You" in This License. "You" throughout this -License, whether in upper or lower case, means an individual or a -legal entity exercising rights under, and complying with all of the -terms of, this License. For legal entities, "You" includes any entity -that controls, is controlled by, or is under common control with you. -For purposes of this definition, "control" means (i) the power, direct -or indirect, to cause the direction or management of such entity, -whether by contract or otherwise, or (ii) ownership of fifty percent -(50%) or more of the outstanding shares, or (iii) beneficial ownership -of such entity. - -This license is Copyright (C) 2002 Lawrence E. Rosen. All rights -reserved. Permission is hereby granted to copy and distribute this -license without modification. This license may not be modified without -the express written permission of its copyright owner. diff --git a/COPYING.GPL b/COPYING.GPL deleted file mode 100644 index 60549be5..00000000 --- a/COPYING.GPL +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) 19yy <name of author> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/ChangeLog b/ChangeLog deleted file mode 100644 index c29d18ad..00000000 --- a/ChangeLog +++ /dev/null @@ -1,79 +0,0 @@ -2004-09-25 Ulrich Drepper <drepper@redhat.com> - - * configure.ac: Make compile with gcc 4.0. - -2004-03-06 Ulrich Drepper <drepper@redhat.com> - - * configure.ac: Use AS_HELP_STRING where applicable. - -2004-01-23 Ulrich Drepper <drepper@redhat.com> - - * configure.ac: Check for C99 compiler. - - * configure.ac: Change locking macros in config.h to at least - evaluate the parameter. Define base_cpu to none for generic linker. - -2004-01-21 Ulrich Drepper <drepper@redhat.com> - - * configure.ac: Print error message in case --disable-generic is - used if no linker support for the architecture is available. - -2004-01-18 Ulrich Drepper <drepper@redhat.com> - - * configure.ac: Dont generate libebl-po/Makefile.in, - libdw-po/Makefile.in, libasm-po/Makefile.in. - - * Makefile.am (all_SUBDIRS): Remove libebl-po, libdw-po, libasm-po. - -2004-01-17 Ulrich Drepper <drepper@redhat.com> - - * configure.ac: Pretty printing of help message. - - * configure.ac: Move AC_SYS_LARGEFILE test to the front. - - * configure.ac: Add --enable-mudflap option. - -2004-01-17 Ulrich Drepper <drepper@redhat.com> - - * configure.ac: Major cleanups. Use aux dir. - * config.guess: Moved to new config subdir. - * config.rpath: Likewise. - * config.sub: Likewise. - * depcomp: Likewise. - * install-sh: Likewise. - * missing: Likewise. - * mkinstalldirs: Likewise. - * Makefile.am (mini_SUBDIRS): Add config. - (EXTRA_DIST): Remove config.rpath. - - * configure.ac: Add AC_REVISION. - - * configure.ac: Add --enable-mudflap option. - -2004-01-11 Ulrich Drepper <drepper@redhat.com> - - * configure.ac: Drop libdwarf directory. Add libdw-po. - * Makefile.am (all_SUBDIRS): Likewise. - * elfutils.spec: Don't distribute anything from libdwarf. - -2004-01-05 Ulrich Drepper <drepper@redhat.com> - - * Makefile.am: Support separate libelf built. - - * elfutils.spec.in: Create separata elfutils-libelf-devel package. - Install libdw DSOs. - - * configure.ac (AC_CONFIG_SRCDIR): Use libelf/libelf.h as the file - name. - -2003-08-13 Ulrich Drepper <drepper@redhat.com> - - * elfutils.spec.in: Remove references to libebl.so. - -2003-08-11 Ulrich Drepper <drepper@redhat.com> - - * Moved to CVS archive. - -2000-08-25 Ulrich Drepper <drepper@redhat.com> - - * The beginning. See the NEWS file for the time being. diff --git a/GPG-KEY b/GPG-KEY deleted file mode 100644 index cd60f822..00000000 --- a/GPG-KEY +++ /dev/null @@ -1,33 +0,0 @@ -Public key for drepper@redhat.com ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1.2.1 (GNU/Linux) - -mQGiBDuFth0RBACPcHEkyqJE26wTXuuuCxpqJjxlBnNFkJGkWUoeu89QjzWgzXy/ -EA8+ptNBgCTPKnLEqhkRUyxAT/Uz+t+xbKqUtL54IzYfxO4NQsN/VVM0uppNfIJb -MWvAjvpp2HCkd/32i693rlH+G9dvG8K57by3PBRHBgH2L8Q7t/QvA2AWpwCgzokX -DDUiitysGn4rWO0rBBoR6OED/3ehpcHtbGixNoubRZAxpw99VTKs/I76OkrQzqcm -+w+zwZeihJXC88yAHA77/LBB3YKaX3G4CmDQUbeRJ9zPlETTLmRMcF61dQdq/3qV -Biq1sm6ctZ4uEpm8HnysKMT+VY4Xmj9LLzF2BdING9frcX9rk8Vk25iCLBronS0M -IU3WA/sEvlUFlfbyCBRBoq+Rlr9u05fnHc7CLMKI7EIS1T1dLPxH1ivuUhyYNGAM -RhCivBbT2Z0t/R4ksu3VdnPGkCyAAdWNSafSGqCYUzQH0u5Z8HK6c2iXrIX3Ipk5 -DhQOQ6k1tyYzuQw3cCf7RYRJ9/iup8RlscVt2kmGnSucqpxJCbQjVWxyaWNoIERy -ZXBwZXIgPGRyZXBwZXJAcmVkaGF0LmNvbT6IVwQTEQIAFwUCO4W2HQULBwoDBAMV -AwIDFgIBAheAAAoJENoowjp5/0R0SqUAoL5HBbaRWR19vjldUeJvYCG2AR94AKDL -nmVEaykaZWyyNg0OTuxLe1boa4hGBBARAgAGBQI8iQDvAAoJEFWW3Qzpv2U97wgA -n1RVl6FbIHVVmT224nOp5b98OZVnAJ9ehXzM60RbmGi3kJNS30II+SGft4hGBBMR -AgAGBQI9Tvt0AAoJEP3S3qzTM8uhUy0AoNqATBj2usEtJduGHukKZ9mQaycFAJ9y -lq0MmZJwMZ3699e6rgMiHAMAVbkCDQQ7hbZPEAgAzuFAPq1sYUtpJClwX7+pdz1K -dIgbxDKoSHh2rSRx24HLYY/xg9ps6fZF21/SBialKaB8BFnIeh8S9LXUtWt9aUeC -klnnQwPbR0BGRcZAS7+nHZ9agiMd4CRe4RWFmS6KhIeUsDa70+8XhIm/C+Ogd7ag -kBw7ykTb/jWHMyvcP9iY0QtmIatfVTDJUm7Rm5TtM1mDCml/gWIQJ5ezr9gv2NUG -3kpNYwP+G9o4BLyTOHamix/0YHI/HiZSYiwq40ao0zROd/yXY6/a3mitN96AidJL -5I5tbqnrFy6LmRvWmyOxWkJD/bF31rrO5PfVUgcVpUxbtW44PtVilhLuh+qjTwAD -BQf+NTHwjUw1j+PZs/y5XnPw0x0ZdYGEl0I7NqtMgCxI4ZHT9jaLcLXARb3UVEuc -1LuJ1tAA1ss1c1NLK3Lg+uZzeKMRffRYEUg0Emer8QGWr1uSOxDHcAzuRZX3PYNX -cEGEyEm443DDnXr/4b8zYK6O+sy1Ld+SVxxp6jwtk0LyT7okgD0E1dDUzX+qxpsV -ujbzdH4bdqocKouMNMT+BHeobNZpR4Tyz5+pwW+rw1+XZebyBUkIPXOoWPZpUTDG -fZ+om9xfg0JOcKZIZ0X91dLQp5x99aCmzwWeWy9LFPTAf9pYky8wXzteEotE/Tkm -DeA1caPC9IEK9BBrrS9TeubrEIhGBBgRAgAGBQI7hbZPAAoJENoowjp5/0R0Z38A -mgM4FAquwltH0ooTdAmBMoCfKb4/AJ9ufAh4Rl9sFaCie/j8jdo02bcV1A== -=Yeua ------END PGP PUBLIC KEY BLOCK----- diff --git a/INSTALL b/INSTALL deleted file mode 100644 index b42a17ac..00000000 --- a/INSTALL +++ /dev/null @@ -1,182 +0,0 @@ -Basic Installation -================== - - These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, a file -`config.cache' that saves the results of its tests to speed up -reconfiguring, and a file `config.log' containing compiler output -(useful mainly for debugging `configure'). - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If at some point `config.cache' -contains results you don't want to keep, you may remove or edit it. - - The file `configure.in' is used to create `configure' by a program -called `autoconf'. You only need `configure.in' if you want to change -it or regenerate `configure' using a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. You can give `configure' -initial values for variables by setting them in the environment. Using -a Bourne-compatible shell, you can do that on the command line like -this: - CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure - -Or on systems that have the `env' program, you can do it like this: - env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not supports the `VPATH' -variable, you have to compile the package for one architecture at a time -in the source code directory. After you have installed the package for -one architecture, use `make distclean' before reconfiguring for another -architecture. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=PATH' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - - There may be some features `configure' can not figure out -automatically, but needs to determine by the type of host the package -will run on. Usually `configure' can figure that out, but if it prints -a message saying it can not guess the host type, give it the -`--host=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name with three fields: - CPU-COMPANY-SYSTEM - -See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the host type. - - If you are building compiler tools for cross-compiling, you can also -use the `--target=TYPE' option to select the type of system they will -produce code for and the `--build=TYPE' option to select the type of -system on which you are compiling the package. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Operation Controls -================== - - `configure' recognizes the following options to control how it -operates. - -`--cache-file=FILE' - Use and save the results of the tests in FILE instead of - `./config.cache'. Set FILE to `/dev/null' to disable caching, for - debugging `configure'. - -`--help' - Print a summary of the options to `configure', and exit. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`--version' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`configure' also accepts some other, not widely useful, options. diff --git a/MODULE_LICENSE_OSL1 b/MODULE_LICENSE_OSL1 deleted file mode 100644 index e69de29b..00000000 --- a/MODULE_LICENSE_OSL1 +++ /dev/null diff --git a/Makefile.am b/Makefile.am deleted file mode 100644 index 069b07f3..00000000 --- a/Makefile.am +++ /dev/null @@ -1,35 +0,0 @@ -## Process this file with automake to create Makefile.in -## Configure input file for elfutils. -## -## Copyright (C) 1996-2002, 2003, 2004 Red Hat, Inc. -## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation, version 2. -## -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software Foundation, -## Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -## -ACLOCAL_AMFLAGS = -I m4 - -mini_SUBDIRS = config m4 lib libelf libelf-po -all_SUBDIRS = doc libebl libdw libcpu libasm src po tests -SUBDIRS = $(mini_SUBDIRS) $(all_SUBDIRS) - -EXTRA_DIST = splint.rc elfutils.spec GPG-KEY NOTES COPYING.GPL - -distcheck-hook: - chmod -R u+w $(distdir) - -rpm: dist - rpmbuild -ts --sign elfutils-@PACKAGE_VERSION@.tar.gz - -# Tell version 3.79 and up of GNU make to not build goals in this -# directory in parallel. -.NOTPARALLEL: diff --git a/Makefile.in b/Makefile.in deleted file mode 100644 index c00bd846..00000000 --- a/Makefile.in +++ /dev/null @@ -1,620 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = . -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = . -DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in $(srcdir)/config.h.in \ - $(top_srcdir)/config/elfutils.spec.in $(top_srcdir)/configure \ - ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL NEWS THANKS TODO -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno configure.status.lineno -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = elfutils.spec -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - { test ! -d $(distdir) \ - || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr $(distdir); }; } -DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 -GZIP_ENV = --best -distuninstallcheck_listfiles = find . -type f -print -distcleancheck_listfiles = find . -type f -print -ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DATADIRNAME = @DATADIRNAME@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -GMSGFMT = @GMSGFMT@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTLLIBS = @INTLLIBS@ -LDFLAGS = @LDFLAGS@ -LEX = @LEX@ -LEXLIB = @LEXLIB@ -LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LOCALEDIR = @LOCALEDIR@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -MSGMERGE = @MSGMERGE@ -MUDFLAP_FALSE = @MUDFLAP_FALSE@ -MUDFLAP_TRUE = @MUDFLAP_TRUE@ -NATIVE_LD_FALSE = @NATIVE_LD_FALSE@ -NATIVE_LD_TRUE = @NATIVE_LD_TRUE@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -XGETTEXT = @XGETTEXT@ -YACC = @YACC@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -base_cpu = @base_cpu@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -datadir = @datadir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -ACLOCAL_AMFLAGS = -I m4 -mini_SUBDIRS = config m4 lib libelf libelf-po -all_SUBDIRS = doc libebl libdw libcpu libasm src po tests -SUBDIRS = $(mini_SUBDIRS) $(all_SUBDIRS) -EXTRA_DIST = splint.rc elfutils.spec GPG-KEY NOTES COPYING.GPL -all: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -am--refresh: - @: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --gnits '; \ - cd $(srcdir) && $(AUTOMAKE) --gnits \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) - -config.h: stamp-h1 - @if test ! -f $@; then \ - rm -f stamp-h1; \ - $(MAKE) stamp-h1; \ - else :; fi - -stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config.h -$(srcdir)/config.h.in: $(am__configure_deps) - cd $(top_srcdir) && $(AUTOHEADER) - rm -f stamp-h1 - touch $@ - -distclean-hdr: - -rm -f config.h stamp-h1 -elfutils.spec: $(top_builddir)/config.status $(top_srcdir)/config/elfutils.spec.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -uninstall-info-am: - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @set fnord $$MAKEFLAGS; amf=$$2; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: - @set fnord $$MAKEFLAGS; amf=$$2; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @case `sed 15q $(srcdir)/NEWS` in \ - *"$(VERSION)"*) : ;; \ - *) \ - echo "NEWS not updated; not releasing" 1>&2; \ - exit 1;; \ - esac - $(am__remove_distdir) - mkdir $(distdir) - $(mkdir_p) $(distdir)/config $(distdir)/libelf-po $(distdir)/m4 $(distdir)/po - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ - || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ - distdir) \ - || exit 1; \ - fi; \ - done - -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r $(distdir) -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 - $(am__remove_distdir) - -dist-tarZ: distdir - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__remove_distdir) - -dist-shar: distdir - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__remove_distdir) - -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__remove_distdir) - -dist dist-all: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 - $(am__remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac - chmod -R a-w $(distdir); chmod a+w $(distdir) - mkdir $(distdir)/_build - mkdir $(distdir)/_inst - chmod a-w $(distdir) - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && $(MAKE) $(AM_MAKEFLAGS) distcheck-hook \ - && cd $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck - $(am__remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' -distuninstallcheck: - @cd $(distuninstallcheck_dir) \ - && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am -check: check-recursive -all-am: Makefile config.h -installdirs: installdirs-recursive -installdirs-am: -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-hdr distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -info: info-recursive - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-recursive - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-info-am - -uninstall-info: uninstall-info-recursive - -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ - check-am clean clean-generic clean-recursive ctags \ - ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \ - dist-tarZ dist-zip distcheck distclean distclean-generic \ - distclean-hdr distclean-recursive distclean-tags \ - distcleancheck distdir distuninstallcheck dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-exec install-exec-am install-info \ - install-info-am install-man install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ - mostlyclean mostlyclean-generic mostlyclean-recursive pdf \ - pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ - uninstall-info-am - - -distcheck-hook: - chmod -R u+w $(distdir) - -rpm: dist - rpmbuild -ts --sign elfutils-@PACKAGE_VERSION@.tar.gz - -# Tell version 3.79 and up of GNU make to not build goals in this -# directory in parallel. -.NOTPARALLEL: -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: @@ -1,691 +0,0 @@ -Version 0.97: - -Fix compiling with gcc 4.0. -Some tests called elflint without appropriate LD_LIBRARY_PATH. - -Version 0.96: - -Fix support for platforms with lib64. - -Version 0.95: - -libebl: add ppc and ppc64 support - -readelf: fix minimal memory leak. - -Add support to compile with mudflap. - -Modernize configure.ac. Move scripts in config subdir. - -Modernize *-po directory infrastructure. - -libelf: Add gelf_getlib and gelf_update_lib - -readelf: print liblist sections - -Version 0.94: - -Fix some minimal build problems. - -Version 0.93: - -ibdw: tons of new functionality and bug fixes. Several interface changes. - -readelf: use libdw now. - -libdwarf: removed completely. - -Version 0.92: - -configuration changes. - -Version 0.91: - -libdw: fix memory handling. Implement source line handling. -nm: use libdw instead of libdwarf. -libelf: change to GPL from OSL1 for now. - -Version 0.90: - -libebl: Recognize a few more section types and dynamic tags and return -approriate strings. - -Version 0.89: - -strip: fix overwriting of symbol table in input file. - -Version 0.88: - -libebl: Add some ia64 bits. - -Version 0.87: - -Bug fixes for big endian and some 64-bit machines. - -Version 0.86: - -strip: fix handling of Alpha and s390x which use incorrect hash bucket sizes. - -ld: tons of changes, moving towards usability. - -Version 0.85: - -strip: update section group symbol index if the associated symbol table changed - -libelf: fix two problems with generating output not via mmap - -elflint: add probably 10-15 more tests -libebl: add support for some of the new tests - -ld: gazillion changes - -Version 0.84: - -elflint: deal with .rel.dyn section. Fix a problem with rela platforms. -Handle PT_GNU_STACK. Change to write messages to stdout. - -readelf: fix a problem with version information in the symbol table output. - -strip: update all version symbol table entries - -Version 0.83: - -size: fix a warning - -strip: last changed caused problems when the symbol table is before the -relocation section. Fixed. This fix also improved the asymptotic -behavior if many symbol table sections are present. - -Version 0.82: - -Run strip tests with the correct libelf and libebl. - -libelf: fix bug in verneed byte order changing code. - -Version 0.81: - -strip: Remove unused symbol table entries. This might require updating -various other sections. - -Version 0.80: - -Fix some libelf problems with ET_REL files. - -Version 0.79: - -More warning changes, mainly by jbj. - -libdw: yet more new code. dwarf_child and dwarf_sibling should now actually -work. - -Version 0.78: - -libdw: 10+ new functions. get-pubnames2 works now fully. Almost all the -code needed for nm is in place. - -Version 0.77: - -cleanups to compile cleanly with gcc 3.3 and -Werror. - -libdw: some new code. - -Version 0.76: - -libebl: Fix last patch to recognize relocation sections. We must not -use the name. - -Version 0.75: - -libebl: .debug_ranges is a DWARF 3 debug section -libebl: recognize relocation sections for debug section -Patches by Jakub Jelinek. - -Version 0.74: - -Cleanups and more SPARC support by Tom Callaway <tcallaway@redhat.com>. - -Version 0.73: - -64-bit cleanups for the programs. - -Version 0.72: - -libelf: and yet more fun with endian tranformation at output time. - -Version 0.71: - -libelf: more fun with endian tranformation at output time. Add test for it. - -Version 0.70: - -libelf: Two little bugs left from previous patch to handle section output -order. - -libelf: add unlikely in some more places. - -Version 0.69: - -libelf: fix output routines to handle case where section indeces and -ordre in the output file don't match correctly. Patch by Jakub. - -elflint: fix test of note section content for 64-bit platforms and files -with different byte order. - -Version 0.68: - -libebl: Fix SH_ENTSIZE_HASH definition (patch by Jakub) - -Version 0.67: - -libelf: correct mistake in error string handling. - -libelf: Implement ELF_F_PERMISSIVE. -strip: Implement --permissive option. - -Version 0.66: - -strip: Implement -g option. - -libelf: Handle broken hash table entry sizes. - -libebl: New function ebl_debugscn_p. Use it where appropriate. - -Version 0.65: - -libelf: Use correct file size for NOBITS section with ELF_F_LAYOUT set - -Version 0.64: - -libelf: Make error handling more robust. -libelf: Use TLS in error handler if configured with --enable-tls - -tests: input files are now distributed, not uuencoded in the shell scripts - -libdw: implement error handling, dwarf_get_pubnames - -Version 0.63: - -Build (incomplete) libdw. - -Version 0.62: - -Get rid of libtool. - -Version 0.61: - -Fix URL of OSL. - -Version 0.60: - -libebl: Handle .gnu.warning.* sections correctly. - -size: Implement -t option. - -libebl: Add IA-64 support. -libebl: Update SH relocations. -libebl: Add Alpha support. -libebl: Add Arm support. -libebl: Add support for all currently known architecture to the loader. - -Version 0.59: - -nm: Implement -S option. Correct portable output format. Implement -s option. - -libelf: Take offset of archive into account in elf_rand. - -Version 0.58: - -strip: fix handling of ET_REL files. -Add tests for strip. - -Version 0.57: - -strip: respect layout of input file - -Version 0.56: - -strip: handle files with large number of sections. - -Version 0.55: - -libelf: quite a few bug fixes by Alex Larsson. - -strip: implement -f option to place stripped sections into a separate -file. By Alex Larsson. - -Version 0.54: - -strip: don't let STT_SECTION symbols keeps sections from being removed - -elflint: local symbols are allowed in .dynsym -elflint: special case .rel.dyn a bit - -Version 0.53: - -elflint: check types and flags of special sections defined in gABI - -libebl: add x86-64 support - -Version 0.52: - -Start improvement of debug info handling in nm. - -libasm: implement asm_adduleb128 and asm_addsleb128 and a test for them - -Version 0.51: - -Fix build on 64-bit platforms. - -Version 0.50: - -nm: print file/line number also for local symbols - -use versions scripts not libtool's useless -export-symbols option - -Version 0.49: - -Update to autoconf 2.54 and automake 1.7. - -elflint: check note sections - -libdwarf: a number of bug fixes - -readelf: print .debug_info section content - -dwarf.h: Update from draft 7 - -Version 0.48: - -libcpu: beginning - -libelf: new function to read parts of the ELF file - -libebl: support for note section handling - -readelf: dump note sections - -Version 0.47: - -libelf: fix little new section-handling related bugs in elf_getshstrndx -and elf_nextscn - -elflint: tests for mandatory content of dynamic section - -libasm: better handling of absolute symbols - -Version 0.46: - -libasm: rewrite to store Elf_Scn* instead of indices - -nm: finish many-section support - -nm: use debug in to print file/line info in sysv format - -libdwarf: fix a few bugs in DIE handling - -Version 0.45: - -libelf: major rewrite to keep Elf_Scn references valid until elf_end - -Version 0.44: - -libasm: Add support for bss, ABS, and COM sections. - -libebl: ebl_section_name takes now two index arguments to distinguish -between special sections and extended sections - -Version 0.43: - -General: fix a few problem gcc 3.1 had with the code. - -libelf: implement {gelf,elf32,elf64}_checksum - -libelf: optimze DSO: fewer relocations, fewer PLTs - -add msg_tst test - -ld: use correct section header string table index; write correct index - -add dependencies for *.sym files - -Version 0.42: - -libelf: add elf_getshnum and elf_getshstrndx - -libebl: update section type name function - -elflint: tons of fixes wrt large number of sections. New tests in this area. -Same amount of other bug fixes. - -size, strip, nm: better support for large number of sections. Including -using correct section header string table - -libasm: correctly create data structures for large number of sections - -new tests asm-tst4 and asm-tst5 to check large number of sections - -libasm: implement section group generation - -elflint: more tests on section groups. Improve performance on existing -section group tests - -Version 0.41: - -ld: add undefined symbols to dynamic symbol table if --export-dynamic is -not given - -ld: fix value of e_entry - -Version 0.40: - -elflint: print section names in error messages - -elflint: mustn't warn about multiple DT_NULL - -ld: don't emit all symbols if --export-dynamic is not given - -ld: correct compute symbol address in output file (section index was off by 1) - -ld: generate correct version info in dynsym without --export-dynamic and -in symtab - -Version 0.39: - -Fix check of various e_*size entries in elflint. - -Handle text output in asm_newsym. - -Finish checks in asm-tst3. - -Version 0.38: - -Update to autoconf 2.53, automake 1.6, gettext 0.11+. - -Introduce *.sym files to restrict export from DSOs. - -Use attribute_hidden and internal_function to optimize DSO code. - -Add TLS definitions in elf.h and handle them in readelf. - -Fix bug in verdef section generation in ld. - -Add initial libasm code. - -Version 0.37: - -Implement better hash size optimization heuristic in ld. It uses a formula -taking number of tests into account. - -Lots of small bug fixes. - -Improve readelf output format. Respect various sh_link/sh_info values. -Correctly print versioning information for symbol tables. - -Version 0.36: - -Implement preprocessing of linker script. Recognize -z combreloc. - -Version 0.35: - -Implement -z ignore|record for ld. - -Implement creating of .gnu.version_r and .gnu.version sections. The -.gnu.version does not yet contain correct info for defined and versioned -symbols (means .gnu.version_d is not yet implemented). - -Implement gelf_update_* functions to create versioning data. - -Version 0.34: - -Add DT_RUNPATH/DT_RPATH entries to dynamic section. Create .plt and -.rel.plt sections (completely). Add support for all four PLT related -dynamic section entries. Add callback function for PLT creation. - -More tests in elflint. Add support for very strict checking which for -now flags level 2 (deprecated features) usage. - -Version 0.33: - -Create dynamic symbol table, dynamic string table, and hash table to ld. - -Add hash table histogram support to readelf. - -Version 0.32: - -more work on elflint - -ld now creates the dynamic section and references it. Start adding entries -to dynamic section. - -Version 0.31: - -Start implementing elflint. - -Version 0.30: - -Fix handling of NOBITS sections in elf_getdata. - -Start implementing generation of executables and DSOs in ld. -Generation of program header mostly done. Address computation done. -Extension of linker script syntax. - -Various cleanups. - -Implement section group handling in readelf. - -Version 0.29: - -Implement section groups. This involved a lot of code moving. The -new code is entirely untested since gas/gcc are currently not able to -create section groups. ld works fine on files without section groups. - -Version 0.28: - -Fix problem with adding more section in elf_newscn. The section pointers -for the data buffers wasn't adjusted. - -Fix elf_getdata with nonzero second parameter. Correctly handle creation -of internal data buffer for machines without unaligned access. - -Version 0.27: - -Start adding support to selectively add sections. Includes support for -section groups. -Add --gc-sections/--no-gc-sections options. -Add general section merging support. - -Fix a bug in section group support in strip. - -Fix some potential problems with hash value in dynamic hash implementation. - -Version 0.26: - -section merging works in ld. - -Version 0.25: - -Actually create data structures from version map file and use it to hide -symbols in ld. - -Implement -s -s for ld. - -Version 0.24: - -Improve relocation table output in readelf. Avoid some crashes. -Finish many section handling in readelf. - -Finish: finish implementation of ld -r. At least some simple tests pass. - -Version 0.23: - -Fix a number of errors in ELF_C_WRITE handling. - -Almost finished implementation of ld -r. The data sections are all copied. -Handling of symbol tables is missing. - -Version 0.22: - -Handle DSO and archive input files correctly if -r option is given. - -Gracefully deal with no phdr in new file in libelf. -Fix various small error handling problems. -Don't mmap file for output unless the command says so. - -Add code to create ELF section header table to ld finalize routines. - -Version 0.21: - -Fix some problems with recursive handling of archives in libelf. - -Improve messages printed by nm. - -Add symbol binding name handling to libebl. Fix section name handling in -libebl. - -readelf and nm use more libebl functions. - -Handle XINDEX correctly in nm and string. - -Add first machine ld backend library (i386). -Use it. Recognize -r and --shared. Avoid using -lxxx parameters for -r. -Create ELF header in output file. Change mode of output file according to -output file type. Reorganize callback initialization in ld. - -Version 0.20: - -Fix some memory leaks in libelf. - -Version 0.19: - -Implement reading version script. Both inside linker scripts and via the ---version-script command line parameter. Uses the same code. -What remains to be done is to implement a data structure which allows -efficient matching against the version names to decide which pattern -matches. - -Beginning of output generation and output writing functions. - -Version 0.18: - -Finish implementation for DSO input file handling. Implement rpath, runpath, -and LD_LIBRARY_PATH handling. - -Version 0.17: - -make handling of e_shnum overflow in libelf standard conforming - -ld now actually can handle DSOs in linker scripts. Handling of DT_RUNPATH, -DT_RPATH, -rpath, -rpath-link still remains to be implemented. - -fix handling of -L parameters. Make actual use of the default_paths element. - -make re-definition of symbols in and from DSO compatible with existing linker - -Version 0.16: - -more work on assigning input sections to output sections. - -Add gelf_xlatetof and gelf_xlatetom which were accidently left out. - -Fix memory handling of section headers. - -Version 0.15: - -Add many-section support to ld. Add various new command line parameters. -Allow pagesize to be specified in linker script or on the command line. -Collect input sections in list for the output section according to the rules -specified in the linker script. - -Version 0.14: - -Fix some problems in the internal list handling which had the result -that we didn't look for some of the unresolved symbols. - -Free some memory if we know we don't need it anymore. - -Optimize the list of unresolved symbols. Throw out symbols which are -meanwhile resolved. - -Version 0.13: - -Got file reading correct now. The files are all read while parsing -the parameters. No creating of data structures to describe the linker -command line. The symbol table is built up while reading the files. -DSOs are handled now. -( -) handling is optimized. - -Version 0.12: - -Linker read linker scripts everywhere. Handles --whole-archive. Recognizes ---dynamic and --static. Collects defined and undefined symbols. Recognizes -conflicts. - -libebl now defines functions to call the callbacks. Add generic name handling -in these new functions. Remove the code from readelf and call the new -functions. - -Version 0.11: - -Start of linker. Basic argument parsing, finding of input files, -linker script reading. - -Version 0.10: - -Implement dwarf_get_fde_n(), dwarf_get_abbrev(), dwarf_get_abbrev_tag(), -dwarf_get_abbrev_code(), dwarf_get_abbrev_children_flag(), -dwarf_get_abbrev_entry(), dwarf_get_fde_at_pc(), and tests for it. - -Version 0.9: - -Implement dwarf_get_fde_list_eh(), dwarf_get_cie_of_fde(), -dwarf_get_fde_range(), dwarf_get_cie_info(), dwarf_get_fde_instr_bytes(), -and tests for them. - -Version 0.8: - -Make handling of binaries in other byte order work and add tests for it. - -Version 0.7: - -Implement dwarf_get_aranges(), dwarf_get_arange(), dwarf_get_cu_die_offset(), -dwarf_get_arange_info(), and tests for them. - -Version 0.6: - -Implement dwarf_get_global(), dwarf_globname(), dwarf_global_die_offset(), -dwarf_global_cu_offset(), dwarf_global_name_offsets(), and tests for them - -Version 0.5: - -Implemented dwarf_srclines(), dwarf_srcfiles(), dwarf_linebeginstatement(), -dwarf_lineendsequence(), dwarf_lineno(), dwarf_lineaddr(), dwarf_lineoff(), -dwarf_linesrc(), dwarf_lineblock(), dwarf_lineprologueend(), -dwarf_lineepiloguebegin(), and tests for them. - -Version 0.4: - -Implemented dwarf_loclist(). - -Version 0.3: - -Implemented dwarf_dieoffset(), dwarf_die_CU_offset(), dwarf_diename() and -tests. - -Implemented dwarf_attrlist(), dwarf_hasattr(), dwarf_attr(), dwarf_lowpc(), -dwarf_highpc(), dwarf_bytesize(), dwarf_bitsize(), dwarf_bitoffset(), -dwarf_srclang(), dwarf_arrayorder(), dwarf_hasform(), dwarf_whatform(), -dwarf_whatattr(), dwarf_formref(), dwarf_global_formref(), dwarf_formaddr(), -dwarf_formflag(), dwarf_formudata(), dwarf_formsdata(), dwarf_formblock, -dwarf_formstring() and tests for them. - -Version 0.2: - -Implemented dwarf_offdie()), dwarf_tag(), dwarf_dieoffset(), -dwarf_die_CU_offset(), dwarf_diename() and tests for them. - -Version 0.1: - -First libdwarf functions work. - -Version 0.0: - -libelf and parts of libebl are done. @@ -1,73 +0,0 @@ -- old GNU ld's behavior wrt DSOs seems to be severely broken. - - y.o reference foo() - y1.o defines foo(), references bar() - y2.o defines bar() - libbar.so defines bar() - - Running - - gcc -o y y.o -lbar y1.o y2.o - - uses the bar() definition from libbar.so and does not mention the definition - in y2.o at all (no duplicate symbol message). Correct is to use the - definition in y2.o. - - - y.o reference foo() - y1.o defines foo(), references bar() - y2.o in liby2.a defines bar() - libbar.so defines bar() - - Running - - gcc -o y y.o -lbar y1.o -ly3 - - has to use the definition in -lbar and not pull the definition from liby3.a. - - -- the old linker follows DT_NEEDED entries and adds the objects referenced - this way which define a symbol which is needed as a DT_NEEDED to the - generated binary. This is wrong since the DT_NEEDED changes the search - path in the object (which is breadth first). - - -- the old linker supported extern "C++", extern "java" in version scripts. - I believe this implementation is severly broken and needs a redesign - (how do wildcards work with these languages*?). Therefore it is left - out for now. - - -- what should happen if two sections in different files with the same - name have different types and/or the flags are different - - -- section names in input files are mostly irrelevant. Exceptions: - - .comment/SHT_PROGBITS in strip, ld - - .debug \ - .line | - .debug_srcinfo | - .debug_sfnames | - .debug_aranges | - .debug_pubnames | - .debug_info | - .debug_abbrev | - .debug_line | - .debug_abbrev > DWARF sections in ld - .debug_line | - .debug_frame | - .debug_str | - .debug_loc | - .debug_macinfo | - .debug_weaknames | - .debug_funcnames | - .debug_typenames | - .debug_varnames / - - Sections created in output files follow the naming of special section - from the gABI. - - In no place is a section solely indentified by its name. Internal - references always use the section index. diff --git a/README b/README deleted file mode 100644 index afc94077..00000000 --- a/README +++ /dev/null @@ -1,6 +0,0 @@ -Fundamental design decision: - -- the sizes of external and internal types are assumed to be the same. - This leaves byte ordering aside. While assuming this the code can be - greatly simplified and speed increases. Since no change violating this - assumption is in sight this is believed to be a worthwhile optimization. diff --git a/THANKS b/THANKS deleted file mode 100644 index 543436c2..00000000 --- a/THANKS +++ /dev/null @@ -1,5 +0,0 @@ -At least the following have submitted valuable patches: - -Jeff Johnson building. rpm wrestling -Alexander Larsson separate debug info -Jakub Jelinek bug fixes, testing @@ -1,164 +0,0 @@ - ToDo list for elfutils -*-outline-*- - ---------------------- - -Time-stamp: <2003-08-07 12:52:49 drepper> - -* mkinstalldirs - - Remove everywhere. Use mkdir -p. - -* libelf: - -** verify section - - Currently the elf_update function trusts the user blindly if the - ELF_F_LAYOUT flag is set. This is OK if the data is prepared by a - ELF_C_NULL call but not if the user prepared the data herself - -** break out archive handling from elf_begin - - The handling of archives (especially of the symbol tables) must be - broken out of elf_begin. There are several different forms of - archives and only when having the archive handling separately this - remains maintainable. - - -* libdwarf - -** Should we do more error checking? - - Most functions don't check whether they get a NULL value passed for - a pointer argument. It could be argued that this is OK since it's - a bug inthe program. But perhaps one could catch the case and return - an error which would allow the program using libdwarf to have fewer - places with error checking. - -** More memory access checks needed - - All accesses to the debug sections should make sure the offsets are - valid. This is currently especially a problem with leb128 accesses. - -** Low level macro information operations - - in 5.11.3 are not implemented. gcc currently does not emit this - information so I cannot test it. - -** Rename dwarf_getabbrev - -** dwarf_loclist() - - This function and its interface seem to be misdesigned. The specification - is unclear and its changed between v2 and v2.1. Other implementation - implement even different behavior. - - -* nm: - -** add demangler support - - Use demangler from libiberty. - -** add support to read debugging symbols - - Implement -l option for BSD and POSIX format - - -* strip: - -** support SHT_SYMTAB_SHNDX - - should be removed if not needed anymore - -* ld: - -** sanity check .rel sh_info content - - the sh_info of all .rel sections with the same name must point to - sections which also have the same name - -** use ld.so.conf - - to locate shared libraries also use /etc/ld.so.conf - -** handle object files for different architectures - - ld.so is expected to ignore object files for different architectures and - continue looking for a matching file (e.g., ignore 32-bit binaries on - 64-bit platforms and vice versa). We probably need the same in ld. - -** reuse after elf_end - - Some files are closed using elf_end. They are removed from memory only - if no reference is left (especially for archives this is a problem). - The old mapping should be reused in that case. The problem is worse - for files which are not mapped read-only (archives again). - - -** size for STT_SECTION entries - - The STT_SECTION entries have zero for the size but can easily get - the size of the section. - -* elflint - -** additional checks - - 1st GOT entry == _DYNAMIC - - if TEXTREL check whether any relocation touches RO segment - - if TEXTREL not set check that no relocation touches RO segment - - check versioning info: - - always BASE in verdef - sh_size/sh_entsize matches last offset != 0 - - check whether any relocation is for a merge-able section - -** possibly missing tests - - at most one extended section index table for a symtab - - no extended section index table != ET_REL - - no extended section index table for SHT_DYNSYM - - -* mcs - - Sun has it. Can modify sections which are not in segments. - - -a string - Append string to the comment section of the ELF object - files. If string contains embedded blanks, it must be - enclosed in quotation marks. - - -c Compress the contents of the comment section of the - ELF object files. All duplicate entries are removed. - The ordering of the remaining entries is not dis- - turbed. - - -d Delete the contents of the comment section from the - ELF object files. The section header for the comment - section is also removed. - - -n name - Specify the name of the comment section to access if - other than .comment. By default, mcs deals with the - section named .comment. This option can be used to - specify another section. mcs can take multiple -n - options to allow for specification of multiple sec- - tion comments. - - -p Print the contents of the comment section on the stan- - dard output. Each section printed is tagged by the - name of the file from which it was extracted, using - the format file[member_name]: for archive files and - file: for other files. - - -V Print on standard error the version number of mcs. - -Local Variables: -eval:(hide-body) -End: diff --git a/aclocal.m4 b/aclocal.m4 deleted file mode 100644 index 3d3e8c7f..00000000 --- a/aclocal.m4 +++ /dev/null @@ -1,1059 +0,0 @@ -# generated automatically by aclocal 1.9.2 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 -# Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -# -*- Autoconf -*- -# Copyright (C) 2002, 2003 Free Software Foundation, Inc. -# Generated from amversion.in; do not edit by hand. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION so it can be traced. -# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], - [AM_AUTOMAKE_VERSION([1.9.2])]) - -# AM_AUX_DIR_EXPAND - -# Copyright (C) 2001, 2003 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 6 - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE]) -AC_SUBST([$1_FALSE]) -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# serial 7 -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 -# Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH]) -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 -# Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -#serial 2 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # So let's grep whole file. - if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Do all the work for Automake. -*- Autoconf -*- - -# This macro actually does too much some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 -# Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 11 - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.58])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -# test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && - test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AM_PROG_INSTALL_SH -AM_PROG_INSTALL_STRIP -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -]) -]) - - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $1 | $1:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. - -# Copyright (C) 2001, 2003 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -install_sh=${install_sh-"$am_aux_dir/install-sh"} -AC_SUBST(install_sh)]) - -# -*- Autoconf -*- -# Copyright (C) 2003 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 1 - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - - -# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 -# Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 4 - -# AM_PROG_LEX -# ----------- -# Autoconf leaves LEX=: if lex or flex can't be found. Change that to a -# "missing" invocation, for better error output. -AC_DEFUN([AM_PROG_LEX], -[AC_PREREQ(2.50)dnl -AC_REQUIRE([AM_MISSING_HAS_RUN])dnl -AC_REQUIRE([AC_PROG_LEX])dnl -if test "$LEX" = :; then - LEX=${am_missing_run}flex -fi]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 2 - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo done -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# -*- Autoconf -*- - - -# Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 3 - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) -fi -]) - -# AM_PROG_MKDIR_P -# --------------- -# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. - -# Copyright (C) 2003, 2004 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories -# created by `make install' are always world readable, even if the -# installer happens to have an overly restrictive umask (e.g. 077). -# This was a mistake. There are at least two reasons why we must not -# use `-m 0755': -# - it causes special bits like SGID to be ignored, -# - it may be too restrictive (some setups expect 775 directories). -# -# Do not use -m 0755 and let people choose whatever they expect by -# setting umask. -# -# We cannot accept any implementation of `mkdir' that recognizes `-p'. -# Some implementations (such as Solaris 8's) are not thread-safe: if a -# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' -# concurrently, both version can detect that a/ is missing, but only -# one can create it and the other will error out. Consequently we -# restrict ourselves to GNU make (using the --version option ensures -# this.) -AC_DEFUN([AM_PROG_MKDIR_P], -[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then - # We used to keeping the `.' as first argument, in order to - # allow $(mkdir_p) to be used without argument. As in - # $(mkdir_p) $(somedir) - # where $(somedir) is conditionally defined. However this is wrong - # for two reasons: - # 1. if the package is installed by a user who cannot write `.' - # make install will fail, - # 2. the above comment should most certainly read - # $(mkdir_p) $(DESTDIR)$(somedir) - # so it does not work when $(somedir) is undefined and - # $(DESTDIR) is not. - # To support the latter case, we have to write - # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), - # so the `.' trick is pointless. - mkdir_p='mkdir -p --' -else - # On NextStep and OpenStep, the `mkdir' command does not - # recognize any option. It will interpret all options as - # directories to create, and then abort because `.' already - # exists. - for d in ./-p ./--version; - do - test -d $d && rmdir $d - done - # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. - if test -f "$ac_aux_dir/mkinstalldirs"; then - mkdir_p='$(mkinstalldirs)' - else - mkdir_p='$(install_sh) -d' - fi -fi -AC_SUBST([mkdir_p])]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 2 - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# ------------------------------ -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) - -# _AM_SET_OPTIONS(OPTIONS) -# ---------------------------------- -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# -# Check to make sure that the build environment is sane. -# - -# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 3 - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT(yes)]) - -# AM_PROG_INSTALL_STRIP - -# Copyright (C) 2001, 2003 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# One issue with vendor `install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# serial 1 - - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of `v7', `ustar', or `pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. -AM_MISSING_PROG([AMTAR], [tar]) -m4_if([$1], [v7], - [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar <conftest.tar]) - grep GrepMe conftest.dir/file >/dev/null 2>&1 && break - fi -done -rm -rf conftest.dir - -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - -m4_include([m4/gettext.m4]) -m4_include([m4/iconv.m4]) -m4_include([m4/lib-ld.m4]) -m4_include([m4/lib-link.m4]) -m4_include([m4/lib-prefix.m4]) -m4_include([m4/progtest.m4]) diff --git a/autom4te.cache/output.0 b/autom4te.cache/output.0 deleted file mode 100644 index 76f8f33e..00000000 --- a/autom4te.cache/output.0 +++ /dev/null @@ -1,7272 +0,0 @@ -@%:@! /bin/sh -@%:@ From configure.ac Revision: 1.30 . -@%:@ Guess values for system-dependent variables and create Makefiles. -@%:@ Generated by GNU Autoconf 2.59 for Red Hat elfutils 0.97. -@%:@ -@%:@ Report bugs to <http://bugzilla.redhat.com/bugzilla/>. -@%:@ -@%:@ Copyright (C) 2003 Free Software Foundation, Inc. -@%:@ This configure script is free software; the Free Software Foundation -@%:@ gives unlimited permission to copy, distribute and modify it. -@%:@ -@%:@ Copyright (C) 1996-2003, 2004 Red Hat, Inc. -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -exec 6>&1 - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_config_libobj_dir=. -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - -# Identity of this package. -PACKAGE_NAME='Red Hat elfutils' -PACKAGE_TARNAME='elfutils' -PACKAGE_VERSION='0.97' -PACKAGE_STRING='Red Hat elfutils 0.97' -PACKAGE_BUGREPORT='http://bugzilla.redhat.com/bugzilla/' - -ac_unique_file="libelf/libelf.h" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP MKINSTALLDIRS MSGFMT GMSGFMT XGETTEXT MSGMERGE USE_NLS LIBICONV LTLIBICONV INTLLIBS LIBINTL LTLIBINTL POSUB RANLIB ac_ct_RANLIB YACC LEX LEXLIB LEX_OUTPUT_ROOT LOCALEDIR DATADIRNAME NATIVE_LD_TRUE NATIVE_LD_FALSE base_cpu MUDFLAP_TRUE MUDFLAP_FALSE LIB@&t@OBJS LTLIBOBJS' -ac_subst_files='' - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -ac_prev= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_option in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; - - -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi -fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || - { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 - { (exit 1); exit 1; }; } -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CC_set=${CC+set} -ac_env_CC_value=$CC -ac_cv_env_CC_set=${CC+set} -ac_cv_env_CC_value=$CC -ac_env_CFLAGS_set=${CFLAGS+set} -ac_env_CFLAGS_value=$CFLAGS -ac_cv_env_CFLAGS_set=${CFLAGS+set} -ac_cv_env_CFLAGS_value=$CFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures Red Hat elfutils 0.97 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -_ACEOF - - cat <<_ACEOF -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of Red Hat elfutils 0.97:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-tls enable use of thread local storage - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - --disable-nls do not use Native Language Support - --disable-largefile omit support for large files - --disable-generic do not build generic linker - --enable-mudflap build binaries with mudflap instrumentation - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-gnu-ld assume the C compiler uses GNU ld default=no - --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib - --without-libiconv-prefix don't search for libiconv in includedir and libdir - --with-libintl-prefix=DIR search for libintl in DIR/include and DIR/lib - --without-libintl-prefix don't search for libintl in includedir and libdir - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a - nonstandard directory <lib dir> - CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have - headers in a nonstandard directory <include dir> - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to <http://bugzilla.redhat.com/bugzilla/>. -_ACEOF -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - ac_popdir=`pwd` - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd "$ac_popdir" - done -fi - -test -n "$ac_init_help" && exit 0 -if $ac_init_version; then - cat <<\_ACEOF -Red Hat elfutils configure 0.97 -generated by GNU Autoconf 2.59 - -Copyright (C) 2003 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. - -Copyright (C) 1996-2003, 2004 Red Hat, Inc. -_ACEOF - exit 0 -fi -exec 5>config.log -cat >&5 <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by Red Hat elfutils $as_me 0.97, which was -generated by GNU Autoconf 2.59. Invocation command line was - - $ $0 $@ - -_ACEOF -{ -cat <<_ASUNAME -@%:@@%:@ --------- @%:@@%:@ -@%:@@%:@ Platform. @%:@@%:@ -@%:@@%:@ --------- @%:@@%:@ - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done - -} >&5 - -cat >&5 <<_ACEOF - - -@%:@@%:@ ----------- @%:@@%:@ -@%:@@%:@ Core tests. @%:@@%:@ -@%:@@%:@ ----------- @%:@@%:@ - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_sep= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; - 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " - ;; - esac - done -done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - cat <<\_ASBOX -@%:@@%:@ ---------------- @%:@@%:@ -@%:@@%:@ Cache variables. @%:@@%:@ -@%:@@%:@ ---------------- @%:@@%:@ -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -{ - (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) - sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; - *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} - echo - - cat <<\_ASBOX -@%:@@%:@ ----------------- @%:@@%:@ -@%:@@%:@ Output variables. @%:@@%:@ -@%:@@%:@ ----------------- @%:@@%:@ -_ASBOX - echo - for ac_var in $ac_subst_vars - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - - if test -n "$ac_subst_files"; then - cat <<\_ASBOX -@%:@@%:@ ------------- @%:@@%:@ -@%:@@%:@ Output files. @%:@@%:@ -@%:@@%:@ ------------- @%:@@%:@ -_ASBOX - echo - for ac_var in $ac_subst_files - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - fi - - if test -s confdefs.h; then - cat <<\_ASBOX -@%:@@%:@ ----------- @%:@@%:@ -@%:@@%:@ confdefs.h. @%:@@%:@ -@%:@@%:@ ----------- @%:@@%:@ -_ASBOX - echo - sed "/^$/d" confdefs.h | sort - echo - fi - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status - ' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; - esac - fi -else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" - case $ac_old_set,$ac_new_set in - set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - - - - - - - - - - - - - -ac_aux_dir= -for ac_dir in config $srcdir/config; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f $ac_dir/shtool; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in config $srcdir/config" >&5 -echo "$as_me: error: cannot find install-sh or install.sh in config $srcdir/config" >&2;} - { (exit 1); exit 1; }; } -fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. - - ac_config_files="$ac_config_files config/Makefile" - - - - - -am__api_version="1.9" -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - done - done - ;; -esac -done - - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL=$ac_install_sh - fi -fi -echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -echo "$as_me:$LINENO: checking whether build environment is sane" >&5 -echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 -# Just in case -sleep 1 -echo timestamp > conftest.file -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&5 -echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&2;} - { (exit 1); exit 1; }; } - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! -Check your system clock" >&5 -echo "$as_me: error: newly created file is older than distributed files! -Check your system clock" >&2;} - { (exit 1); exit 1; }; } -fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -test "$program_prefix" != NONE && - program_transform_name="s,^,$program_prefix,;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s,\$,$program_suffix,;$program_transform_name" -# Double any \ or $. echo might interpret backslashes. -# By default was `s,x,x', remove it if useless. -cat <<\_ACEOF >conftest.sed -s/[\\$]/&&/g;s/;s,x,x,$// -_ACEOF -program_transform_name=`echo $program_transform_name | sed -f conftest.sed` -rm conftest.sed - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 -echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then - # We used to keeping the `.' as first argument, in order to - # allow $(mkdir_p) to be used without argument. As in - # $(mkdir_p) $(somedir) - # where $(somedir) is conditionally defined. However this is wrong - # for two reasons: - # 1. if the package is installed by a user who cannot write `.' - # make install will fail, - # 2. the above comment should most certainly read - # $(mkdir_p) $(DESTDIR)$(somedir) - # so it does not work when $(somedir) is undefined and - # $(DESTDIR) is not. - # To support the latter case, we have to write - # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), - # so the `.' trick is pointless. - mkdir_p='mkdir -p --' -else - # On NextStep and OpenStep, the `mkdir' command does not - # recognize any option. It will interpret all options as - # directories to create, and then abort because `.' already - # exists. - for d in ./-p ./--version; - do - test -d $d && rmdir $d - done - # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. - if test -f "$ac_aux_dir/mkinstalldirs"; then - mkdir_p='$(mkinstalldirs)' - else - mkdir_p='$(install_sh) -d' - fi -fi - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_AWK+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$AWK" && break -done - -echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 -set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` -if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.make <<\_ACEOF -all: - @echo 'ac_maketemp="$(MAKE)"' -_ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes -else - eval ac_cv_prog_make_${ac_make}_set=no -fi -rm -f conftest.make -fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - SET_MAKE= -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -# test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && - test -f $srcdir/config.status; then - { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 -echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} - { (exit 1); exit 1; }; } -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE='elfutils' - VERSION='0.97' - - -cat >>confdefs.h <<_ACEOF -@%:@define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -@%:@define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -install_sh=${install_sh-"$am_aux_dir/install-sh"} - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - STRIP=$ac_ct_STRIP -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. - -AMTAR=${AMTAR-"${am_missing_run}tar"} - -am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' - - - - - - - - ac_config_files="$ac_config_files Makefile" - - ac_config_headers="$ac_config_headers config.h" - - -case m4 in - [\\/]* | ?:[\\/]* ) ac_macro_dir=m4 ;; - *) ac_macro_dir=$srcdir/m4 ;; -esac -if test -d "$ac_macro_dir"; then : -else - { { echo "$as_me:$LINENO: error: cannot find macro directory \`m4'" >&5 -echo "$as_me: error: cannot find macro directory \`m4'" >&2;} - { (exit 1); exit 1; }; } -fi - - ac_config_files="$ac_config_files m4/Makefile" - - - ac_config_files="$ac_config_files elfutils.spec:config/elfutils.spec.in" - - - -# Make sure we can run config.sub. -$ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} - { (exit 1); exit 1; }; } - -echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6 -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } -ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6 -build=$ac_cv_build -build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - -echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6 -if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_host_alias=$host_alias -test -z "$ac_cv_host_alias" && - ac_cv_host_alias=$ac_cv_build_alias -ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6 -host=$ac_cv_host -host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - - -# Check whether --enable-tls or --disable-tls was given. -if test "${enable_tls+set}" = set; then - enableval="$enable_tls" - cat >>confdefs.h <<\_ACEOF -@%:@define USE_TLS 1 -_ACEOF - -fi; - - - -ALL_LINGUAS= - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $@%:@ != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_CC" && break -done - - CC=$ac_ct_CC -fi - -fi - - -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - -# Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 - (eval $ac_compiler --version </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 - (eval $ac_compiler -v </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 - (eval $ac_compiler -V </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. - -# Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -# b.out is created by i960 compilers. -for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) - ;; - conftest.$ac_ext ) - # This is the source file. - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool, - # but it would be cool to find out if it's true. Does anybody - # maintain Libtool? --akim. - export ac_cv_exeext - break;; - * ) - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables -See \`config.log' for more details." >&5 -echo "$as_me: error: C compiler cannot create executables -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } -fi - -ac_exeext=$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 - -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - fi - fi -fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -rm -f a.out a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext - break;; - * ) break;; - esac -done -else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 -if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_compiler_gnu=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 -GCC=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -CFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_prog_cc_g=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_prog_cc_stdc=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <stdarg.h> -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std1 is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std1. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext -done -rm -f conftest.$ac_ext conftest.$ac_objext -CC=$ac_save_CC - -fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; - *) - echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; -esac - -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -@%:@ifndef __cplusplus - choke me -@%:@endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -@%:@include <stdlib.h> -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -DEPDIR="${am__leading_dot}deps" - - ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo done -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 -echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi -fi - - -echo "$as_me:$LINENO: result: $_am_result" >&5 -echo "${ECHO_T}$_am_result" >&6 -rm -f confinc confmf - -# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then - enableval="$enable_dependency_tracking" - -fi; -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi - - -if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - - - -depcc="$CC" am_compiler_list= - -echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 -if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - - -if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -@%:@ifdef __STDC__ -@%:@ include <limits.h> -@%:@else -@%:@ include <assert.h> -@%:@endif - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -@%:@include <ac_nonexistent.h> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -@%:@ifdef __STDC__ -@%:@ include <limits.h> -@%:@else -@%:@ include <assert.h> -@%:@endif - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -@%:@include <ac_nonexistent.h> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -if test "${ac_cv_prog_egrep+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' - fi -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 -echo "${ECHO_T}$ac_cv_prog_egrep" >&6 - EGREP=$ac_cv_prog_egrep - - -if test $ac_cv_c_compiler_gnu = yes; then - echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5 -echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6 -if test "${ac_cv_prog_gcc_traditional+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_pattern="Autoconf.*'x'" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <sgtty.h> -Autoconf TIOCGETP -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "$ac_pattern" >/dev/null 2>&1; then - ac_cv_prog_gcc_traditional=yes -else - ac_cv_prog_gcc_traditional=no -fi -rm -f conftest* - - - if test $ac_cv_prog_gcc_traditional = no; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <termio.h> -Autoconf TCGETA -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "$ac_pattern" >/dev/null 2>&1; then - ac_cv_prog_gcc_traditional=yes -fi -rm -f conftest* - - fi -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5 -echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6 - if test $ac_cv_prog_gcc_traditional = yes; then - CC="$CC -traditional" - fi -fi - - - MKINSTALLDIRS= - if test -n "$ac_aux_dir"; then - MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" - fi - if test -z "$MKINSTALLDIRS"; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - - - - - - # Extract the first word of "msgfmt", so it can be a program name with args. -set dummy msgfmt; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_MSGFMT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case "$MSGFMT" in - /*) - ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - ac_cv_path_MSGFMT="$ac_dir/$ac_word" - break - fi - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" - ;; -esac -fi -MSGFMT="$ac_cv_path_MSGFMT" -if test "$MSGFMT" != ":"; then - echo "$as_me:$LINENO: result: $MSGFMT" >&5 -echo "${ECHO_T}$MSGFMT" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - # Extract the first word of "gmsgfmt", so it can be a program name with args. -set dummy gmsgfmt; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_GMSGFMT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $GMSGFMT in - [\\/]* | ?:[\\/]*) - ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" - ;; -esac -fi -GMSGFMT=$ac_cv_path_GMSGFMT - -if test -n "$GMSGFMT"; then - echo "$as_me:$LINENO: result: $GMSGFMT" >&5 -echo "${ECHO_T}$GMSGFMT" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - - # Extract the first word of "xgettext", so it can be a program name with args. -set dummy xgettext; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_XGETTEXT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case "$XGETTEXT" in - /*) - ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - ac_cv_path_XGETTEXT="$ac_dir/$ac_word" - break - fi - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" - ;; -esac -fi -XGETTEXT="$ac_cv_path_XGETTEXT" -if test "$XGETTEXT" != ":"; then - echo "$as_me:$LINENO: result: $XGETTEXT" >&5 -echo "${ECHO_T}$XGETTEXT" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - rm -f messages.po - - # Extract the first word of "msgmerge", so it can be a program name with args. -set dummy msgmerge; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_MSGMERGE+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case "$MSGMERGE" in - /*) - ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then - ac_cv_path_MSGMERGE="$ac_dir/$ac_word" - break - fi - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" - ;; -esac -fi -MSGMERGE="$ac_cv_path_MSGMERGE" -if test "$MSGMERGE" != ":"; then - echo "$as_me:$LINENO: result: $MSGMERGE" >&5 -echo "${ECHO_T}$MSGMERGE" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - - if test "$GMSGFMT" != ":"; then - if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && - (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` - echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 -echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 - GMSGFMT=":" - fi - fi - - if test "$XGETTEXT" != ":"; then - if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && - (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 -echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 - XGETTEXT=":" - fi - rm -f messages.po - fi - - ac_config_commands="$ac_config_commands default-1" - - - - if test "X$prefix" = "XNONE"; then - acl_final_prefix="$ac_default_prefix" - else - acl_final_prefix="$prefix" - fi - if test "X$exec_prefix" = "XNONE"; then - acl_final_exec_prefix='${prefix}' - else - acl_final_exec_prefix="$exec_prefix" - fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" - prefix="$acl_save_prefix" - - -# Check whether --with-gnu-ld or --without-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then - withval="$with_gnu_ld" - test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi; -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - echo "$as_me:$LINENO: checking for ld used by GCC" >&5 -echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | [A-Za-z]:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - echo "$as_me:$LINENO: checking for GNU ld" >&5 -echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 -else - echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 -fi -if test "${acl_cv_path_LD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then - test "$with_gnu_ld" != no && break - else - test "$with_gnu_ld" != yes && break - fi - fi - done - IFS="$ac_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi - -LD="$acl_cv_path_LD" -if test -n "$LD"; then - echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 -if test "${acl_cv_prog_gnu_ld+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then - acl_cv_prog_gnu_ld=yes -else - acl_cv_prog_gnu_ld=no -fi -fi -echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5 -echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 -with_gnu_ld=$acl_cv_prog_gnu_ld - - - - echo "$as_me:$LINENO: checking for shared library run path origin" >&5 -echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 -if test "${acl_cv_rpath+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ - ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh - . ./conftest.sh - rm -f ./conftest.sh - acl_cv_rpath=done - -fi -echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 -echo "${ECHO_T}$acl_cv_rpath" >&6 - wl="$acl_cv_wl" - libext="$acl_cv_libext" - shlibext="$acl_cv_shlibext" - hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - hardcode_direct="$acl_cv_hardcode_direct" - hardcode_minus_L="$acl_cv_hardcode_minus_L" - sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec" - sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec" - - - - - - - - use_additional=yes - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - -# Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. -if test "${with_libiconv_prefix+set}" = set; then - withval="$with_libiconv_prefix" - - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi - -fi; - LIBICONV= - LTLIBICONV= - INCICONV= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='iconv ' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" - else - : - fi - else - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "X$found_dir" = "X/usr/lib"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - if test "$hardcode_direct" = yes; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - haveit= - for x in $LDFLAGS $LIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" - fi - fi - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INCICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - if test -n "$found_la"; then - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -l*) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" - ;; - esac - done - fi - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" - else - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - for found_dir in $ltrpathdirs; do - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" - done - fi - - - - - - - - - - - - - - - - - - echo "$as_me:$LINENO: checking whether NLS is requested" >&5 -echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 - # Check whether --enable-nls or --disable-nls was given. -if test "${enable_nls+set}" = set; then - enableval="$enable_nls" - USE_NLS=$enableval -else - USE_NLS=yes -fi; - echo "$as_me:$LINENO: result: $USE_NLS" >&5 -echo "${ECHO_T}$USE_NLS" >&6 - - - - LIBINTL= - LTLIBINTL= - POSUB= - - if test "$USE_NLS" = "yes"; then - gt_use_preinstalled_gnugettext=no - - - - - - - echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 -echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 -if test "${gt_cv_func_gnugettext1_libc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <libintl.h> -extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings; -int -main () -{ -bindtextdomain ("", ""); -return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - gt_cv_func_gnugettext1_libc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -gt_cv_func_gnugettext1_libc=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5 -echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6 - - if test "$gt_cv_func_gnugettext1_libc" != "yes"; then - - - - - - am_save_CPPFLAGS="$CPPFLAGS" - - for element in $INCICONV; do - haveit= - for x in $CPPFLAGS; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" - fi - done - - - echo "$as_me:$LINENO: checking for iconv" >&5 -echo $ECHO_N "checking for iconv... $ECHO_C" >&6 -if test "${am_cv_func_iconv+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <stdlib.h> -#include <iconv.h> -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - am_cv_func_iconv=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <stdlib.h> -#include <iconv.h> -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - am_cv_lib_iconv=yes - am_cv_func_iconv=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$am_save_LIBS" - fi - -fi -echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 -echo "${ECHO_T}$am_cv_func_iconv" >&6 - if test "$am_cv_func_iconv" = yes; then - -cat >>confdefs.h <<\_ACEOF -@%:@define HAVE_ICONV 1 -_ACEOF - - fi - if test "$am_cv_lib_iconv" = yes; then - echo "$as_me:$LINENO: checking how to link with libiconv" >&5 -echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6 - echo "$as_me:$LINENO: result: $LIBICONV" >&5 -echo "${ECHO_T}$LIBICONV" >&6 - else - CPPFLAGS="$am_save_CPPFLAGS" - LIBICONV= - LTLIBICONV= - fi - - - - - - - use_additional=yes - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - -# Check whether --with-libintl-prefix or --without-libintl-prefix was given. -if test "${with_libintl_prefix+set}" = set; then - withval="$with_libintl_prefix" - - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi - -fi; - LIBINTL= - LTLIBINTL= - INCINTL= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='intl ' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" - else - : - fi - else - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "X$found_dir" = "X/usr/lib"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - if test "$hardcode_direct" = yes; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - haveit= - for x in $LDFLAGS $LIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" - else - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" - fi - fi - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INCINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - if test -n "$found_la"; then - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -l*) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" - ;; - esac - done - fi - else - LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" - else - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - for found_dir in $ltrpathdirs; do - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" - done - fi - - echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 -echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6 -if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCINTL" - gt_save_LIBS="$LIBS" - LIBS="$LIBS $LIBINTL" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <libintl.h> -extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (); -int -main () -{ -bindtextdomain ("", ""); -return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - gt_cv_func_gnugettext1_libintl=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -gt_cv_func_gnugettext1_libintl=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then - LIBS="$LIBS $LIBICONV" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <libintl.h> -extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (); -int -main () -{ -bindtextdomain ("", ""); -return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - LIBINTL="$LIBINTL $LIBICONV" - LTLIBINTL="$LTLIBINTL $LTLIBICONV" - gt_cv_func_gnugettext1_libintl=yes - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - fi - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS" -fi -echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libintl" >&5 -echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6 - fi - - if test "$gt_cv_func_gnugettext1_libc" = "yes" \ - || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ - && test "$PACKAGE" != gettext; }; then - gt_use_preinstalled_gnugettext=yes - else - LIBINTL= - LTLIBINTL= - INCINTL= - fi - - - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - -cat >>confdefs.h <<\_ACEOF -@%:@define ENABLE_NLS 1 -_ACEOF - - else - USE_NLS=no - fi - fi - - if test "$USE_NLS" = "yes"; then - - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then - echo "$as_me:$LINENO: checking how to link with libintl" >&5 -echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6 - echo "$as_me:$LINENO: result: $LIBINTL" >&5 -echo "${ECHO_T}$LIBINTL" >&6 - - for element in $INCINTL; do - haveit= - for x in $CPPFLAGS; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" - fi - done - - fi - - -cat >>confdefs.h <<\_ACEOF -@%:@define HAVE_GETTEXT 1 -_ACEOF - - -cat >>confdefs.h <<\_ACEOF -@%:@define HAVE_DCGETTEXT 1 -_ACEOF - - fi - - POSUB=po - fi - - - - INTLLIBS="$LIBINTL" - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - RANLIB=$ac_ct_RANLIB -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -for ac_prog in 'bison -y' byacc -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_YACC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$YACC"; then - ac_cv_prog_YACC="$YACC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_YACC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -YACC=$ac_cv_prog_YACC -if test -n "$YACC"; then - echo "$as_me:$LINENO: result: $YACC" >&5 -echo "${ECHO_T}$YACC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$YACC" && break -done -test -n "$YACC" || YACC="yacc" - -for ac_prog in flex lex -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_LEX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$LEX"; then - ac_cv_prog_LEX="$LEX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_LEX="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -LEX=$ac_cv_prog_LEX -if test -n "$LEX"; then - echo "$as_me:$LINENO: result: $LEX" >&5 -echo "${ECHO_T}$LEX" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$LEX" && break -done -test -n "$LEX" || LEX=":" - -if test -z "$LEXLIB" -then - echo "$as_me:$LINENO: checking for yywrap in -lfl" >&5 -echo $ECHO_N "checking for yywrap in -lfl... $ECHO_C" >&6 -if test "${ac_cv_lib_fl_yywrap+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lfl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char yywrap (); -int -main () -{ -yywrap (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_fl_yywrap=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_fl_yywrap=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_fl_yywrap" >&5 -echo "${ECHO_T}$ac_cv_lib_fl_yywrap" >&6 -if test $ac_cv_lib_fl_yywrap = yes; then - LEXLIB="-lfl" -else - echo "$as_me:$LINENO: checking for yywrap in -ll" >&5 -echo $ECHO_N "checking for yywrap in -ll... $ECHO_C" >&6 -if test "${ac_cv_lib_l_yywrap+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ll $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char yywrap (); -int -main () -{ -yywrap (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_l_yywrap=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_l_yywrap=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_l_yywrap" >&5 -echo "${ECHO_T}$ac_cv_lib_l_yywrap" >&6 -if test $ac_cv_lib_l_yywrap = yes; then - LEXLIB="-ll" -fi - -fi - -fi - -if test "x$LEX" != "x:"; then - echo "$as_me:$LINENO: checking lex output file root" >&5 -echo $ECHO_N "checking lex output file root... $ECHO_C" >&6 -if test "${ac_cv_prog_lex_root+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # The minimal lex program is just a single line: %%. But some broken lexes -# (Solaris, I think it was) want two %% lines, so accommodate them. -cat >conftest.l <<_ACEOF -%% -%% -_ACEOF -{ (eval echo "$as_me:$LINENO: \"$LEX conftest.l\"") >&5 - (eval $LEX conftest.l) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -if test -f lex.yy.c; then - ac_cv_prog_lex_root=lex.yy -elif test -f lexyy.c; then - ac_cv_prog_lex_root=lexyy -else - { { echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5 -echo "$as_me: error: cannot find output from $LEX; giving up" >&2;} - { (exit 1); exit 1; }; } -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5 -echo "${ECHO_T}$ac_cv_prog_lex_root" >&6 -rm -f conftest.l -LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root - -echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5 -echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6 -if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # POSIX says lex can declare yytext either as a pointer or an array; the -# default is implementation-dependent. Figure out which it is, since -# not all implementations provide the %pointer and %array declarations. -ac_cv_prog_lex_yytext_pointer=no -echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c -ac_save_LIBS=$LIBS -LIBS="$LIBS $LEXLIB" -cat >conftest.$ac_ext <<_ACEOF -`cat $LEX_OUTPUT_ROOT.c` -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_lex_yytext_pointer=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_save_LIBS -rm -f "${LEX_OUTPUT_ROOT}.c" - -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5 -echo "${ECHO_T}$ac_cv_prog_lex_yytext_pointer" >&6 -if test $ac_cv_prog_lex_yytext_pointer = yes; then - -cat >>confdefs.h <<\_ACEOF -@%:@define YYTEXT_POINTER 1 -_ACEOF - -fi - -fi -if test "$LEX" = :; then - LEX=${am_missing_run}flex -fi - -echo "$as_me:$LINENO: checking for gcc with C99 support" >&5 -echo $ECHO_N "checking for gcc with C99 support... $ECHO_C" >&6 -if test "${ac_cv_c99+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - old_CFLAGS="$CFLAGS" -CFLAGS="$CFLAGS -std=gnu99" -cat >conftest.$ac_ext <<_ACEOF -int foo (int a) { for (int i = 0; i < a; ++i) if (i % 4) break; int s = a; } -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c99=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_c99=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -CFLAGS="$old_CFLAGS" -fi -echo "$as_me:$LINENO: result: $ac_cv_c99" >&5 -echo "${ECHO_T}$ac_cv_c99" >&6 -if test "x$ac_cv_c99" != xyes; then - { { echo "$as_me:$LINENO: error: gcc with C99 support required" >&5 -echo "$as_me: error: gcc with C99 support required" >&2;} - { (exit 1); exit 1; }; } -fi - - -LOCALEDIR=$datadir - -cat >>confdefs.h <<_ACEOF -@%:@define LOCALEDIR "$LOCALEDIR" -_ACEOF - - - - -DATADIRNAME=$datadir - - -# Check whether --enable-largefile or --disable-largefile was given. -if test "${enable_largefile+set}" = set; then - enableval="$enable_largefile" - -fi; -if test "$enable_largefile" != no; then - - echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 -echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6 -if test "${ac_cv_sys_largefile_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_sys_largefile_CC=no - if test "$GCC" != yes; then - ac_save_CC=$CC - while :; do - # IRIX 6.2 and later do not support large files by default, - # so use the C compiler's -n32 option if that helps. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -@%:@include <sys/types.h> - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF - rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext - CC="$CC -n32" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sys_largefile_CC=' -n32'; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext - break - done - CC=$ac_save_CC - rm -f conftest.$ac_ext - fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 -echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6 - if test "$ac_cv_sys_largefile_CC" != no; then - CC=$CC$ac_cv_sys_largefile_CC - fi - - echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 -echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6 -if test "${ac_cv_sys_file_offset_bits+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - while :; do - ac_cv_sys_file_offset_bits=no - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -@%:@include <sys/types.h> - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -@%:@define _FILE_OFFSET_BITS 64 -@%:@include <sys/types.h> - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sys_file_offset_bits=64; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - break -done -fi -echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 -echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6 -if test "$ac_cv_sys_file_offset_bits" != no; then - -cat >>confdefs.h <<_ACEOF -@%:@define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits -_ACEOF - -fi -rm -f conftest* - echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 -echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6 -if test "${ac_cv_sys_large_files+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - while :; do - ac_cv_sys_large_files=no - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -@%:@include <sys/types.h> - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -@%:@define _LARGE_FILES 1 -@%:@include <sys/types.h> - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sys_large_files=1; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - break -done -fi -echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 -echo "${ECHO_T}$ac_cv_sys_large_files" >&6 -if test "$ac_cv_sys_large_files" != no; then - -cat >>confdefs.h <<_ACEOF -@%:@define _LARGE_FILES $ac_cv_sys_large_files -_ACEOF - -fi -rm -f conftest* -fi - - -native_ld=no -# Check whether --enable-generic or --disable-generic was given. -if test "${enable_generic+set}" = set; then - enableval="$enable_generic" - if test "$enable_generic" = no; then - case "$host_cpu" in - i?86) - cat >>confdefs.h <<\_ACEOF -@%:@define NATIVE_ELF 32 -_ACEOF - - native_ld=yes - base_cpu=i386 - ;; - *) - { { echo "$as_me:$LINENO: error: no machine-specific linker for this configuration available" >&5 -echo "$as_me: error: no machine-specific linker for this configuration available" >&2;} - { (exit 1); exit 1; }; } - ;; - esac -fi -fi; - - - - -if test "$native_ld" = yes; then - NATIVE_LD_TRUE= - NATIVE_LD_FALSE='#' -else - NATIVE_LD_TRUE='#' - NATIVE_LD_FALSE= -fi - -if test -z "$base_cpu"; then - base_cpu=none -fi - - - -use_mudflap=no -# Check whether --enable-mudflap or --disable-mudflap was given. -if test "${enable_mudflap+set}" = set; then - enableval="$enable_mudflap" - if test "x$enable_mudflap" = xyes; then - # Check whether the compiler support -fmudflap. - old_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -fmudflap" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - use_mudflap=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -use_mudflap=fail -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS="$old_CFLAGS" -fi -fi; -if test "$use_mudflap" = fail; then - { { echo "$as_me:$LINENO: error: --enable-mudflap requires a compiler which understands this option -See \`config.log' for more details." >&5 -echo "$as_me: error: --enable-mudflap requires a compiler which understands this option -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - - -if test "$use_mudflap" = yes; then - MUDFLAP_TRUE= - MUDFLAP_FALSE='#' -else - MUDFLAP_TRUE='#' - MUDFLAP_FALSE= -fi - - - - - ac_config_files="$ac_config_files doc/Makefile" - - - ac_config_files="$ac_config_files lib/Makefile" - - - ac_config_files="$ac_config_files libelf/Makefile libelf-po/Makefile.in" - - - ac_config_files="$ac_config_files libebl/Makefile" - - - ac_config_files="$ac_config_files libdw/Makefile" - - - ac_config_files="$ac_config_files libcpu/Makefile" - - - ac_config_files="$ac_config_files libasm/Makefile" - - - ac_config_files="$ac_config_files src/Makefile po/Makefile.in" - - - ac_config_files="$ac_config_files tests/Makefile" - - - - - - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -{ - (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} | - sed ' - t clear - : clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" - cat confcache >$cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_i=`echo "$ac_i" | - sed 's/\$U\././;s/\.o$//;s/\.obj$//'` - # 2. Add them. - ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' -done -LIB@&t@OBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${NATIVE_LD_TRUE}" && test -z "${NATIVE_LD_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"NATIVE_LD\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"NATIVE_LD\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${MUDFLAP_TRUE}" && test -z "${MUDFLAP_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"MUDFLAP\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"MUDFLAP\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi - -: ${CONFIG_STATUS=./config.status} -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - -exec 6>&1 - -# Open the log real soon, to keep \$[0] and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX -@%:@@%:@ Running $as_me. @%:@@%:@ -_ASBOX -} >&5 -cat >&5 <<_CSEOF - -This file was extended by Red Hat elfutils $as_me 0.97, which was -generated by GNU Autoconf 2.59. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 -_ACEOF - -# Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi - -cat >>$CONFIG_STATUS <<\_ACEOF - -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to <bug-autoconf@gnu.org>." -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -ac_cs_version="\\ -Red Hat elfutils config.status 0.97 -configured by $0, generated by GNU Autoconf 2.59, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" - -Copyright (C) 2003 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir -INSTALL="$INSTALL" -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - ac_shift=: - ;; - -*) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_option=$1 - ac_need_defaults=false;; - esac - - case $ac_option in - # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" - ac_need_defaults=false;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -if \$ac_cs_recheck; then - echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion -fi - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -# -# INIT-COMMANDS section. -# - -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" -# Capture the value of obsolete $ALL_LINGUAS because we need it to compute - # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it - # from automake. - eval 'ALL_LINGUAS''="$ALL_LINGUAS"' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="${LINGUAS-%UNSET%}" - - -_ACEOF - - - -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_config_target in $ac_config_targets -do - case "$ac_config_target" in - # Handling of arguments. - "config/Makefile" ) CONFIG_FILES="$CONFIG_FILES config/Makefile" ;; - "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "m4/Makefile" ) CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;; - "elfutils.spec" ) CONFIG_FILES="$CONFIG_FILES elfutils.spec:config/elfutils.spec.in" ;; - "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; - "libelf/Makefile" ) CONFIG_FILES="$CONFIG_FILES libelf/Makefile" ;; - "libelf-po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES libelf-po/Makefile.in" ;; - "libebl/Makefile" ) CONFIG_FILES="$CONFIG_FILES libebl/Makefile" ;; - "libdw/Makefile" ) CONFIG_FILES="$CONFIG_FILES libdw/Makefile" ;; - "libcpu/Makefile" ) CONFIG_FILES="$CONFIG_FILES libcpu/Makefile" ;; - "libasm/Makefile" ) CONFIG_FILES="$CONFIG_FILES libasm/Makefile" ;; - "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; - "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; - "tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; - "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason to put it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF - -# -# CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s,@SHELL@,$SHELL,;t t -s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s,@exec_prefix@,$exec_prefix,;t t -s,@prefix@,$prefix,;t t -s,@program_transform_name@,$program_transform_name,;t t -s,@bindir@,$bindir,;t t -s,@sbindir@,$sbindir,;t t -s,@libexecdir@,$libexecdir,;t t -s,@datadir@,$datadir,;t t -s,@sysconfdir@,$sysconfdir,;t t -s,@sharedstatedir@,$sharedstatedir,;t t -s,@localstatedir@,$localstatedir,;t t -s,@libdir@,$libdir,;t t -s,@includedir@,$includedir,;t t -s,@oldincludedir@,$oldincludedir,;t t -s,@infodir@,$infodir,;t t -s,@mandir@,$mandir,;t t -s,@build_alias@,$build_alias,;t t -s,@host_alias@,$host_alias,;t t -s,@target_alias@,$target_alias,;t t -s,@DEFS@,$DEFS,;t t -s,@ECHO_C@,$ECHO_C,;t t -s,@ECHO_N@,$ECHO_N,;t t -s,@ECHO_T@,$ECHO_T,;t t -s,@LIBS@,$LIBS,;t t -s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t -s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t -s,@INSTALL_DATA@,$INSTALL_DATA,;t t -s,@CYGPATH_W@,$CYGPATH_W,;t t -s,@PACKAGE@,$PACKAGE,;t t -s,@VERSION@,$VERSION,;t t -s,@ACLOCAL@,$ACLOCAL,;t t -s,@AUTOCONF@,$AUTOCONF,;t t -s,@AUTOMAKE@,$AUTOMAKE,;t t -s,@AUTOHEADER@,$AUTOHEADER,;t t -s,@MAKEINFO@,$MAKEINFO,;t t -s,@install_sh@,$install_sh,;t t -s,@STRIP@,$STRIP,;t t -s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t -s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t -s,@mkdir_p@,$mkdir_p,;t t -s,@AWK@,$AWK,;t t -s,@SET_MAKE@,$SET_MAKE,;t t -s,@am__leading_dot@,$am__leading_dot,;t t -s,@AMTAR@,$AMTAR,;t t -s,@am__tar@,$am__tar,;t t -s,@am__untar@,$am__untar,;t t -s,@build@,$build,;t t -s,@build_cpu@,$build_cpu,;t t -s,@build_vendor@,$build_vendor,;t t -s,@build_os@,$build_os,;t t -s,@host@,$host,;t t -s,@host_cpu@,$host_cpu,;t t -s,@host_vendor@,$host_vendor,;t t -s,@host_os@,$host_os,;t t -s,@CC@,$CC,;t t -s,@CFLAGS@,$CFLAGS,;t t -s,@LDFLAGS@,$LDFLAGS,;t t -s,@CPPFLAGS@,$CPPFLAGS,;t t -s,@ac_ct_CC@,$ac_ct_CC,;t t -s,@EXEEXT@,$EXEEXT,;t t -s,@OBJEXT@,$OBJEXT,;t t -s,@DEPDIR@,$DEPDIR,;t t -s,@am__include@,$am__include,;t t -s,@am__quote@,$am__quote,;t t -s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t -s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t -s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t -s,@CCDEPMODE@,$CCDEPMODE,;t t -s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t -s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t -s,@CPP@,$CPP,;t t -s,@EGREP@,$EGREP,;t t -s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t -s,@MSGFMT@,$MSGFMT,;t t -s,@GMSGFMT@,$GMSGFMT,;t t -s,@XGETTEXT@,$XGETTEXT,;t t -s,@MSGMERGE@,$MSGMERGE,;t t -s,@USE_NLS@,$USE_NLS,;t t -s,@LIBICONV@,$LIBICONV,;t t -s,@LTLIBICONV@,$LTLIBICONV,;t t -s,@INTLLIBS@,$INTLLIBS,;t t -s,@LIBINTL@,$LIBINTL,;t t -s,@LTLIBINTL@,$LTLIBINTL,;t t -s,@POSUB@,$POSUB,;t t -s,@RANLIB@,$RANLIB,;t t -s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t -s,@YACC@,$YACC,;t t -s,@LEX@,$LEX,;t t -s,@LEXLIB@,$LEXLIB,;t t -s,@LEX_OUTPUT_ROOT@,$LEX_OUTPUT_ROOT,;t t -s,@LOCALEDIR@,$LOCALEDIR,;t t -s,@DATADIRNAME@,$DATADIRNAME,;t t -s,@NATIVE_LD_TRUE@,$NATIVE_LD_TRUE,;t t -s,@NATIVE_LD_FALSE@,$NATIVE_LD_FALSE,;t t -s,@base_cpu@,$base_cpu,;t t -s,@MUDFLAP_TRUE@,$MUDFLAP_TRUE,;t t -s,@MUDFLAP_FALSE@,$MUDFLAP_FALSE,;t t -s,@LIB@&t@OBJS@,$LIB@&t@OBJS,;t t -s,@LTLIBOBJS@,$LTLIBOBJS,;t t -CEOF - -_ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat - fi -fi # test -n "$CONFIG_FILES" - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_builddir$INSTALL ;; - esac - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@abs_srcdir@,$ac_abs_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s,@builddir@,$ac_builddir,;t t -s,@abs_builddir@,$ac_abs_builddir,;t t -s,@top_builddir@,$ac_top_builddir,;t t -s,@abs_top_builddir@,$ac_abs_top_builddir,;t t -s,@INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_HEADER section. -# - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' - -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - # Do quote $f, to prevent DOS paths from being IFS'd. - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - -_ACEOF - -# Transform confdefs.h into two sed scripts, `conftest.defines' and -# `conftest.undefs', that substitutes the proper values into -# config.h.in to produce config.h. The first handles `#define' -# templates, and the second `#undef' templates. -# And first: Protect against being on the right side of a sed subst in -# config.status. Protect against being in an unquoted here document -# in config.status. -rm -f conftest.defines conftest.undefs -# Using a here document instead of a string reduces the quoting nightmare. -# Putting comments in sed scripts is not portable. -# -# `end' is used to avoid that the second main sed command (meant for -# 0-ary CPP macros) applies to n-ary macro definitions. -# See the Autoconf documentation for `clear'. -cat >confdef2sed.sed <<\_ACEOF -s/[\\&,]/\\&/g -s,[\\$`],\\&,g -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp -t end -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp -: end -_ACEOF -# If some macros were called several times there might be several times -# the same #defines, which is useless. Nevertheless, we may not want to -# sort them, since we want the *last* AC-DEFINE to be honored. -uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines -sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs -rm -f confdef2sed.sed - -# This sed command replaces #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -cat >>conftest.undefs <<\_ACEOF -s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, -_ACEOF - -# Break up conftest.defines because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS -echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS -echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS -echo ' :' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.defines >/dev/null -do - # Write a limited-size here document to $tmp/defines.sed. - echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS - # Speed up: don't consider the non `#define' lines. - echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/defines.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines -echo ' fi # grep' >>$CONFIG_STATUS -echo >>$CONFIG_STATUS - -# Break up conftest.undefs because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #undef templates' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.undefs >/dev/null -do - # Write a limited-size here document to $tmp/undefs.sed. - echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS - # Speed up: don't consider the non `#undef' - echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/undefs.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail - rm -f conftest.undefs - mv conftest.tail conftest.undefs -done -rm -f conftest.undefs - -cat >>$CONFIG_STATUS <<\_ACEOF - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - echo "/* Generated by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - rm -f $tmp/in - if test x"$ac_file" != x-; then - if diff $ac_file $tmp/config.h >/dev/null 2>&1; then - { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} - else - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - rm -f $ac_file - mv $tmp/config.h $ac_file - fi - else - cat $tmp/config.h - rm -f $tmp/config.h - fi -# Compute $ac_file's index in $config_headers. -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $ac_file | $ac_file:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || -$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X$ac_file : 'X\(//\)[^/]' \| \ - X$ac_file : 'X\(//\)$' \| \ - X$ac_file : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X$ac_file | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'`/stamp-h$_am_stamp_count -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - - { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 -echo "$as_me: executing $ac_dest commands" >&6;} - case $ac_dest in - depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # So let's grep whole file. - if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then - dirpart=`(dirname "$mf") 2>/dev/null || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`(dirname "$file") 2>/dev/null || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p $dirpart/$fdir - else - as_dir=$dirpart/$fdir - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 -echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} - { (exit 1); exit 1; }; }; } - - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done - ;; - default-1 ) - for ac_file in $CONFIG_FILES; do - # Support "outfile[:infile[:infile...]]" - case "$ac_file" in - *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - esac - # PO directories have a Makefile.in generated from Makefile.in.in. - case "$ac_file" in */Makefile.in) - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" - # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. - if test -n "$ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" - fi - ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' - fi - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= - GMOFILES= - UPDATEPOFILES= - DUMMYPOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" - GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. - INST_LINGUAS= - if test -n "$ALL_LINGUAS"; then - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "$LINGUAS"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - INST_LINGUAS="$INST_LINGUAS $presentlang" - fi - done - fi - CATALOGS= - if test -n "$INST_LINGUAS"; then - for lang in $INST_LINGUAS; do - CATALOGS="$CATALOGS $lang.gmo" - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in - *.orig | *.bak | *~) ;; - *) cat "$f" >> "$ac_dir/Makefile" ;; - esac - fi - done - fi - ;; - esac - done ;; - esac -done -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF - -{ (exit 0); exit 0; } -_ACEOF -chmod +x $CONFIG_STATUS -ac_clean_files=$ac_clean_files_save - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } -fi - diff --git a/autom4te.cache/requests b/autom4te.cache/requests deleted file mode 100644 index f0e4b0f3..00000000 --- a/autom4te.cache/requests +++ /dev/null @@ -1,116 +0,0 @@ -# This file was generated by Autom4te Thu Nov 25 00:39:59 GMT 2004. -# It contains the lists of macros which have been traced. -# It can be safely removed. - -@request = ( - bless( [ - '0', - 1, - [ - '/usr/share/autoconf' - ], - [ - '/usr/share/autoconf/autoconf/autoconf.m4f', - 'aclocal.m4', - 'configure.ac' - ], - { - 'm4_pattern_forbid' => 1, - 'AC_CONFIG_LIBOBJ_DIR' => 1, - 'AC_C_VOLATILE' => 1, - 'AC_TYPE_OFF_T' => 1, - 'AC_FUNC_CLOSEDIR_VOID' => 1, - 'AC_REPLACE_FNMATCH' => 1, - 'AC_PROG_LIBTOOL' => 1, - 'AC_FUNC_STAT' => 1, - 'AC_FUNC_WAIT3' => 1, - 'AC_HEADER_TIME' => 1, - 'AC_FUNC_LSTAT' => 1, - 'AC_STRUCT_TM' => 1, - 'AM_AUTOMAKE_VERSION' => 1, - 'AC_FUNC_GETMNTENT' => 1, - 'AC_TYPE_MODE_T' => 1, - 'AC_FUNC_STRTOD' => 1, - 'AC_CHECK_HEADERS' => 1, - 'AC_FUNC_STRNLEN' => 1, - 'm4_sinclude' => 1, - 'AC_PROG_CXX' => 1, - 'AC_PATH_X' => 1, - 'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK' => 1, - 'AC_PROG_AWK' => 1, - '_m4_warn' => 1, - 'AC_HEADER_STDC' => 1, - 'AC_HEADER_MAJOR' => 1, - 'AC_FUNC_ERROR_AT_LINE' => 1, - 'AC_PROG_GCC_TRADITIONAL' => 1, - 'AC_LIBSOURCE' => 1, - 'AC_FUNC_MBRTOWC' => 1, - 'AC_STRUCT_ST_BLOCKS' => 1, - 'AC_TYPE_SIGNAL' => 1, - 'AC_TYPE_UID_T' => 1, - 'AC_PROG_MAKE_SET' => 1, - 'AC_CONFIG_AUX_DIR' => 1, - 'm4_pattern_allow' => 1, - 'sinclude' => 1, - 'AC_DEFINE_TRACE_LITERAL' => 1, - 'AC_FUNC_STRERROR_R' => 1, - 'AC_PROG_CC' => 1, - 'AC_DECL_SYS_SIGLIST' => 1, - 'AC_FUNC_FORK' => 1, - 'AC_FUNC_STRCOLL' => 1, - 'AC_FUNC_VPRINTF' => 1, - 'AC_PROG_YACC' => 1, - 'AC_INIT' => 1, - 'AC_STRUCT_TIMEZONE' => 1, - 'AC_FUNC_CHOWN' => 1, - 'AC_SUBST' => 1, - 'AC_FUNC_ALLOCA' => 1, - 'AC_CANONICAL_HOST' => 1, - 'AC_FUNC_GETPGRP' => 1, - 'AC_PROG_RANLIB' => 1, - 'AM_INIT_AUTOMAKE' => 1, - 'AC_FUNC_SETPGRP' => 1, - 'AC_CONFIG_SUBDIRS' => 1, - 'AC_FUNC_MMAP' => 1, - 'AC_FUNC_REALLOC' => 1, - 'AC_TYPE_SIZE_T' => 1, - 'AC_CONFIG_LINKS' => 1, - 'AC_CHECK_TYPES' => 1, - 'AC_CHECK_MEMBERS' => 1, - 'AM_MAINTAINER_MODE' => 1, - 'AC_FUNC_UTIME_NULL' => 1, - 'AC_FUNC_SELECT_ARGTYPES' => 1, - 'AC_HEADER_STAT' => 1, - 'AC_FUNC_STRFTIME' => 1, - 'AC_PROG_CPP' => 1, - 'AC_C_INLINE' => 1, - 'AC_PROG_LEX' => 1, - 'AC_C_CONST' => 1, - 'AC_TYPE_PID_T' => 1, - 'AC_CONFIG_FILES' => 1, - 'include' => 1, - 'AC_FUNC_SETVBUF_REVERSED' => 1, - 'AC_PROG_INSTALL' => 1, - 'AM_GNU_GETTEXT' => 1, - 'AC_CHECK_LIB' => 1, - 'AC_FUNC_OBSTACK' => 1, - 'AC_FUNC_MALLOC' => 1, - 'AC_FUNC_GETGROUPS' => 1, - 'AC_FUNC_GETLOADAVG' => 1, - 'AH_OUTPUT' => 1, - 'AC_FUNC_FSEEKO' => 1, - 'AM_PROG_CC_C_O' => 1, - 'AC_FUNC_MKTIME' => 1, - 'AC_CANONICAL_SYSTEM' => 1, - 'AM_CONDITIONAL' => 1, - 'AC_CONFIG_HEADERS' => 1, - 'AC_HEADER_SYS_WAIT' => 1, - 'AC_PROG_LN_S' => 1, - 'AC_FUNC_MEMCMP' => 1, - 'm4_include' => 1, - 'AC_HEADER_DIRENT' => 1, - 'AC_CHECK_FUNCS' => 1 - } - ], 'Autom4te::Request' ) - ); - diff --git a/autom4te.cache/traces.0 b/autom4te.cache/traces.0 deleted file mode 100644 index 659eef34..00000000 --- a/autom4te.cache/traces.0 +++ /dev/null @@ -1,356 +0,0 @@ -m4trace:aclocal.m4:1054: -1- m4_include([m4/gettext.m4]) -m4trace:aclocal.m4:1055: -1- m4_include([m4/iconv.m4]) -m4trace:aclocal.m4:1056: -1- m4_include([m4/lib-ld.m4]) -m4trace:aclocal.m4:1057: -1- m4_include([m4/lib-link.m4]) -m4trace:aclocal.m4:1058: -1- m4_include([m4/lib-prefix.m4]) -m4trace:aclocal.m4:1059: -1- m4_include([m4/progtest.m4]) -m4trace:configure.ac:20: -1- AC_INIT([Red Hat elfutils], [0.97], [http://bugzilla.redhat.com/bugzilla/], [elfutils]) -m4trace:configure.ac:20: -1- m4_pattern_forbid([^_?A[CHUM]_]) -m4trace:configure.ac:20: -1- m4_pattern_forbid([_AC_]) -m4trace:configure.ac:20: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) -m4trace:configure.ac:20: -1- m4_pattern_allow([^AS_FLAGS$]) -m4trace:configure.ac:20: -1- m4_pattern_forbid([^_?m4_]) -m4trace:configure.ac:20: -1- m4_pattern_forbid([^dnl$]) -m4trace:configure.ac:20: -1- m4_pattern_forbid([^_?AS_]) -m4trace:configure.ac:20: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}]) -m4trace:configure.ac:20: -1- AC_SUBST([PATH_SEPARATOR]) -m4trace:configure.ac:20: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) -m4trace:configure.ac:20: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) -m4trace:configure.ac:20: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) -m4trace:configure.ac:20: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) -m4trace:configure.ac:20: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) -m4trace:configure.ac:20: -1- AC_SUBST([exec_prefix], [NONE]) -m4trace:configure.ac:20: -1- AC_SUBST([prefix], [NONE]) -m4trace:configure.ac:20: -1- AC_SUBST([program_transform_name], [s,x,x,]) -m4trace:configure.ac:20: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) -m4trace:configure.ac:20: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) -m4trace:configure.ac:20: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) -m4trace:configure.ac:20: -1- AC_SUBST([datadir], ['${prefix}/share']) -m4trace:configure.ac:20: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) -m4trace:configure.ac:20: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) -m4trace:configure.ac:20: -1- AC_SUBST([localstatedir], ['${prefix}/var']) -m4trace:configure.ac:20: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) -m4trace:configure.ac:20: -1- AC_SUBST([includedir], ['${prefix}/include']) -m4trace:configure.ac:20: -1- AC_SUBST([oldincludedir], ['/usr/include']) -m4trace:configure.ac:20: -1- AC_SUBST([infodir], ['${prefix}/info']) -m4trace:configure.ac:20: -1- AC_SUBST([mandir], ['${prefix}/man']) -m4trace:configure.ac:20: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) -m4trace:configure.ac:20: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ -#undef PACKAGE_NAME]) -m4trace:configure.ac:20: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) -m4trace:configure.ac:20: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME]) -m4trace:configure.ac:20: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) -m4trace:configure.ac:20: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ -#undef PACKAGE_VERSION]) -m4trace:configure.ac:20: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) -m4trace:configure.ac:20: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING]) -m4trace:configure.ac:20: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) -m4trace:configure.ac:20: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT]) -m4trace:configure.ac:20: -1- AC_SUBST([build_alias]) -m4trace:configure.ac:20: -1- AC_SUBST([host_alias]) -m4trace:configure.ac:20: -1- AC_SUBST([target_alias]) -m4trace:configure.ac:20: -1- AC_SUBST([DEFS]) -m4trace:configure.ac:20: -1- AC_SUBST([ECHO_C]) -m4trace:configure.ac:20: -1- AC_SUBST([ECHO_N]) -m4trace:configure.ac:20: -1- AC_SUBST([ECHO_T]) -m4trace:configure.ac:20: -1- AC_SUBST([LIBS]) -m4trace:configure.ac:22: -1- AC_CONFIG_AUX_DIR([config]) -m4trace:configure.ac:23: -1- AC_CONFIG_FILES([config/Makefile]) -m4trace:configure.ac:29: -1- AM_INIT_AUTOMAKE([gnits 1.7 dist-bzip2]) -m4trace:configure.ac:29: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) -m4trace:configure.ac:29: -1- AM_AUTOMAKE_VERSION([1.9.2]) -m4trace:configure.ac:29: -1- AC_PROG_INSTALL -m4trace:configure.ac:29: -1- AC_SUBST([INSTALL_PROGRAM]) -m4trace:configure.ac:29: -1- AC_SUBST([INSTALL_SCRIPT]) -m4trace:configure.ac:29: -1- AC_SUBST([INSTALL_DATA]) -m4trace:configure.ac:29: -1- AC_SUBST([CYGPATH_W]) -m4trace:configure.ac:29: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME']) -m4trace:configure.ac:29: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION']) -m4trace:configure.ac:29: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE]) -m4trace:configure.ac:29: -1- AH_OUTPUT([PACKAGE], [/* Name of package */ -#undef PACKAGE]) -m4trace:configure.ac:29: -1- AC_DEFINE_TRACE_LITERAL([VERSION]) -m4trace:configure.ac:29: -1- AH_OUTPUT([VERSION], [/* Version number of package */ -#undef VERSION]) -m4trace:configure.ac:29: -1- AC_SUBST([ACLOCAL]) -m4trace:configure.ac:29: -1- AC_SUBST([AUTOCONF]) -m4trace:configure.ac:29: -1- AC_SUBST([AUTOMAKE]) -m4trace:configure.ac:29: -1- AC_SUBST([AUTOHEADER]) -m4trace:configure.ac:29: -1- AC_SUBST([MAKEINFO]) -m4trace:configure.ac:29: -1- AC_SUBST([install_sh]) -m4trace:configure.ac:29: -1- AC_SUBST([STRIP]) -m4trace:configure.ac:29: -1- AC_SUBST([ac_ct_STRIP]) -m4trace:configure.ac:29: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) -m4trace:configure.ac:29: -1- AC_SUBST([mkdir_p]) -m4trace:configure.ac:29: -1- AC_PROG_AWK -m4trace:configure.ac:29: -1- AC_SUBST([AWK]) -m4trace:configure.ac:29: -1- AC_PROG_MAKE_SET -m4trace:configure.ac:29: -1- AC_SUBST([SET_MAKE]) -m4trace:configure.ac:29: -1- AC_SUBST([am__leading_dot]) -m4trace:configure.ac:29: -1- AC_SUBST([AMTAR]) -m4trace:configure.ac:29: -1- AC_SUBST([am__tar]) -m4trace:configure.ac:29: -1- AC_SUBST([am__untar]) -m4trace:configure.ac:32: -1- AC_CONFIG_FILES([Makefile]) -m4trace:configure.ac:33: -1- AC_CONFIG_HEADERS([config.h]) -m4trace:configure.ac:36: -1- AC_CONFIG_FILES([m4/Makefile]) -m4trace:configure.ac:39: -1- AC_CONFIG_FILES([elfutils.spec:config/elfutils.spec.in]) -m4trace:configure.ac:42: -1- AC_CANONICAL_HOST -m4trace:configure.ac:42: -1- AC_SUBST([build], [$ac_cv_build]) -m4trace:configure.ac:42: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) -m4trace:configure.ac:42: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) -m4trace:configure.ac:42: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) -m4trace:configure.ac:42: -1- AC_SUBST([host], [$ac_cv_host]) -m4trace:configure.ac:42: -1- AC_SUBST([host_cpu], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) -m4trace:configure.ac:42: -1- AC_SUBST([host_vendor], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) -m4trace:configure.ac:42: -1- AC_SUBST([host_os], [`echo $ac_cv_host | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) -m4trace:configure.ac:46: -2- AC_DEFINE_TRACE_LITERAL([USE_TLS]) -m4trace:configure.ac:47: -1- AH_OUTPUT([USE_TLS], [/* Defined if thread local storage should be used. */ -#undef USE_TLS]) -m4trace:configure.ac:52: -1- AC_PROG_CC -m4trace:configure.ac:52: -1- AC_SUBST([CC]) -m4trace:configure.ac:52: -1- AC_SUBST([CFLAGS]) -m4trace:configure.ac:52: -1- AC_SUBST([LDFLAGS]) -m4trace:configure.ac:52: -1- AC_SUBST([CPPFLAGS]) -m4trace:configure.ac:52: -1- AC_SUBST([CC]) -m4trace:configure.ac:52: -1- AC_SUBST([ac_ct_CC]) -m4trace:configure.ac:52: -1- AC_SUBST([CC]) -m4trace:configure.ac:52: -1- AC_SUBST([ac_ct_CC]) -m4trace:configure.ac:52: -1- AC_SUBST([CC]) -m4trace:configure.ac:52: -1- AC_SUBST([CC]) -m4trace:configure.ac:52: -1- AC_SUBST([ac_ct_CC]) -m4trace:configure.ac:52: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) -m4trace:configure.ac:52: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) -m4trace:configure.ac:52: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"]) -m4trace:configure.ac:52: -1- AC_SUBST([am__include]) -m4trace:configure.ac:52: -1- AC_SUBST([am__quote]) -m4trace:configure.ac:52: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -m4trace:configure.ac:52: -1- AC_SUBST([AMDEP_TRUE]) -m4trace:configure.ac:52: -1- AC_SUBST([AMDEP_FALSE]) -m4trace:configure.ac:52: -1- AC_SUBST([AMDEPBACKSLASH]) -m4trace:configure.ac:52: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) -m4trace:configure.ac:52: -1- AM_CONDITIONAL([am__fastdepCC], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) -m4trace:configure.ac:52: -1- AC_SUBST([am__fastdepCC_TRUE]) -m4trace:configure.ac:52: -1- AC_SUBST([am__fastdepCC_FALSE]) -m4trace:configure.ac:53: -1- AC_PROG_CPP -m4trace:configure.ac:53: -1- AC_SUBST([CPP]) -m4trace:configure.ac:53: -1- AC_SUBST([CPPFLAGS]) -m4trace:configure.ac:53: -1- AC_SUBST([CPP]) -m4trace:configure.ac:54: -1- AC_PROG_GCC_TRADITIONAL -m4trace:configure.ac:54: -1- AC_SUBST([EGREP]) -m4trace:configure.ac:55: -1- AM_GNU_GETTEXT([external]) -m4trace:configure.ac:55: -1- AC_SUBST([MKINSTALLDIRS]) -m4trace:configure.ac:55: -1- AC_SUBST([MSGFMT]) -m4trace:configure.ac:55: -1- AC_SUBST([GMSGFMT], [$ac_cv_path_GMSGFMT]) -m4trace:configure.ac:55: -1- AC_SUBST([XGETTEXT]) -m4trace:configure.ac:55: -1- AC_SUBST([MSGMERGE]) -m4trace:configure.ac:55: -1- _m4_warn([obsolete], [The macro `AC_OUTPUT_COMMANDS' is obsolete. -You should run autoupdate.], [autoconf/status.m4:318: AC_OUTPUT_COMMANDS is expanded from... -m4/gettext.m4:498: AM_PO_SUBDIRS is expanded from... -configure.ac:55: AM_PO_SUBDIRS is required by... -m4/gettext.m4:325: AM_GNU_GETTEXT is expanded from... -configure.ac:55: the top level]) -m4trace:configure.ac:55: -3- _m4_warn([obsolete], [The macro `_AC_OUTPUT_COMMANDS_CNT' is obsolete. -You should run autoupdate.], [autoconf/status.m4:321: _AC_OUTPUT_COMMANDS_CNT is expanded from... -autoconf/status.m4:318: AC_OUTPUT_COMMANDS is expanded from... -m4/gettext.m4:498: AM_PO_SUBDIRS is expanded from... -configure.ac:55: AM_PO_SUBDIRS is required by... -m4/gettext.m4:325: AM_GNU_GETTEXT is expanded from... -configure.ac:55: the top level]) -m4trace:configure.ac:55: -1- AC_SUBST([USE_NLS]) -m4trace:configure.ac:55: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... -autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... -m4/gettext.m4:325: AM_GNU_GETTEXT is expanded from... -configure.ac:55: the top level]) -m4trace:configure.ac:55: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... -autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... -m4/iconv.m4:75: AM_ICONV_LINK is expanded from... -m4/gettext.m4:325: AM_GNU_GETTEXT is expanded from... -configure.ac:55: the top level]) -m4trace:configure.ac:55: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... -autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... -m4/iconv.m4:75: AM_ICONV_LINK is expanded from... -m4/gettext.m4:325: AM_GNU_GETTEXT is expanded from... -configure.ac:55: the top level]) -m4trace:configure.ac:55: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ICONV]) -m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_ICONV], [/* Define if you have the iconv() function. */ -#undef HAVE_ICONV]) -m4trace:configure.ac:55: -1- AC_SUBST([LIBICONV]) -m4trace:configure.ac:55: -1- AC_SUBST([LTLIBICONV]) -m4trace:configure.ac:55: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... -autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... -m4/gettext.m4:325: AM_GNU_GETTEXT is expanded from... -configure.ac:55: the top level]) -m4trace:configure.ac:55: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... -autoconf/general.m4:1799: AC_CACHE_VAL is expanded from... -autoconf/general.m4:1808: AC_CACHE_CHECK is expanded from... -m4/gettext.m4:325: AM_GNU_GETTEXT is expanded from... -configure.ac:55: the top level]) -m4trace:configure.ac:55: -1- AC_DEFINE_TRACE_LITERAL([ENABLE_NLS]) -m4trace:configure.ac:55: -1- AH_OUTPUT([ENABLE_NLS], [/* Define to 1 if translation of program messages to the user\'s native - language is requested. */ -#undef ENABLE_NLS]) -m4trace:configure.ac:55: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETTEXT]) -m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_GETTEXT], [/* Define if the GNU gettext() function is already present or preinstalled. */ -#undef HAVE_GETTEXT]) -m4trace:configure.ac:55: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DCGETTEXT]) -m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_DCGETTEXT], [/* Define if the GNU dcgettext() function is already present or preinstalled. - */ -#undef HAVE_DCGETTEXT]) -m4trace:configure.ac:55: -1- AC_SUBST([INTLLIBS]) -m4trace:configure.ac:55: -1- AC_SUBST([LIBINTL]) -m4trace:configure.ac:55: -1- AC_SUBST([LTLIBINTL]) -m4trace:configure.ac:55: -1- AC_SUBST([POSUB]) -m4trace:configure.ac:56: -1- AC_PROG_RANLIB -m4trace:configure.ac:56: -1- AC_SUBST([RANLIB]) -m4trace:configure.ac:56: -1- AC_SUBST([ac_ct_RANLIB]) -m4trace:configure.ac:57: -1- AC_PROG_YACC -m4trace:configure.ac:57: -1- AC_SUBST([YACC]) -m4trace:configure.ac:58: -1- AC_PROG_LEX -m4trace:configure.ac:58: -1- AC_SUBST([LEX]) -m4trace:configure.ac:58: -1- AC_CHECK_LIB([fl], [yywrap], [LEXLIB="-lfl"], [AC_CHECK_LIB(l, yywrap, LEXLIB="-ll")]) -m4trace:configure.ac:58: -1- AC_CHECK_LIB([l], [yywrap], [LEXLIB="-ll"]) -m4trace:configure.ac:58: -1- AC_SUBST([LEXLIB]) -m4trace:configure.ac:58: -1- AC_SUBST([LEX_OUTPUT_ROOT], [$ac_cv_prog_lex_root]) -m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([YYTEXT_POINTER]) -m4trace:configure.ac:58: -1- AH_OUTPUT([YYTEXT_POINTER], [/* Define to 1 if `lex\' declares `yytext\' as a `char *\' by default, not a - `char[]\'. */ -#undef YYTEXT_POINTER]) -m4trace:configure.ac:71: -1- AC_SUBST([LOCALEDIR]) -m4trace:configure.ac:72: -1- AC_DEFINE_TRACE_LITERAL([LOCALEDIR]) -m4trace:configure.ac:73: -1- AH_OUTPUT([LOCALEDIR], [/* Directory to place translation files in. */ -#undef LOCALEDIR]) -m4trace:configure.ac:76: -1- AC_SUBST([DATADIRNAME]) -m4trace:configure.ac:81: -1- AC_DEFINE_TRACE_LITERAL([_FILE_OFFSET_BITS]) -m4trace:configure.ac:81: -1- AH_OUTPUT([_FILE_OFFSET_BITS], [/* Number of bits in a file offset, on hosts where this is settable. */ -#undef _FILE_OFFSET_BITS]) -m4trace:configure.ac:81: -1- AC_DEFINE_TRACE_LITERAL([_LARGE_FILES]) -m4trace:configure.ac:81: -1- AH_OUTPUT([_LARGE_FILES], [/* Define for large files, on AIX-style hosts. */ -#undef _LARGE_FILES]) -m4trace:configure.ac:100: -1- AC_DEFINE_TRACE_LITERAL([NATIVE_ELF]) -m4trace:configure.ac:102: -1- AH_OUTPUT([NATIVE_ELF], [/* Define to 32 or 64 if a specific implementation is wanted. */ -#undef NATIVE_ELF]) -m4trace:configure.ac:103: -1- AM_CONDITIONAL([NATIVE_LD], [test "$native_ld" = yes]) -m4trace:configure.ac:103: -1- AC_SUBST([NATIVE_LD_TRUE]) -m4trace:configure.ac:103: -1- AC_SUBST([NATIVE_LD_FALSE]) -m4trace:configure.ac:108: -1- AC_SUBST([base_cpu]) -m4trace:configure.ac:124: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. -You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... -autoconf/general.m4:1303: AC_ARG_ENABLE is expanded from... -configure.ac:124: the top level]) -m4trace:configure.ac:128: -1- AM_CONDITIONAL([MUDFLAP], [test "$use_mudflap" = yes]) -m4trace:configure.ac:128: -1- AC_SUBST([MUDFLAP_TRUE]) -m4trace:configure.ac:128: -1- AC_SUBST([MUDFLAP_FALSE]) -m4trace:configure.ac:134: -1- AC_CONFIG_FILES([doc/Makefile]) -m4trace:configure.ac:137: -1- AC_CONFIG_FILES([lib/Makefile]) -m4trace:configure.ac:140: -1- AC_CONFIG_FILES([libelf/Makefile libelf-po/Makefile.in]) -m4trace:configure.ac:143: -1- AC_CONFIG_FILES([libebl/Makefile]) -m4trace:configure.ac:146: -1- AC_CONFIG_FILES([libdw/Makefile]) -m4trace:configure.ac:149: -1- AC_CONFIG_FILES([libcpu/Makefile]) -m4trace:configure.ac:152: -1- AC_CONFIG_FILES([libasm/Makefile]) -m4trace:configure.ac:155: -1- AC_CONFIG_FILES([src/Makefile po/Makefile.in]) -m4trace:configure.ac:158: -1- AC_CONFIG_FILES([tests/Makefile]) -m4trace:configure.ac:251: -1- AH_OUTPUT([zzzz1], [ -/* Eventually we will allow multi-threaded applications to use the - libraries. Therefore we will add the necessary locking although - the macros used expand to nothing for now. */ -#define lock_lock(lock) ((void) (lock)) -#define rwlock_define(class,name) class int name -#define rwlock_init(lock) ((void) (lock)) -#define rwlock_fini(lock) ((void) (lock)) -#define rwlock_rdlock(lock) ((void) (lock)) -#define rwlock_wrlock(lock) ((void) (lock)) -#define rwlock_unlock(lock) ((void) (lock)) -#define tls_key_t void * -#define key_create(keyp, freefct) (1) -#define getspecific(key) key -#define setspecific(key,val) key = val -#define once_define(class,name) class int name -#define once_execute(name,fct) \\ - do { \\ - if (name == 0) \\ - fct (); \\ - name = 1; \\ - } while (0) - -/* gettext helper macro. */ -#define N_(Str) Str - -/* Compiler-specific definitions. */ -#define strong_alias(name, aliasname) \\ - extern __typeof (name) aliasname __attribute__ ((alias (#name))); - -#ifdef __i386__ -# define internal_function_def __attribute__ ((regparm (3), stdcall)) -#else -# define internal_function_def /* nothing */ -#endif - -# define internal_function \\ - internal_function_def __attribute__ ((visibility ("internal"))) -# define internal_strong_alias(name, aliasname) \\ - extern __typeof (name) aliasname __attribute__ ((alias (#name), visibility ("internal"))) internal_function_def; - -#define attribute_hidden \\ - __attribute__ ((visibility ("hidden"))) - -/* Define ALLOW_UNALIGNED if the architecture allows operations on - unaligned memory locations. */ -#if defined __i386__ || defined __alpha__ || defined __x86_64__ || defined __ia64__ -# define ALLOW_UNALIGNED 1 -#else -# define ALLOW_UNALIGNED 0 -#endif - -#define unlikely(expr) __builtin_expect (expr, 0) -#define likely(expr) __builtin_expect (expr, 1) - -#define obstack_calloc(ob, size) \\ - ({ size_t _s = (size); memset (obstack_alloc (ob, _s), \'\\0\', _s); }) -#define obstack_strdup(ob, str) \\ - ({ const char *_s = (str); obstack_copy0 (ob, _s, strlen (_s)); }) -#define obstack_strndup(ob, str, n) \\ - ({ const char *_s = (str); obstack_copy0 (ob, _s, strnlen (_s, n)); }) - -#if __STDC_VERSION__ >= 199901L -# define flexarr_size /* empty */ -#else -# define flexarr_size 0 -#endif - -/* Calling conventions. */ -#ifdef __i386__ -# define CALLING_CONVENTION regparm (3), stdcall -# define AND_CALLING_CONVENTION , regparm (3), stdcall -#else -# define CALLING_CONVENTION -# define AND_CALLING_CONVENTION -#endif - -/* Avoid PLT entries. */ -#ifdef PIC -# define INTUSE(name) _INTUSE(name) -# define _INTUSE(name) __##name##_internal -# define INTDEF(name) _INTDEF(name) -# define _INTDEF(name) \\ - extern __typeof__ (name) __##name##_internal __attribute__ ((alias (#name))); -#else -# define INTUSE(name) name -# define INTDEF(name) /* empty */ -#endif -]) -m4trace:configure.ac:253: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) -m4trace:configure.ac:253: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) diff --git a/config-compat-cygwin.h b/config-compat-cygwin.h deleted file mode 100644 index c256e795..00000000 --- a/config-compat-cygwin.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef CONFIG_COMPAT_CYGWIN_H -#define CONFIG_COMPAT_CYGWIN_H - -#include <byteswap.h> -#include <endian.h> -#include <libintl.h> - -#endif diff --git a/config-compat-darwin.h b/config-compat-darwin.h deleted file mode 100644 index 7953bb6a..00000000 --- a/config-compat-darwin.h +++ /dev/null @@ -1,83 +0,0 @@ -#ifndef CONFIG_COMPAT_DARWIN_H -#define CONFIG_COMPAT_DARWIN_H - -#define gettext -#define _gettext -#define _dgettext - -typedef unsigned long long __off64_t; - -#define __LITTLE_ENDIAN (1234) -#define __BIG_ENDIAN (4321) -#define __BYTE_ORDER __LITTLE_ENDIAN - -#include <stddef.h> -#include <locale.h> //LC_MESSAGES -#include <assert.h> -#include <stdlib.h> -#include <stdarg.h> -#include <string.h> -#include <errno.h> -#include <stdio.h> - -#define dgettext(domainname, msgid) dcgettext (domainname, msgid, LC_MESSAGES) - -static inline void __attribute__((noreturn)) error(int status, int errnum, const char *fmt, ...) -{ - va_list lst; - va_start(lst, fmt); - vfprintf(stderr, fmt, lst); - fprintf(stderr, "error %d: %s\n", errnum, strerror(errno)); - va_end(lst); - exit(status); -} - -static inline char *dcgettext (char *__domainname, char *__msgid, int __category) -{ - error(EXIT_FAILURE, 0, "%s not implemented!", __FUNCTION__); - return NULL; -} - -static inline size_t strnlen (const char *__string, size_t __maxlen) -{ - int len = 0; - while (__maxlen-- && *__string++) - len++; - return len; -} - -static inline void *mempcpy (void * __dest, const void * __src, size_t __n) -{ - memcpy(__dest, __src, __n); - return ((char *)__dest) + __n; -} - -#define __mempcpy mempcpy - -static inline wchar_t *wmempcpy (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, size_t __n) -{ - error(EXIT_FAILURE, 0, "%s not implemented!", __FUNCTION__); - return NULL; -} - - -static inline unsigned short bswap_16(unsigned short val) -{ - return ((val & 0xff) << 8) | ((val >> 8) & 0xff); -} - -static inline unsigned long bswap_32(unsigned long val) -{ - return bswap_16((unsigned short)val) << 16 | - bswap_16((unsigned short)(val >> 16)); -} - -static inline unsigned long long bswap_64(unsigned long long val) -{ - return ((((unsigned long long)bswap_32(val)) << 32) | - (((unsigned long long)bswap_32(val >> 32)) & 0xffffffffULL)); -} - -extern int ___libelf_fill_byte; - -#endif /*CONFIG_COMPAT_DARWIN_H*/ diff --git a/config-compat-linux.h b/config-compat-linux.h deleted file mode 100644 index 2730de1e..00000000 --- a/config-compat-linux.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef CONFIG_COMPAT_LINUX_H -#define CONFIG_COMPAT_LINUX_H - -#include <byteswap.h> -#include <endian.h> -#include <libintl.h> - -#endif diff --git a/config.h b/config.h deleted file mode 100644 index a57e25e9..00000000 --- a/config.h +++ /dev/null @@ -1,146 +0,0 @@ -/* config.h. Generated by configure. */ -/* config.h.in. Generated from configure.ac by autoheader. */ - -/* Define to 1 if translation of program messages to the user's native - language is requested. */ -#define ENABLE_NLS 1 - -/* Define if the GNU dcgettext() function is already present or preinstalled. - */ -#define HAVE_DCGETTEXT 1 - -/* Define if the GNU gettext() function is already present or preinstalled. */ -#define HAVE_GETTEXT 1 - -/* Define if you have the iconv() function. */ -/* #undef HAVE_ICONV */ - -/* Directory to place translation files in. */ -#define LOCALEDIR "${prefix}/share" - -/* Define to 32 or 64 if a specific implementation is wanted. */ -/* #undef NATIVE_ELF */ - -/* Name of package */ -#define PACKAGE "elfutils" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "http://bugzilla.redhat.com/bugzilla/" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "Red Hat elfutils" - -/* Define to the full name and version of this package. */ -#define PACKAGE_STRING "Red Hat elfutils 0.97" - -/* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "elfutils" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION "0.97" - -/* Defined if thread local storage should be used. */ -/* #undef USE_TLS */ - -/* Version number of package */ -#define VERSION "0.97" - -/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a - `char[]'. */ -#define YYTEXT_POINTER 1 - -/* Number of bits in a file offset, on hosts where this is settable. */ -#define _FILE_OFFSET_BITS 64 - -/* Define for large files, on AIX-style hosts. */ -/* #undef _LARGE_FILES */ - - -/* Eventually we will allow multi-threaded applications to use the - libraries. Therefore we will add the necessary locking although - the macros used expand to nothing for now. */ -#define lock_lock(lock) ((void) (lock)) -#define rwlock_define(class,name) class int name -#define rwlock_init(lock) ((void) (lock)) -#define rwlock_fini(lock) ((void) (lock)) -#define rwlock_rdlock(lock) ((void) (lock)) -#define rwlock_wrlock(lock) ((void) (lock)) -#define rwlock_unlock(lock) ((void) (lock)) -#define tls_key_t void * -#define key_create(keyp, freefct) (1) -#define getspecific(key) key -#define setspecific(key,val) key = val -#define once_define(class,name) class int name -#define once_execute(name,fct) \ - do { \ - if (name == 0) \ - fct (); \ - name = 1; \ - } while (0) - -/* gettext helper macro. */ -#define N_(Str) Str - -/* Compiler-specific definitions. */ -#define strong_alias(name, aliasname) \ - extern __typeof (name) aliasname __attribute__ ((alias (#name))); - -#ifdef __i386__ -# define internal_function_def __attribute__ ((regparm (3), stdcall)) -#else -# define internal_function_def /* nothing */ -#endif - -# define internal_function \ - internal_function_def __attribute__ ((visibility ("internal"))) -# define internal_strong_alias(name, aliasname) \ - extern __typeof (name) aliasname __attribute__ ((alias (#name), visibility ("internal"))) internal_function_def; - -#define attribute_hidden \ - __attribute__ ((visibility ("hidden"))) - -/* Define ALLOW_UNALIGNED if the architecture allows operations on - unaligned memory locations. */ -#if defined __i386__ || defined __alpha__ || defined __x86_64__ || defined __ia64__ -# define ALLOW_UNALIGNED 1 -#else -# define ALLOW_UNALIGNED 0 -#endif - -#define unlikely(expr) __builtin_expect (expr, 0) -#define likely(expr) __builtin_expect (expr, 1) - -#define obstack_calloc(ob, size) \ - ({ size_t _s = (size); memset (obstack_alloc (ob, _s), '\0', _s); }) -#define obstack_strdup(ob, str) \ - ({ const char *_s = (str); obstack_copy0 (ob, _s, strlen (_s)); }) -#define obstack_strndup(ob, str, n) \ - ({ const char *_s = (str); obstack_copy0 (ob, _s, strnlen (_s, n)); }) - -#if __STDC_VERSION__ >= 199901L -# define flexarr_size /* empty */ -#else -# define flexarr_size 0 -#endif - -/* Calling conventions. */ -#ifdef __i386__ -# define CALLING_CONVENTION regparm (3), stdcall -# define AND_CALLING_CONVENTION , regparm (3), stdcall -#else -# define CALLING_CONVENTION -# define AND_CALLING_CONVENTION -#endif - -/* Avoid PLT entries. */ -#ifdef PIC -# define INTUSE(name) _INTUSE(name) -# define _INTUSE(name) __##name##_internal -# define INTDEF(name) _INTDEF(name) -# define _INTDEF(name) \ - extern __typeof__ (name) __##name##_internal __attribute__ ((alias (#name))); -#else -# define INTUSE(name) name -# define INTDEF(name) /* empty */ -#endif - diff --git a/config.h.in b/config.h.in deleted file mode 100644 index ce973f3c..00000000 --- a/config.h.in +++ /dev/null @@ -1,145 +0,0 @@ -/* config.h.in. Generated from configure.ac by autoheader. */ - -/* Define to 1 if translation of program messages to the user's native - language is requested. */ -#undef ENABLE_NLS - -/* Define if the GNU dcgettext() function is already present or preinstalled. - */ -#undef HAVE_DCGETTEXT - -/* Define if the GNU gettext() function is already present or preinstalled. */ -#undef HAVE_GETTEXT - -/* Define if you have the iconv() function. */ -#undef HAVE_ICONV - -/* Directory to place translation files in. */ -#undef LOCALEDIR - -/* Define to 32 or 64 if a specific implementation is wanted. */ -#undef NATIVE_ELF - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* Defined if thread local storage should be used. */ -#undef USE_TLS - -/* Version number of package */ -#undef VERSION - -/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a - `char[]'. */ -#undef YYTEXT_POINTER - -/* Number of bits in a file offset, on hosts where this is settable. */ -#undef _FILE_OFFSET_BITS - -/* Define for large files, on AIX-style hosts. */ -#undef _LARGE_FILES - - -/* Eventually we will allow multi-threaded applications to use the - libraries. Therefore we will add the necessary locking although - the macros used expand to nothing for now. */ -#define lock_lock(lock) ((void) (lock)) -#define rwlock_define(class,name) class int name -#define rwlock_init(lock) ((void) (lock)) -#define rwlock_fini(lock) ((void) (lock)) -#define rwlock_rdlock(lock) ((void) (lock)) -#define rwlock_wrlock(lock) ((void) (lock)) -#define rwlock_unlock(lock) ((void) (lock)) -#define tls_key_t void * -#define key_create(keyp, freefct) (1) -#define getspecific(key) key -#define setspecific(key,val) key = val -#define once_define(class,name) class int name -#define once_execute(name,fct) \ - do { \ - if (name == 0) \ - fct (); \ - name = 1; \ - } while (0) - -/* gettext helper macro. */ -#define N_(Str) Str - -/* Compiler-specific definitions. */ -#define strong_alias(name, aliasname) \ - extern __typeof (name) aliasname __attribute__ ((alias (#name))); - -#ifdef __i386__ -# define internal_function_def __attribute__ ((regparm (3), stdcall)) -#else -# define internal_function_def /* nothing */ -#endif - -# define internal_function \ - internal_function_def __attribute__ ((visibility ("internal"))) -# define internal_strong_alias(name, aliasname) \ - extern __typeof (name) aliasname __attribute__ ((alias (#name), visibility ("internal"))) internal_function_def; - -#define attribute_hidden \ - __attribute__ ((visibility ("hidden"))) - -/* Define ALLOW_UNALIGNED if the architecture allows operations on - unaligned memory locations. */ -#if defined __i386__ || defined __alpha__ || defined __x86_64__ || defined __ia64__ -# define ALLOW_UNALIGNED 1 -#else -# define ALLOW_UNALIGNED 0 -#endif - -#define unlikely(expr) __builtin_expect (expr, 0) -#define likely(expr) __builtin_expect (expr, 1) - -#define obstack_calloc(ob, size) \ - ({ size_t _s = (size); memset (obstack_alloc (ob, _s), '\0', _s); }) -#define obstack_strdup(ob, str) \ - ({ const char *_s = (str); obstack_copy0 (ob, _s, strlen (_s)); }) -#define obstack_strndup(ob, str, n) \ - ({ const char *_s = (str); obstack_copy0 (ob, _s, strnlen (_s, n)); }) - -#if __STDC_VERSION__ >= 199901L -# define flexarr_size /* empty */ -#else -# define flexarr_size 0 -#endif - -/* Calling conventions. */ -#ifdef __i386__ -# define CALLING_CONVENTION regparm (3), stdcall -# define AND_CALLING_CONVENTION , regparm (3), stdcall -#else -# define CALLING_CONVENTION -# define AND_CALLING_CONVENTION -#endif - -/* Avoid PLT entries. */ -#ifdef PIC -# define INTUSE(name) _INTUSE(name) -# define _INTUSE(name) __##name##_internal -# define INTDEF(name) _INTDEF(name) -# define _INTDEF(name) \ - extern __typeof__ (name) __##name##_internal __attribute__ ((alias (#name))); -#else -# define INTUSE(name) name -# define INTDEF(name) /* empty */ -#endif - diff --git a/config.log b/config.log deleted file mode 100644 index aa5d5d5f..00000000 --- a/config.log +++ /dev/null @@ -1,556 +0,0 @@ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by Red Hat elfutils configure 0.97, which was -generated by GNU Autoconf 2.59. Invocation command line was - - $ ./configure --prefix /work/elfutils/google/linux-install-elfutils-0.97/ --no-create --no-recursion - -## --------- ## -## Platform. ## -## --------- ## - -hostname = in2it.corp.google.com -uname -m = i686 -uname -r = 2.6.16.11-gg1 -uname -s = Linux -uname -v = #1 SMP Wed Apr 26 14:42:26 PDT 2006 - -/usr/bin/uname -p = unknown -/bin/uname -X = unknown - -/bin/arch = i686 -/usr/bin/arch -k = unknown -/usr/convex/getsysinfo = unknown -hostinfo = unknown -/bin/machine = unknown -/usr/bin/oslevel = unknown -/bin/universe = unknown - -PATH: /usr/local/scripts -PATH: /usr/local/symlinks -PATH: /usr/local/sbin -PATH: /usr/local/bin -PATH: /usr/sbin -PATH: /usr/bin -PATH: /sbin -PATH: /bin -PATH: /usr/bin/X11 -PATH: /usr/games -PATH: /work/android/device/prebuilt/Linux/toolchain/bin/ -PATH: /home/build/public/google/tools/ -PATH: /work/elfcopy -PATH: /work/aldd -PATH: /work/symchange -PATH: /work/lsd -PATH: /work/elfutils-0.97-install/bin/ -PATH: . -PATH: /home/malchev/bin -PATH: /work/android/device/out/linux-arm-release/host/bin -PATH: /work/android/device/prebuilt/Linux/toolchain/arm-elf -PATH: /work/android/device/prebuilt/Linux/toolchain/bin/ -PATH: /home/build/public/google/tools/ -PATH: /work/elfcopy -PATH: /work/aldd -PATH: /work/soslim -PATH: /work/lsd -PATH: /work/elfutils-0.97-install/bin/ -PATH: . - - -## ----------- ## -## Core tests. ## -## ----------- ## - -configure:1345: checking for a BSD-compatible install -configure:1400: result: /usr/bin/install -c -configure:1411: checking whether build environment is sane -configure:1454: result: yes -configure:1519: checking for gawk -configure:1535: found /usr/bin/gawk -configure:1545: result: gawk -configure:1555: checking whether make sets $(MAKE) -configure:1575: result: yes -configure:1774: checking build system type -configure:1792: result: i686-pc-linux-gnu -configure:1800: checking host system type -configure:1814: result: i686-pc-linux-gnu -configure:1882: checking for gcc -configure:1898: found /usr/bin/gcc -configure:1908: result: gcc -configure:2152: checking for C compiler version -configure:2155: gcc --version </dev/null >&5 -gcc (GCC) 3.3.5 (Debian 1:3.3.5-8ubuntu2.1) -Copyright (C) 2003 Free Software Foundation, Inc. -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -configure:2158: $? = 0 -configure:2160: gcc -v </dev/null >&5 -Reading specs from /usr/lib/gcc-lib/i486-linux/3.3.5/specs -Configured with: ../src/configure -v --enable-languages=c,c++,java,f77,pascal,objc,ada,treelang --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-gxx-include-dir=/usr/include/c++/3.3 --enable-shared --with-system-zlib --enable-nls --without-included-gettext --enable-__cxa_atexit --enable-clocale=gnu --enable-debug --enable-java-gc=boehm --enable-java-awt=xlib --enable-objc-gc i486-linux -Thread model: posix -gcc version 3.3.5 (Debian 1:3.3.5-8ubuntu2.1) -configure:2163: $? = 0 -configure:2165: gcc -V </dev/null >&5 -gcc: `-V' option must have argument -configure:2168: $? = 1 -configure:2191: checking for C compiler default output file name -configure:2194: gcc conftest.c >&5 -configure:2197: $? = 0 -configure:2243: result: a.out -configure:2248: checking whether the C compiler works -configure:2254: ./a.out -configure:2257: $? = 0 -configure:2274: result: yes -configure:2281: checking whether we are cross compiling -configure:2283: result: no -configure:2286: checking for suffix of executables -configure:2288: gcc -o conftest conftest.c >&5 -configure:2291: $? = 0 -configure:2316: result: -configure:2322: checking for suffix of object files -configure:2343: gcc -c conftest.c >&5 -configure:2346: $? = 0 -configure:2368: result: o -configure:2372: checking whether we are using the GNU C compiler -configure:2396: gcc -c conftest.c >&5 -configure:2402: $? = 0 -configure:2405: test -z || test ! -s conftest.err -configure:2408: $? = 0 -configure:2411: test -s conftest.o -configure:2414: $? = 0 -configure:2427: result: yes -configure:2433: checking whether gcc accepts -g -configure:2454: gcc -c -g conftest.c >&5 -configure:2460: $? = 0 -configure:2463: test -z || test ! -s conftest.err -configure:2466: $? = 0 -configure:2469: test -s conftest.o -configure:2472: $? = 0 -configure:2483: result: yes -configure:2500: checking for gcc option to accept ANSI C -configure:2570: gcc -c -g -O2 conftest.c >&5 -configure:2576: $? = 0 -configure:2579: test -z || test ! -s conftest.err -configure:2582: $? = 0 -configure:2585: test -s conftest.o -configure:2588: $? = 0 -configure:2606: result: none needed -configure:2624: gcc -c -g -O2 conftest.c >&5 -conftest.c:2: error: syntax error before "me" -configure:2630: $? = 1 -configure: failed program was: -| #ifndef __cplusplus -| choke me -| #endif -configure:2771: checking for style of include used by make -configure:2799: result: GNU -configure:2827: checking dependency style of gcc -configure:2917: result: gcc3 -configure:2939: checking how to run the C preprocessor -configure:2974: gcc -E conftest.c -configure:2980: $? = 0 -configure:3012: gcc -E conftest.c -conftest.c:11:28: ac_nonexistent.h: No such file or directory -configure:3018: $? = 1 -configure: failed program was: -| /* confdefs.h. */ -| -| #define PACKAGE_NAME "Red Hat elfutils" -| #define PACKAGE_TARNAME "elfutils" -| #define PACKAGE_VERSION "0.97" -| #define PACKAGE_STRING "Red Hat elfutils 0.97" -| #define PACKAGE_BUGREPORT "http://bugzilla.redhat.com/bugzilla/" -| #define PACKAGE "elfutils" -| #define VERSION "0.97" -| /* end confdefs.h. */ -| #include <ac_nonexistent.h> -configure:3057: result: gcc -E -configure:3081: gcc -E conftest.c -configure:3087: $? = 0 -configure:3119: gcc -E conftest.c -conftest.c:11:28: ac_nonexistent.h: No such file or directory -configure:3125: $? = 1 -configure: failed program was: -| /* confdefs.h. */ -| -| #define PACKAGE_NAME "Red Hat elfutils" -| #define PACKAGE_TARNAME "elfutils" -| #define PACKAGE_VERSION "0.97" -| #define PACKAGE_STRING "Red Hat elfutils 0.97" -| #define PACKAGE_BUGREPORT "http://bugzilla.redhat.com/bugzilla/" -| #define PACKAGE "elfutils" -| #define VERSION "0.97" -| /* end confdefs.h. */ -| #include <ac_nonexistent.h> -configure:3170: checking for egrep -configure:3180: result: grep -E -configure:3186: checking whether gcc needs -traditional -configure:3228: result: no -configure:3250: checking for msgfmt -configure:3278: result: /usr/bin/msgfmt -configure:3287: checking for gmsgfmt -configure:3318: result: /usr/bin/msgfmt -configure:3328: checking for xgettext -configure:3356: result: /usr/bin/xgettext -configure:3367: checking for msgmerge -configure:3394: result: /usr/bin/msgmerge -configure:3456: checking for ld used by GCC -configure:3519: result: /usr/bin/ld -configure:3528: checking if the linker (/usr/bin/ld) is GNU ld -GNU ld version 2.15 -configure:3540: result: yes -configure:3546: checking for shared library run path origin -configure:3559: result: done -configure:3944: checking whether NLS is requested -configure:3953: result: yes -configure:3970: checking for GNU gettext in libc -configure:3994: gcc -o conftest -g -O2 conftest.c >&5 -configure:4000: $? = 0 -configure:4003: test -z || test ! -s conftest.err -configure:4006: $? = 0 -configure:4009: test -s conftest -configure:4012: $? = 0 -configure:4024: result: yes -configure:4791: checking for ranlib -configure:4807: found /usr/bin/ranlib -configure:4818: result: ranlib -configure:4834: checking for bison -configure:4850: found /usr/bin/bison -configure:4860: result: bison -y -configure:4875: checking for flex -configure:4891: found /usr/bin/flex -configure:4901: result: flex -configure:4914: checking for yywrap in -lfl -configure:4944: gcc -o conftest -g -O2 conftest.c -lfl >&5 -configure:4950: $? = 0 -configure:4953: test -z || test ! -s conftest.err -configure:4956: $? = 0 -configure:4959: test -s conftest -configure:4962: $? = 0 -configure:4975: result: yes -configure:5052: checking lex output file root -configure:5063: flex conftest.l -configure:5066: $? = 0 -configure:5078: result: lex.yy -configure:5083: checking whether yytext is a pointer -configure:5099: gcc -o conftest -g -O2 conftest.c -lfl >&5 -configure:5105: $? = 0 -configure:5108: test -z || test ! -s conftest.err -configure:5111: $? = 0 -configure:5114: test -s conftest -configure:5117: $? = 0 -configure:5131: result: yes -configure:5146: checking for gcc with C99 support -configure:5157: gcc -c -g -O2 -std=gnu99 conftest.c >&5 -configure:5163: $? = 0 -configure:5166: test -z || test ! -s conftest.err -configure:5169: $? = 0 -configure:5172: test -s conftest.o -configure:5175: $? = 0 -configure:5187: result: yes -configure:5215: checking for special C compiler options needed for large files -configure:5312: result: no -configure:5318: checking for _FILE_OFFSET_BITS value needed for large files -configure:5349: gcc -c -g -O2 conftest.c >&5 -conftest.c:22: warning: left shift count >= width of type -conftest.c:22: warning: left shift count >= width of type -conftest.c:24: error: size of array `off_t_is_large' is negative -configure:5355: $? = 1 -configure: failed program was: -| /* confdefs.h. */ -| -| #define PACKAGE_NAME "Red Hat elfutils" -| #define PACKAGE_TARNAME "elfutils" -| #define PACKAGE_VERSION "0.97" -| #define PACKAGE_STRING "Red Hat elfutils 0.97" -| #define PACKAGE_BUGREPORT "http://bugzilla.redhat.com/bugzilla/" -| #define PACKAGE "elfutils" -| #define VERSION "0.97" -| #define ENABLE_NLS 1 -| #define HAVE_GETTEXT 1 -| #define HAVE_DCGETTEXT 1 -| #define YYTEXT_POINTER 1 -| #define LOCALEDIR "${prefix}/share" -| /* end confdefs.h. */ -| #include <sys/types.h> -| /* Check that off_t can represent 2**63 - 1 correctly. -| We can't simply define LARGE_OFF_T to be 9223372036854775807, -| since some C++ compilers masquerading as C compilers -| incorrectly reject 9223372036854775807. */ -| #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) -| int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 -| && LARGE_OFF_T % 2147483647 == 1) -| ? 1 : -1]; -| int -| main () -| { -| -| ; -| return 0; -| } -configure:5401: gcc -c -g -O2 conftest.c >&5 -configure:5407: $? = 0 -configure:5410: test -z || test ! -s conftest.err -configure:5413: $? = 0 -configure:5416: test -s conftest.o -configure:5419: $? = 0 -configure:5431: result: 64 -configure:5441: checking for _LARGE_FILES value needed for large files -configure:5472: gcc -c -g -O2 conftest.c >&5 -configure:5478: $? = 0 -configure:5481: test -z || test ! -s conftest.err -configure:5484: $? = 0 -configure:5487: test -s conftest.o -configure:5490: $? = 0 -configure:5554: result: no -configure:5836: creating ./config.status - -## ---------------- ## -## Cache variables. ## -## ---------------- ## - -ac_cv_build=i686-pc-linux-gnu -ac_cv_build_alias=i686-pc-linux-gnu -ac_cv_c99=yes -ac_cv_c_compiler_gnu=yes -ac_cv_env_CC_set= -ac_cv_env_CC_value= -ac_cv_env_CFLAGS_set= -ac_cv_env_CFLAGS_value= -ac_cv_env_CPPFLAGS_set= -ac_cv_env_CPPFLAGS_value= -ac_cv_env_CPP_set= -ac_cv_env_CPP_value= -ac_cv_env_LDFLAGS_set= -ac_cv_env_LDFLAGS_value= -ac_cv_env_build_alias_set= -ac_cv_env_build_alias_value= -ac_cv_env_host_alias_set= -ac_cv_env_host_alias_value= -ac_cv_env_target_alias_set= -ac_cv_env_target_alias_value= -ac_cv_exeext= -ac_cv_host=i686-pc-linux-gnu -ac_cv_host_alias=i686-pc-linux-gnu -ac_cv_lib_fl_yywrap=yes -ac_cv_objext=o -ac_cv_path_GMSGFMT=/usr/bin/msgfmt -ac_cv_path_MSGFMT=/usr/bin/msgfmt -ac_cv_path_MSGMERGE=/usr/bin/msgmerge -ac_cv_path_XGETTEXT=/usr/bin/xgettext -ac_cv_path_install='/usr/bin/install -c' -ac_cv_prog_AWK=gawk -ac_cv_prog_CPP='gcc -E' -ac_cv_prog_LEX=flex -ac_cv_prog_YACC='bison -y' -ac_cv_prog_ac_ct_CC=gcc -ac_cv_prog_ac_ct_RANLIB=ranlib -ac_cv_prog_cc_g=yes -ac_cv_prog_cc_stdc= -ac_cv_prog_egrep='grep -E' -ac_cv_prog_gcc_traditional=no -ac_cv_prog_lex_root=lex.yy -ac_cv_prog_lex_yytext_pointer=yes -ac_cv_prog_make_make_set=yes -ac_cv_sys_file_offset_bits=64 -ac_cv_sys_large_files=no -ac_cv_sys_largefile_CC=no -acl_cv_hardcode_direct=no -acl_cv_hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -acl_cv_hardcode_libdir_separator= -acl_cv_hardcode_minus_L=no -acl_cv_libext=a -acl_cv_path_LD=/usr/bin/ld -acl_cv_prog_gnu_ld=yes -acl_cv_rpath=done -acl_cv_shlibext=so -acl_cv_sys_lib_dlsearch_path_spec='/lib /usr/lib' -acl_cv_sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' -acl_cv_wl=-Wl, -am_cv_CC_dependencies_compiler_type=gcc3 -gt_cv_func_gnugettext1_libc=yes - -## ----------------- ## -## Output variables. ## -## ----------------- ## - -ACLOCAL='${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run aclocal-1.9' -AMDEPBACKSLASH='\' -AMDEP_FALSE='#' -AMDEP_TRUE='' -AMTAR='${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run tar' -AUTOCONF='${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoconf' -AUTOHEADER='${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoheader' -AUTOMAKE='${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run automake-1.9' -AWK='gawk' -CC='gcc' -CCDEPMODE='depmode=gcc3' -CFLAGS='-g -O2' -CPP='gcc -E' -CPPFLAGS='' -CYGPATH_W='echo' -DATADIRNAME='${prefix}/share' -DEFS='-DHAVE_CONFIG_H' -DEPDIR='.deps' -ECHO_C='' -ECHO_N='-n' -ECHO_T='' -EGREP='grep -E' -EXEEXT='' -GMSGFMT='/usr/bin/msgfmt' -INSTALL_DATA='${INSTALL} -m 644' -INSTALL_PROGRAM='${INSTALL}' -INSTALL_SCRIPT='${INSTALL}' -INSTALL_STRIP_PROGRAM='${SHELL} $(install_sh) -c -s' -INTLLIBS='' -LDFLAGS='' -LEX='flex' -LEXLIB='-lfl' -LEX_OUTPUT_ROOT='lex.yy' -LIBICONV='-liconv' -LIBINTL='' -LIBOBJS='' -LIBS='' -LOCALEDIR='${prefix}/share' -LTLIBICONV='-liconv' -LTLIBINTL='' -LTLIBOBJS='' -MAKEINFO='${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run makeinfo' -MKINSTALLDIRS='config/mkinstalldirs' -MSGFMT='/usr/bin/msgfmt' -MSGMERGE='/usr/bin/msgmerge' -MUDFLAP_FALSE='' -MUDFLAP_TRUE='#' -NATIVE_LD_FALSE='' -NATIVE_LD_TRUE='#' -OBJEXT='o' -PACKAGE='elfutils' -PACKAGE_BUGREPORT='http://bugzilla.redhat.com/bugzilla/' -PACKAGE_NAME='Red Hat elfutils' -PACKAGE_STRING='Red Hat elfutils 0.97' -PACKAGE_TARNAME='elfutils' -PACKAGE_VERSION='0.97' -PATH_SEPARATOR=':' -POSUB='po' -RANLIB='ranlib' -SET_MAKE='' -SHELL='/bin/sh' -STRIP='' -USE_NLS='yes' -VERSION='0.97' -XGETTEXT='/usr/bin/xgettext' -YACC='bison -y' -ac_ct_CC='gcc' -ac_ct_RANLIB='ranlib' -ac_ct_STRIP='' -am__fastdepCC_FALSE='#' -am__fastdepCC_TRUE='' -am__include='include' -am__leading_dot='.' -am__quote='' -am__tar='${AMTAR} chof - "$$tardir"' -am__untar='${AMTAR} xf -' -base_cpu='none' -bindir='${exec_prefix}/bin' -build='i686-pc-linux-gnu' -build_alias='' -build_cpu='i686' -build_os='linux-gnu' -build_vendor='pc' -datadir='${prefix}/share' -exec_prefix='${prefix}' -host='i686-pc-linux-gnu' -host_alias='' -host_cpu='i686' -host_os='linux-gnu' -host_vendor='pc' -includedir='${prefix}/include' -infodir='${prefix}/info' -install_sh='/work/elfutils/stock/elfutils-0.97/config/install-sh' -libdir='${exec_prefix}/lib' -libexecdir='${exec_prefix}/libexec' -localstatedir='${prefix}/var' -mandir='${prefix}/man' -mkdir_p='mkdir -p --' -oldincludedir='/usr/include' -prefix='/work/elfutils/google/linux-install-elfutils-0.97/' -program_transform_name='s,x,x,' -sbindir='${exec_prefix}/sbin' -sharedstatedir='${prefix}/com' -sysconfdir='${prefix}/etc' -target_alias='' - -## ----------- ## -## confdefs.h. ## -## ----------- ## - -#define ENABLE_NLS 1 -#define HAVE_DCGETTEXT 1 -#define HAVE_GETTEXT 1 -#define LOCALEDIR "${prefix}/share" -#define PACKAGE "elfutils" -#define PACKAGE_BUGREPORT "http://bugzilla.redhat.com/bugzilla/" -#define PACKAGE_NAME "Red Hat elfutils" -#define PACKAGE_STRING "Red Hat elfutils 0.97" -#define PACKAGE_TARNAME "elfutils" -#define PACKAGE_VERSION "0.97" -#define VERSION "0.97" -#define YYTEXT_POINTER 1 -#define _FILE_OFFSET_BITS 64 - -configure: exit 0 - -## ---------------------- ## -## Running config.status. ## -## ---------------------- ## - -This file was extended by Red Hat elfutils config.status 0.97, which was -generated by GNU Autoconf 2.59. Invocation command line was - - CONFIG_FILES = - CONFIG_HEADERS = - CONFIG_LINKS = - CONFIG_COMMANDS = - $ ./config.status - -on in2it.corp.google.com - -config.status:783: creating config/Makefile -config.status:783: creating Makefile -config.status:783: creating m4/Makefile -config.status:783: creating elfutils.spec -config.status:783: creating doc/Makefile -config.status:783: creating lib/Makefile -config.status:783: creating libelf/Makefile -config.status:783: creating libelf-po/Makefile.in -config.status:783: creating libebl/Makefile -config.status:783: creating libdw/Makefile -config.status:783: creating libcpu/Makefile -config.status:783: creating libasm/Makefile -config.status:783: creating src/Makefile -config.status:783: creating po/Makefile.in -config.status:783: creating tests/Makefile -config.status:849: creating config.h -config.status:947: config.h is unchanged -config.status:1127: executing depfiles commands -config.status:1127: executing default-1 commands - -## ---------------------- ## -## Running config.status. ## -## ---------------------- ## - -This file was extended by Red Hat elfutils config.status 0.97, which was -generated by GNU Autoconf 2.59. Invocation command line was - - CONFIG_FILES = - CONFIG_HEADERS = - CONFIG_LINKS = - CONFIG_COMMANDS = - $ ./config.status config.h - -on in2it.corp.google.com - -config.status:849: creating config.h -config.status:947: config.h is unchanged diff --git a/config.status b/config.status deleted file mode 100755 index b03a4b73..00000000 --- a/config.status +++ /dev/null @@ -1,1314 +0,0 @@ -#! /bin/sh -# Generated by configure. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false -SHELL=${CONFIG_SHELL-/bin/sh} -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - -exec 6>&1 - -# Open the log real soon, to keep \$[0] and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF - -This file was extended by Red Hat elfutils $as_me 0.97, which was -generated by GNU Autoconf 2.59. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 -config_files=" config/Makefile Makefile m4/Makefile elfutils.spec:config/elfutils.spec.in doc/Makefile lib/Makefile libelf/Makefile libelf-po/Makefile.in libebl/Makefile libdw/Makefile libcpu/Makefile libasm/Makefile src/Makefile po/Makefile.in tests/Makefile" -config_headers=" config.h" -config_commands=" depfiles default-1" - -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to <bug-autoconf@gnu.org>." -ac_cs_version="\ -Red Hat elfutils config.status 0.97 -configured by ./configure, generated by GNU Autoconf 2.59, - with options \"'--prefix' '/work/elfutils/google/linux-install-elfutils-0.97/'\" - -Copyright (C) 2003 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." -srcdir=. -INSTALL="/usr/bin/install -c" -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - ac_shift=: - ;; - -*) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_option=$1 - ac_need_defaults=false;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" - ac_need_defaults=false;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -if $ac_cs_recheck; then - echo "running /bin/sh ./configure " '--prefix' '/work/elfutils/google/linux-install-elfutils-0.97/' $ac_configure_extra_args " --no-create --no-recursion" >&6 - exec /bin/sh ./configure '--prefix' '/work/elfutils/google/linux-install-elfutils-0.97/' $ac_configure_extra_args --no-create --no-recursion -fi - -# -# INIT-COMMANDS section. -# - -AMDEP_TRUE="" ac_aux_dir="config" -# Capture the value of obsolete because we need it to compute - # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it - # from automake. - eval 'ALL_LINGUAS''=""' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="%UNSET%" - - -for ac_config_target in $ac_config_targets -do - case "$ac_config_target" in - # Handling of arguments. - "config/Makefile" ) CONFIG_FILES="$CONFIG_FILES config/Makefile" ;; - "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "m4/Makefile" ) CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;; - "elfutils.spec" ) CONFIG_FILES="$CONFIG_FILES elfutils.spec:config/elfutils.spec.in" ;; - "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; - "libelf/Makefile" ) CONFIG_FILES="$CONFIG_FILES libelf/Makefile" ;; - "libelf-po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES libelf-po/Makefile.in" ;; - "libebl/Makefile" ) CONFIG_FILES="$CONFIG_FILES libebl/Makefile" ;; - "libdw/Makefile" ) CONFIG_FILES="$CONFIG_FILES libdw/Makefile" ;; - "libcpu/Makefile" ) CONFIG_FILES="$CONFIG_FILES libcpu/Makefile" ;; - "libasm/Makefile" ) CONFIG_FILES="$CONFIG_FILES libasm/Makefile" ;; - "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; - "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; - "tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; - "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason to put it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} - - -# -# CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF -s,@SHELL@,/bin/sh,;t t -s,@PATH_SEPARATOR@,:,;t t -s,@PACKAGE_NAME@,Red Hat elfutils,;t t -s,@PACKAGE_TARNAME@,elfutils,;t t -s,@PACKAGE_VERSION@,0.97,;t t -s,@PACKAGE_STRING@,Red Hat elfutils 0.97,;t t -s,@PACKAGE_BUGREPORT@,http://bugzilla.redhat.com/bugzilla/,;t t -s,@exec_prefix@,${prefix},;t t -s,@prefix@,/work/elfutils/google/linux-install-elfutils-0.97/,;t t -s,@program_transform_name@,s,x,x,,;t t -s,@bindir@,${exec_prefix}/bin,;t t -s,@sbindir@,${exec_prefix}/sbin,;t t -s,@libexecdir@,${exec_prefix}/libexec,;t t -s,@datadir@,${prefix}/share,;t t -s,@sysconfdir@,${prefix}/etc,;t t -s,@sharedstatedir@,${prefix}/com,;t t -s,@localstatedir@,${prefix}/var,;t t -s,@libdir@,${exec_prefix}/lib,;t t -s,@includedir@,${prefix}/include,;t t -s,@oldincludedir@,/usr/include,;t t -s,@infodir@,${prefix}/info,;t t -s,@mandir@,${prefix}/man,;t t -s,@build_alias@,,;t t -s,@host_alias@,,;t t -s,@target_alias@,,;t t -s,@DEFS@,-DHAVE_CONFIG_H,;t t -s,@ECHO_C@,,;t t -s,@ECHO_N@,-n,;t t -s,@ECHO_T@,,;t t -s,@LIBS@,,;t t -s,@INSTALL_PROGRAM@,${INSTALL},;t t -s,@INSTALL_SCRIPT@,${INSTALL},;t t -s,@INSTALL_DATA@,${INSTALL} -m 644,;t t -s,@CYGPATH_W@,echo,;t t -s,@PACKAGE@,elfutils,;t t -s,@VERSION@,0.97,;t t -s,@ACLOCAL@,${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run aclocal-1.9,;t t -s,@AUTOCONF@,${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoconf,;t t -s,@AUTOMAKE@,${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run automake-1.9,;t t -s,@AUTOHEADER@,${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoheader,;t t -s,@MAKEINFO@,${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run makeinfo,;t t -s,@install_sh@,/work/elfutils/stock/elfutils-0.97/config/install-sh,;t t -s,@STRIP@,,;t t -s,@ac_ct_STRIP@,,;t t -s,@INSTALL_STRIP_PROGRAM@,${SHELL} $(install_sh) -c -s,;t t -s,@mkdir_p@,mkdir -p --,;t t -s,@AWK@,gawk,;t t -s,@SET_MAKE@,,;t t -s,@am__leading_dot@,.,;t t -s,@AMTAR@,${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run tar,;t t -s,@am__tar@,${AMTAR} chof - "$$tardir",;t t -s,@am__untar@,${AMTAR} xf -,;t t -s,@build@,i686-pc-linux-gnu,;t t -s,@build_cpu@,i686,;t t -s,@build_vendor@,pc,;t t -s,@build_os@,linux-gnu,;t t -s,@host@,i686-pc-linux-gnu,;t t -s,@host_cpu@,i686,;t t -s,@host_vendor@,pc,;t t -s,@host_os@,linux-gnu,;t t -s,@CC@,gcc,;t t -s,@CFLAGS@,-g -O2,;t t -s,@LDFLAGS@,,;t t -s,@CPPFLAGS@,,;t t -s,@ac_ct_CC@,gcc,;t t -s,@EXEEXT@,,;t t -s,@OBJEXT@,o,;t t -s,@DEPDIR@,.deps,;t t -s,@am__include@,include,;t t -s,@am__quote@,,;t t -s,@AMDEP_TRUE@,,;t t -s,@AMDEP_FALSE@,#,;t t -s,@AMDEPBACKSLASH@,\,;t t -s,@CCDEPMODE@,depmode=gcc3,;t t -s,@am__fastdepCC_TRUE@,,;t t -s,@am__fastdepCC_FALSE@,#,;t t -s,@CPP@,gcc -E,;t t -s,@EGREP@,grep -E,;t t -s,@MKINSTALLDIRS@,config/mkinstalldirs,;t t -s,@MSGFMT@,/usr/bin/msgfmt,;t t -s,@GMSGFMT@,/usr/bin/msgfmt,;t t -s,@XGETTEXT@,/usr/bin/xgettext,;t t -s,@MSGMERGE@,/usr/bin/msgmerge,;t t -s,@USE_NLS@,yes,;t t -s,@LIBICONV@,-liconv,;t t -s,@LTLIBICONV@,-liconv,;t t -s,@INTLLIBS@,,;t t -s,@LIBINTL@,,;t t -s,@LTLIBINTL@,,;t t -s,@POSUB@,po,;t t -s,@RANLIB@,ranlib,;t t -s,@ac_ct_RANLIB@,ranlib,;t t -s,@YACC@,bison -y,;t t -s,@LEX@,flex,;t t -s,@LEXLIB@,-lfl,;t t -s,@LEX_OUTPUT_ROOT@,lex.yy,;t t -s,@LOCALEDIR@,${prefix}/share,;t t -s,@DATADIRNAME@,${prefix}/share,;t t -s,@NATIVE_LD_TRUE@,#,;t t -s,@NATIVE_LD_FALSE@,,;t t -s,@base_cpu@,none,;t t -s,@MUDFLAP_TRUE@,#,;t t -s,@MUDFLAP_FALSE@,,;t t -s,@LIBOBJS@,,;t t -s,@LTLIBOBJS@,,;t t -CEOF - - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat - fi -fi # test -n "$CONFIG_FILES" - -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_builddir$INSTALL ;; - esac - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - sed "/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -} - -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@abs_srcdir@,$ac_abs_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s,@builddir@,$ac_builddir,;t t -s,@abs_builddir@,$ac_abs_builddir,;t t -s,@top_builddir@,$ac_top_builddir,;t t -s,@abs_top_builddir@,$ac_abs_top_builddir,;t t -s,@INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done - -# -# CONFIG_HEADER section. -# - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' - -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - # Do quote $f, to prevent DOS paths from being IFS'd. - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - - # Handle all the #define templates only if necessary. - if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then - # If there are no defines, we may have an empty if/fi - : - cat >$tmp/defines.sed <<CEOF -/^[ ]*#[ ]*define/!b -t clr -: clr -${ac_dA}PACKAGE_NAME${ac_dB}PACKAGE_NAME${ac_dC}"Red Hat elfutils"${ac_dD} -${ac_dA}PACKAGE_TARNAME${ac_dB}PACKAGE_TARNAME${ac_dC}"elfutils"${ac_dD} -${ac_dA}PACKAGE_VERSION${ac_dB}PACKAGE_VERSION${ac_dC}"0.97"${ac_dD} -${ac_dA}PACKAGE_STRING${ac_dB}PACKAGE_STRING${ac_dC}"Red Hat elfutils 0.97"${ac_dD} -${ac_dA}PACKAGE_BUGREPORT${ac_dB}PACKAGE_BUGREPORT${ac_dC}"http://bugzilla.redhat.com/bugzilla/"${ac_dD} -${ac_dA}PACKAGE${ac_dB}PACKAGE${ac_dC}"elfutils"${ac_dD} -${ac_dA}VERSION${ac_dB}VERSION${ac_dC}"0.97"${ac_dD} -${ac_dA}ENABLE_NLS${ac_dB}ENABLE_NLS${ac_dC}1${ac_dD} -${ac_dA}HAVE_GETTEXT${ac_dB}HAVE_GETTEXT${ac_dC}1${ac_dD} -${ac_dA}HAVE_DCGETTEXT${ac_dB}HAVE_DCGETTEXT${ac_dC}1${ac_dD} -${ac_dA}YYTEXT_POINTER${ac_dB}YYTEXT_POINTER${ac_dC}1${ac_dD} -${ac_dA}LOCALEDIR${ac_dB}LOCALEDIR${ac_dC}"\${prefix}/share"${ac_dD} -${ac_dA}_FILE_OFFSET_BITS${ac_dB}_FILE_OFFSET_BITS${ac_dC}64${ac_dD} -CEOF - sed -f $tmp/defines.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in - - fi # grep - - # Handle all the #undef templates - cat >$tmp/undefs.sed <<CEOF -/^[ ]*#[ ]*undef/!b -t clr -: clr -${ac_uA}PACKAGE_NAME${ac_uB}PACKAGE_NAME${ac_uC}"Red Hat elfutils"${ac_uD} -${ac_uA}PACKAGE_TARNAME${ac_uB}PACKAGE_TARNAME${ac_uC}"elfutils"${ac_uD} -${ac_uA}PACKAGE_VERSION${ac_uB}PACKAGE_VERSION${ac_uC}"0.97"${ac_uD} -${ac_uA}PACKAGE_STRING${ac_uB}PACKAGE_STRING${ac_uC}"Red Hat elfutils 0.97"${ac_uD} -${ac_uA}PACKAGE_BUGREPORT${ac_uB}PACKAGE_BUGREPORT${ac_uC}"http://bugzilla.redhat.com/bugzilla/"${ac_uD} -${ac_uA}PACKAGE${ac_uB}PACKAGE${ac_uC}"elfutils"${ac_uD} -${ac_uA}VERSION${ac_uB}VERSION${ac_uC}"0.97"${ac_uD} -${ac_uA}ENABLE_NLS${ac_uB}ENABLE_NLS${ac_uC}1${ac_uD} -${ac_uA}HAVE_GETTEXT${ac_uB}HAVE_GETTEXT${ac_uC}1${ac_uD} -${ac_uA}HAVE_DCGETTEXT${ac_uB}HAVE_DCGETTEXT${ac_uC}1${ac_uD} -${ac_uA}YYTEXT_POINTER${ac_uB}YYTEXT_POINTER${ac_uC}1${ac_uD} -${ac_uA}LOCALEDIR${ac_uB}LOCALEDIR${ac_uC}"\${prefix}/share"${ac_uD} -${ac_uA}_FILE_OFFSET_BITS${ac_uB}_FILE_OFFSET_BITS${ac_uC}64${ac_uD} -s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, -CEOF - sed -f $tmp/undefs.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - echo "/* Generated by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - rm -f $tmp/in - if test x"$ac_file" != x-; then - if diff $ac_file $tmp/config.h >/dev/null 2>&1; then - { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} - else - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - rm -f $ac_file - mv $tmp/config.h $ac_file - fi - else - cat $tmp/config.h - rm -f $tmp/config.h - fi -# Compute $ac_file's index in $config_headers. -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $ac_file | $ac_file:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || -$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X$ac_file : 'X\(//\)[^/]' \| \ - X$ac_file : 'X\(//\)$' \| \ - X$ac_file : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X$ac_file | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'`/stamp-h$_am_stamp_count -done - -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - - { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 -echo "$as_me: executing $ac_dest commands" >&6;} - case $ac_dest in - depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # So let's grep whole file. - if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then - dirpart=`(dirname "$mf") 2>/dev/null || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`(dirname "$file") 2>/dev/null || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p $dirpart/$fdir - else - as_dir=$dirpart/$fdir - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 -echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} - { (exit 1); exit 1; }; }; } - - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done - ;; - default-1 ) - for ac_file in $CONFIG_FILES; do - # Support "outfile[:infile[:infile...]]" - case "$ac_file" in - *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - esac - # PO directories have a Makefile.in generated from Makefile.in.in. - case "$ac_file" in */Makefile.in) - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" - # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. - if test -n "$ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" - fi - ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' - fi - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= - GMOFILES= - UPDATEPOFILES= - DUMMYPOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" - GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. - INST_LINGUAS= - if test -n "$ALL_LINGUAS"; then - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "$LINGUAS"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - INST_LINGUAS="$INST_LINGUAS $presentlang" - fi - done - fi - CATALOGS= - if test -n "$INST_LINGUAS"; then - for lang in $INST_LINGUAS; do - CATALOGS="$CATALOGS $lang.gmo" - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in - *.orig | *.bak | *~) ;; - *) cat "$f" >> "$ac_dir/Makefile" ;; - esac - fi - done - fi - ;; - esac - done ;; - esac -done - -{ (exit 0); exit 0; } diff --git a/config/ChangeLog b/config/ChangeLog deleted file mode 100644 index 783365d4..00000000 --- a/config/ChangeLog +++ /dev/null @@ -1,15 +0,0 @@ -2004-01-29 Ulrich Drepper <drepper@redhat.com> - - * elfutils.spec.in: Update BuildRequires. - -2004-01-17 Ulrich Drepper <drepper@redhat.com> - - * Makefile.am: New file. - * config.guess: Moved to here from toplevel. - * config.rpath: Likewise. - * config.sub: Likewise. - * depcomp: Likewise. - * install-sh: Likewise. - * missing: Likewise. - * mkinstalldirs: Likewise. - * elfutils.spec.in: New file. diff --git a/config/Makefile b/config/Makefile deleted file mode 100644 index 9dbd8a8e..00000000 --- a/config/Makefile +++ /dev/null @@ -1,312 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# config/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - -srcdir = . -top_srcdir = .. - -pkgdatadir = $(datadir)/elfutils -pkglibdir = $(libdir)/elfutils -pkgincludedir = $(includedir)/elfutils -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = /usr/bin/install -c -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = i686-pc-linux-gnu -host_triplet = i686-pc-linux-gnu -subdir = config -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog \ - config.guess config.rpath config.sub depcomp install-sh \ - missing mkinstalldirs -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run aclocal-1.9 -AMDEP_FALSE = # -AMDEP_TRUE = -AMTAR = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run tar -AUTOCONF = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoconf -AUTOHEADER = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoheader -AUTOMAKE = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run automake-1.9 -AWK = gawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -CPP = gcc -E -CPPFLAGS = -CYGPATH_W = echo -DATADIRNAME = ${prefix}/share -DEFS = -DHAVE_CONFIG_H -DEPDIR = .deps -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = grep -E -EXEEXT = -GMSGFMT = /usr/bin/msgfmt -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s -INTLLIBS = -LDFLAGS = -LEX = flex -LEXLIB = -lfl -LEX_OUTPUT_ROOT = lex.yy -LIBICONV = -liconv -LIBINTL = -LIBOBJS = -LIBS = -LOCALEDIR = ${prefix}/share -LTLIBICONV = -liconv -LTLIBINTL = -LTLIBOBJS = -MAKEINFO = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run makeinfo -MKINSTALLDIRS = config/mkinstalldirs -MSGFMT = /usr/bin/msgfmt -MSGMERGE = /usr/bin/msgmerge -MUDFLAP_FALSE = -MUDFLAP_TRUE = # -NATIVE_LD_FALSE = -NATIVE_LD_TRUE = # -OBJEXT = o -PACKAGE = elfutils -PACKAGE_BUGREPORT = http://bugzilla.redhat.com/bugzilla/ -PACKAGE_NAME = Red Hat elfutils -PACKAGE_STRING = Red Hat elfutils 0.97 -PACKAGE_TARNAME = elfutils -PACKAGE_VERSION = 0.97 -PATH_SEPARATOR = : -POSUB = po -RANLIB = ranlib -SET_MAKE = -SHELL = /bin/sh -STRIP = -USE_NLS = yes -VERSION = 0.97 -XGETTEXT = /usr/bin/xgettext -YACC = bison -y -ac_ct_CC = gcc -ac_ct_RANLIB = ranlib -ac_ct_STRIP = -am__fastdepCC_FALSE = # -am__fastdepCC_TRUE = -am__include = include -am__leading_dot = . -am__quote = -am__tar = ${AMTAR} chof - "$$tardir" -am__untar = ${AMTAR} xf - -base_cpu = none -bindir = ${exec_prefix}/bin -build = i686-pc-linux-gnu -build_alias = -build_cpu = i686 -build_os = linux-gnu -build_vendor = pc -datadir = ${prefix}/share -exec_prefix = ${prefix} -host = i686-pc-linux-gnu -host_alias = -host_cpu = i686 -host_os = linux-gnu -host_vendor = pc -includedir = ${prefix}/include -infodir = ${prefix}/info -install_sh = /work/elfutils/stock/elfutils-0.97/config/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localstatedir = ${prefix}/var -mandir = ${prefix}/man -mkdir_p = mkdir -p -- -oldincludedir = /usr/include -prefix = /work/elfutils/google/linux-install-elfutils-0.97/ -program_transform_name = s,x,x, -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -sysconfdir = ${prefix}/etc -target_alias = -EXTRA_DIST = elfutils.spec.in -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits config/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits config/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -uninstall-info-am: -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-info-am - -.PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \ - uninstall-info-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/config/Makefile.am b/config/Makefile.am deleted file mode 100644 index 4f327520..00000000 --- a/config/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ -## Process this file with automake to produce Makefile.in -*-Makefile-*- -## Configure input file for elfutils. -## -## Copyright (C) 2004 Red Hat, Inc. -## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation, version 2. -## -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software Foundation, -## Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -## -EXTRA_DIST = elfutils.spec.in diff --git a/config/Makefile.in b/config/Makefile.in deleted file mode 100644 index 7b069373..00000000 --- a/config/Makefile.in +++ /dev/null @@ -1,312 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = config -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog \ - config.guess config.rpath config.sub depcomp install-sh \ - missing mkinstalldirs -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DATADIRNAME = @DATADIRNAME@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -GMSGFMT = @GMSGFMT@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTLLIBS = @INTLLIBS@ -LDFLAGS = @LDFLAGS@ -LEX = @LEX@ -LEXLIB = @LEXLIB@ -LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LOCALEDIR = @LOCALEDIR@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -MSGMERGE = @MSGMERGE@ -MUDFLAP_FALSE = @MUDFLAP_FALSE@ -MUDFLAP_TRUE = @MUDFLAP_TRUE@ -NATIVE_LD_FALSE = @NATIVE_LD_FALSE@ -NATIVE_LD_TRUE = @NATIVE_LD_TRUE@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -XGETTEXT = @XGETTEXT@ -YACC = @YACC@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -base_cpu = @base_cpu@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -datadir = @datadir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -EXTRA_DIST = elfutils.spec.in -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits config/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits config/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -uninstall-info-am: -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-info-am - -.PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \ - uninstall-info-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/config/config.guess b/config/config.guess deleted file mode 100644 index f1657bbc..00000000 --- a/config/config.guess +++ /dev/null @@ -1,1363 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002 Free Software Foundation, Inc. - -timestamp='2002-09-03' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Per Bothner <per@bothner.com>. -# Please send patches to <config-patches@gnu.org>. Submit a context -# diff and a properly formatted ChangeLog entry. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# The plan is that this can be called by configure scripts if you -# don't specify an explicit build system type. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to <config-patches@gnu.org>." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; - --version | -v ) - echo "$version" ; exit 0 ;; - --help | --h* | -h ) - echo "$usage"; exit 0 ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# This shell variable is my proudest work .. or something. --bje - -set_cc_for_build='tmpdir=${TMPDIR-/tmp}/config-guess-$$ ; -(old=`umask` && umask 077 && mkdir $tmpdir && umask $old && unset old) - || (echo "$me: cannot create $tmpdir" >&2 && exit 1) ; -dummy=$tmpdir/dummy ; -files="$dummy.c $dummy.o $dummy.rel $dummy" ; -trap '"'"'rm -f $files; rmdir $tmpdir; exit 1'"'"' 1 2 15 ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - rm -f $files ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; -unset files' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit 0 ;; - amiga:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - arc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - hp300:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - macppc:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme88k:OpenBSD:*:*) - echo m88k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvmeppc:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - pmax:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sgi:OpenBSD:*:*) - echo mipseb-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sun3:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - wgrisc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - *:OpenBSD:*:*) - echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - alpha:OSF1:*:*) - if test $UNAME_RELEASE = "V4.0"; then - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - fi - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - eval $set_cc_for_build - cat <<EOF >$dummy.s - .data -\$Lformat: - .byte 37,100,45,37,120,10,0 # "%d-%x\n" - - .text - .globl main - .align 4 - .ent main -main: - .frame \$30,16,\$26,0 - ldgp \$29,0(\$27) - .prologue 1 - .long 0x47e03d80 # implver \$0 - lda \$2,-1 - .long 0x47e20c21 # amask \$2,\$1 - lda \$16,\$Lformat - mov \$0,\$17 - not \$1,\$18 - jsr \$26,printf - ldgp \$29,0(\$26) - mov 0,\$16 - jsr \$26,exit - .end main -EOF - $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null - if test "$?" = 0 ; then - case `$dummy` in - 0-0) - UNAME_MACHINE="alpha" - ;; - 1-0) - UNAME_MACHINE="alphaev5" - ;; - 1-1) - UNAME_MACHINE="alphaev56" - ;; - 1-101) - UNAME_MACHINE="alphapca56" - ;; - 2-303) - UNAME_MACHINE="alphaev6" - ;; - 2-307) - UNAME_MACHINE="alphaev67" - ;; - 2-1307) - UNAME_MACHINE="alphaev68" - ;; - 3-1307) - UNAME_MACHINE="alphaev7" - ;; - esac - fi - rm -f $dummy.s $dummy && rmdir $tmpdir - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit 0 ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit 0 ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit 0 ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit 0;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit 0 ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit 0 ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit 0 ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit 0;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit 0;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit 0 ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit 0 ;; - DRS?6000:UNIX_SV:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7 && exit 0 ;; - esac ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - i86pc:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit 0 ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit 0 ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit 0 ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit 0 ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit 0 ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit 0 ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit 0 ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit 0 ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit 0 ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit 0 ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include <stdio.h> /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD $dummy.c -o $dummy \ - && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 - rm -f $dummy.c $dummy && rmdir $tmpdir - echo mips-mips-riscos${UNAME_RELEASE} - exit 0 ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit 0 ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit 0 ;; - Night_Hawk:*:*:PowerMAX_OS) - echo powerpc-harris-powermax - exit 0 ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit 0 ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit 0 ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit 0 ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit 0 ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit 0 ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit 0 ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit 0 ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit 0 ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit 0 ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit 0 ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit 0 ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include <sys/systemcfg.h> - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - $CC_FOR_BUILD $dummy.c -o $dummy && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 - rm -f $dummy.c $dummy && rmdir $tmpdir - echo rs6000-ibm-aix3.2.5 - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit 0 ;; - *:AIX:*:[45]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit 0 ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit 0 ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit 0 ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit 0 ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit 0 ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit 0 ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit 0 ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include <stdlib.h> - #include <unistd.h> - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`$dummy` - if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi - rm -f $dummy.c $dummy && rmdir $tmpdir - fi ;; - esac - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit 0 ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit 0 ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include <unistd.h> - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD $dummy.c -o $dummy && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 - rm -f $dummy.c $dummy && rmdir $tmpdir - echo unknown-hitachi-hiuxwe2 - exit 0 ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit 0 ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit 0 ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit 0 ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit 0 ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit 0 ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit 0 ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit 0 ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit 0 ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit 0 ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit 0 ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit 0 ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*T3D:*:*:*) - echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit 0 ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit 0 ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:FreeBSD:*:*) - # Determine whether the default compiler uses glibc. - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include <features.h> - #if __GLIBC__ >= 2 - LIBC=gnu - #else - LIBC= - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - rm -f $dummy.c && rmdir $tmpdir - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} - exit 0 ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit 0 ;; - i*:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit 0 ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit 0 ;; - x86:Interix*:3*) - echo i386-pc-interix3 - exit 0 ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i386-pc-interix - exit 0 ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit 0 ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit 0 ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - *:GNU:*:*) - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit 0 ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit 0 ;; - arm*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - mips:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips - #undef mipsel - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mipsel - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` - rm -f $dummy.c && rmdir $tmpdir - test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0 - ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit 0 ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit 0 ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit 0 ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac - exit 0 ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit 0 ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit 0 ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu - exit 0 ;; - i*86:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. cd to the root directory to prevent - # problems with other programs or directories called `ld' in the path. - # Set LC_ALL=C to ensure ld outputs messages in English. - ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ - | sed -ne '/supported targets:/!d - s/[ ][ ]*/ /g - s/.*supported targets: *// - s/ .*// - p'` - case "$ld_supported_targets" in - elf32-i386) - TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" - ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit 0 ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit 0 ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit 0 ;; - esac - # Determine whether the default compiler is a.out or elf - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include <features.h> - #ifdef __ELF__ - # ifdef __GLIBC__ - # if __GLIBC__ >= 2 - LIBC=gnu - # else - LIBC=gnulibc1 - # endif - # else - LIBC=gnulibc1 - # endif - #else - #ifdef __INTEL_COMPILER - LIBC=gnu - #else - LIBC=gnuaout - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - rm -f $dummy.c && rmdir $tmpdir - test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 - test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 - ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit 0 ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit 0 ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit 0 ;; - i*86:*:5:[78]*) - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit 0 ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` - echo ${UNAME_MACHINE}-pc-isc$UNAME_REL - elif /bin/uname -X 2>/dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit 0 ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit 0 ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp - exit 0 ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit 0 ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit 0 ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit 0 ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit 0 ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit 0 ;; - M68*:*:R3V[567]*:*) - test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4.3${OS_REL} && exit 0 - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4 && exit 0 ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit 0 ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit 0 ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit 0 ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says <Richard.M.Bartel@ccMail.Census.GOV> - echo i586-unisys-sysv4 - exit 0 ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes <hewes@openmarket.com>. - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit 0 ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit 0 ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit 0 ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit 0 ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit 0 ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit 0 ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit 0 ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit 0 ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit 0 ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit 0 ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit 0 ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit 0 ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; - *:Darwin:*:*) - echo `uname -p`-apple-darwin${UNAME_RELEASE} - exit 0 ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit 0 ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit 0 ;; - NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit 0 ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit 0 ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit 0 ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit 0 ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit 0 ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit 0 ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit 0 ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit 0 ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit 0 ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit 0 ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit 0 ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit 0 ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit 0 ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit 0 ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -eval $set_cc_for_build -cat >$dummy.c <<EOF -#ifdef _SEQUENT_ -# include <sys/types.h> -# include <sys/utsname.h> -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include <sys/param.h> - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include <sys/param.h> -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 -rm -f $dummy.c $dummy && rmdir $tmpdir - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit 0 ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - c34*) - echo c34-convex-bsd - exit 0 ;; - c38*) - echo c38-convex-bsd - exit 0 ;; - c4*) - echo c4-convex-bsd - exit 0 ;; - esac -fi - -cat >&2 <<EOF -$0: unable to guess system type - -This script, last modified $timestamp, has failed to recognize -the operating system you are using. It is advised that you -download the most up to date version of the config scripts from - - ftp://ftp.gnu.org/pub/gnu/config/ - -If the version you run ($0) is already up to date, please -send the following data and any information you think might be -pertinent to <config-patches@gnu.org> in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/config/config.rpath b/config/config.rpath deleted file mode 100644 index 5ead7586..00000000 --- a/config/config.rpath +++ /dev/null @@ -1,513 +0,0 @@ -#! /bin/sh -# Output a system dependent set of variables, describing how to set the -# run time search path of shared libraries in an executable. -# -# Copyright 1996-2002 Free Software Foundation, Inc. -# Taken from GNU libtool, 2001 -# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. -# -# The first argument passed to this file is the canonical host specification, -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld -# should be set by the caller. -# -# The set of defined variables is at the end of this script. - -# All known linkers require a `.a' archive for static linking (except M$VC, -# which needs '.lib'). -libext=a -shlibext= - -host="$1" -host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - -wl= -if test "$GCC" = yes; then - wl='-Wl,' -else - case "$host_os" in - aix3* | aix4* | aix5*) - wl='-Wl,' - ;; - hpux9* | hpux10* | hpux11*) - wl='-Wl,' - ;; - irix5* | irix6*) - wl='-Wl,' - ;; - linux*) - echo '__INTEL_COMPILER' > conftest.$ac_ext - if $CC -E conftest.$ac_ext >/dev/null | grep __INTEL_COMPILER >/dev/null - then - : - else - # Intel icc - wl='-Qoption,ld,' - fi - ;; - osf3* | osf4* | osf5*) - wl='-Wl,' - ;; - solaris*) - wl='-Wl,' - ;; - sunos4*) - wl='-Qoption ld ' - ;; - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - if test "x$host_vendor" = xsni; then - wl='-LD' - else - wl='-Wl,' - fi - ;; - esac -fi - -hardcode_libdir_flag_spec= -hardcode_libdir_separator= -hardcode_direct=no -hardcode_minus_L=no - -case "$host_os" in - cygwin* | mingw* | pw32*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - openbsd*) - with_gnu_ld=no - ;; -esac - -ld_shlibs=yes -if test "$with_gnu_ld" = yes; then - case "$host_os" in - aix3* | aix4* | aix5*) - # On AIX, the GNU linker is very broken - ld_shlibs=no - ;; - amigaos*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports - # that the semantics of dynamic libraries on AmigaOS, at least up - # to version 4, is to share data among multiple programs linked - # with the same dynamic library. Since this doesn't match the - # behavior of shared libraries on other platforms, we can use - # them. - ld_shlibs=no - ;; - beos*) - if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - : - else - ld_shlibs=no - fi - ;; - cygwin* | mingw* | pw32*) - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - ;; - solaris* | sysv5*) - if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - : - else - ld_shlibs=no - fi - ;; - sunos4*) - hardcode_direct=yes - ;; - *) - if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - : - else - ld_shlibs=no - fi - ;; - esac - if test "$ld_shlibs" = yes; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - fi -else - case "$host_os" in - aix3*) - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - aix4* | aix5*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - else - aix_use_runtimelinking=no - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix5*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - esac - fi - hardcode_direct=yes - hardcode_libdir_separator=':' - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - hardcode_direct=yes - else - # We have old collect2 - hardcode_direct=unsupported - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - esac - fi - if test "$aix_use_runtimelinking" = yes; then - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - else - hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' - fi - fi - ;; - amigaos*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - # see comment about different semantics on the GNU ld section - ld_shlibs=no - ;; - cygwin* | mingw* | pw32*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec=' ' - libext=lib - ;; - darwin* | rhapsody*) - hardcode_direct=yes - ;; - freebsd1*) - ld_shlibs=no - ;; - freebsd2.2*) - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - ;; - freebsd2*) - hardcode_direct=yes - hardcode_minus_L=yes - ;; - freebsd*) - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - ;; - hpux9* | hpux10* | hpux11*) - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_minus_L=yes # Not in the search PATH, but as the default - # location of the library. - ;; - irix5* | irix6*) - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - netbsd*) - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - ;; - newsos6) - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - openbsd*) - hardcode_direct=yes - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - else - case "$host_os" in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - ;; - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - osf3*) - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - osf4* | osf5*) - if test "$GCC" = yes; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - # Both cc and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - hardcode_libdir_separator=: - ;; - sco3.2v5*) - ;; - solaris*) - hardcode_libdir_flag_spec='-R$libdir' - ;; - sunos4*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - ;; - sysv4) - if test "x$host_vendor" = xsno; then - hardcode_direct=yes # is this really true??? - else - hardcode_direct=no # Motorola manual says yes, but my tests say they lie - fi - ;; - sysv4.3*) - ;; - sysv5*) - hardcode_libdir_flag_spec= - ;; - uts4*) - hardcode_libdir_flag_spec='-L$libdir' - ;; - dgux*) - hardcode_libdir_flag_spec='-L$libdir' - ;; - sysv4*MP*) - if test -d /usr/nec; then - ld_shlibs=yes - fi - ;; - sysv4.2uw2*) - hardcode_direct=yes - hardcode_minus_L=no - ;; - sysv5uw7* | unixware7*) - ;; - *) - ld_shlibs=no - ;; - esac -fi - -# Check dynamic linker characteristics -libname_spec='lib$name' -sys_lib_dlsearch_path_spec="/lib /usr/lib" -sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -case "$host_os" in - aix3*) - shlibext=so - ;; - aix4* | aix5*) - shlibext=so - ;; - amigaos*) - shlibext=ixlibrary - ;; - beos*) - shlibext=so - ;; - bsdi4*) - shlibext=so - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - ;; - cygwin* | mingw* | pw32*) - case $GCC,$host_os in - yes,cygwin*) - shlibext=dll.a - ;; - yes,mingw*) - shlibext=dll - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` - ;; - yes,pw32*) - shlibext=dll - ;; - *) - shlibext=dll - ;; - esac - ;; - darwin* | rhapsody*) - shlibext=dylib - ;; - freebsd1*) - ;; - freebsd*) - shlibext=so - ;; - gnu*) - shlibext=so - ;; - hpux9* | hpux10* | hpux11*) - shlibext=sl - ;; - irix5* | irix6*) - shlibext=so - case "$host_os" in - irix5*) - libsuff= shlibsuff= - ;; - *) - case $LD in - *-32|*"-32 ") libsuff= shlibsuff= ;; - *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 ;; - *-64|*"-64 ") libsuff=64 shlibsuff=64 ;; - *) libsuff= shlibsuff= ;; - esac - ;; - esac - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - ;; - linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) - ;; - linux-gnu*) - shlibext=so - ;; - netbsd*) - shlibext=so - ;; - newsos6) - shlibext=so - ;; - openbsd*) - shlibext=so - ;; - os2*) - libname_spec='$name' - shlibext=dll - ;; - osf3* | osf4* | osf5*) - shlibext=so - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - sco3.2v5*) - shlibext=so - ;; - solaris*) - shlibext=so - ;; - sunos4*) - shlibext=so - ;; - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - shlibext=so - case "$host_vendor" in - motorola) - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - uts4*) - shlibext=so - ;; - dgux*) - shlibext=so - ;; - sysv4*MP*) - if test -d /usr/nec; then - shlibext=so - fi - ;; -esac - -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' -escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` -escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` -escaped_sys_lib_search_path_spec=`echo "X$sys_lib_search_path_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` -escaped_sys_lib_dlsearch_path_spec=`echo "X$sys_lib_dlsearch_path_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` - -sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF - -# How to pass a linker flag through the compiler. -wl="$escaped_wl" - -# Static library suffix (normally "a"). -libext="$libext" - -# Shared library suffix (normally "so"). -shlibext="$shlibext" - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec" - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator="$hardcode_libdir_separator" - -# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the -# resulting binary. -hardcode_direct="$hardcode_direct" - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L="$hardcode_minus_L" - -# Compile-time system search path for libraries -sys_lib_search_path_spec="$escaped_sys_lib_search_path_spec" - -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec="$escaped_sys_lib_dlsearch_path_spec" - -EOF diff --git a/config/config.sub b/config/config.sub deleted file mode 100644 index 1dea9b79..00000000 --- a/config/config.sub +++ /dev/null @@ -1,1470 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002 Free Software Foundation, Inc. - -timestamp='2002-09-05' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Please send patches to <config-patches@gnu.org>. Submit a context -# diff and a properly formatted ChangeLog entry. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to <config-patches@gnu.org>." - -version="\ -GNU config.sub ($timestamp) - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; - --version | -v ) - echo "$version" ; exit 0 ;; - --help | --h* | -h ) - echo "$usage"; exit 0 ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit 0;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | freebsd*-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis) - os= - basic_machine=$1 - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ - | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ - | ip2k \ - | m32r | m68000 | m68k | m88k | mcore \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64vr | mips64vrel \ - | mips64orion | mips64orionel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mipsisa32 | mipsisa32el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | ns16k | ns32k \ - | openrisc | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ - | pyramid \ - | sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ - | strongarm \ - | tahoe | thumb | tic80 | tron \ - | v850 | v850e \ - | we32k \ - | x86 | xscale | xstormy16 | xtensa \ - | z8k) - basic_machine=$basic_machine-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12) - # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* \ - | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* \ - | clipper-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* \ - | m32r-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | mcore-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39 | mipstx39el \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ - | pyramid-* \ - | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ - | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* | tic30-* | tic4x-* | tic54x-* | tic80-* | tron-* \ - | v850-* | v850e-* | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ - | xtensa-* \ - | ymp-* \ - | z8k-*) - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - crds | unos) - basic_machine=m68k-crds - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - mmix*) - basic_machine=mmix-knuth - os=-mmixware - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - or32 | or32-*) - basic_machine=or32-unknown - os=-coff - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2) - basic_machine=i686-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3d) - basic_machine=alpha-cray - os=-unicos - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tic4x | c4x*) - basic_machine=tic4x-unknown - os=-coff - ;; - tic54x | c54x*) - basic_machine=tic54x-unknown - os=-coff - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - windows32) - basic_machine=i386-pc - os=-windows32-msvcrt - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele) - basic_machine=sh-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparc | sparcv9 | sparcv9b) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ - | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* | -powermax*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto*) - os=-nto-qnx - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-ibm) - os=-aix - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/config/depcomp b/config/depcomp deleted file mode 100644 index 368e3be9..00000000 --- a/config/depcomp +++ /dev/null @@ -1,436 +0,0 @@ -#! /bin/sh - -# depcomp - compile a program generating dependencies as side-effects -# Copyright 1999, 2000 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi -# `libtool' can also be set to `yes' or `no'. - -if test -z "$depfile"; then - base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` - dir=`echo "$object" | sed 's,/.*$,/,'` - if test "$dir" = "$object"; then - dir= - fi - # FIXME: should be _deps on DOS. - depfile="$dir.deps/$base" -fi - -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. - "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the `deleted header file' problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. - tr ' ' ' -' < "$tmpdepfile" | -## Some versions of gcc put a space before the `:'. On the theory -## that the space means something, we add a space to the output as -## well. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like `#:fec' to the end of the - # dependency line. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr ' -' ' ' >> $depfile - echo >> $depfile - - # The second pass generates a dummy entry for each header file. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> $depfile - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. This file always lives in the current directory. - # Also, the AIX compiler puts `$object:' at the start of each line; - # $object doesn't have directory information. - stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` - tmpdepfile="$stripped.u" - outname="$stripped.o" - if test "$libtool" = yes; then - "$@" -Wc,-M - else - "$@" -M - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - - if test -f "$tmpdepfile"; then - # Each line is of the form `foo.o: dependent.h'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" - sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -tru64) - # The Tru64 AIX compiler uses -MD to generate dependencies as a side - # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in `foo.d' instead, so we check for that too. - # Subdirectories are respected. - - base=`echo "$object" | sed -e 's/\.o$/.d/' -e 's/\.lo$/.d/'` - tmpdepfile1="$base.o.d" - tmpdepfile2="$base.d" - if test "$libtool" = yes; then - "$@" -Wc,-MD - else - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - if test -f "$tmpdepfile1"; then - tmpdepfile="$tmpdepfile1" - else - tmpdepfile="$tmpdepfile2" - fi - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a space and a tab in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the proprocessed file to stdout, regardless of -o, - # because we must use -o when running libtool. - test -z "$dashmflag" && dashmflag=-M - ( IFS=" " - case " $* " in - *" --mode=compile "*) # this is libtool, let us make it quiet - for arg - do # cycle over the arguments - case "$arg" in - "--mode=compile") - # insert --quiet before "--mode=compile" - set fnord "$@" --quiet - shift # fnord - ;; - esac - set fnord "$@" "$arg" - shift # fnord - shift # "$arg" - done - ;; - esac - "$@" $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" - ) & - proc=$! - "$@" - stat=$? - wait "$proc" - if test "$stat" != 0; then exit $stat; fi - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - tr ' ' ' -' < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - # X makedepend - ( - shift - cleared=no - for arg in "$@"; do - case $cleared in no) - set ""; shift - cleared=yes - esac - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift;; - -*) - ;; - *) - set fnord "$@" "$arg"; shift;; - esac - done - obj_suffix="`echo $object | sed 's/^.*\././'`" - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} 2>/dev/null -o"$obj_suffix" -f"$tmpdepfile" "$@" - ) & - proc=$! - "$@" - stat=$? - wait "$proc" - if test "$stat" != 0; then exit $stat; fi - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' ' -' | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the proprocessed file to stdout, regardless of -o, - # because we must use -o when running libtool. - ( IFS=" " - case " $* " in - *" --mode=compile "*) - for arg - do # cycle over the arguments - case $arg in - "--mode=compile") - # insert --quiet before "--mode=compile" - set fnord "$@" --quiet - shift # fnord - ;; - esac - set fnord "$@" "$arg" - shift # fnord - shift # "$arg" - done - ;; - esac - "$@" -E | - sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" - ) & - proc=$! - "$@" - stat=$? - wait "$proc" - if test "$stat" != 0; then exit $stat; fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the proprocessed file to stdout, regardless of -o, - # because we must use -o when running libtool. - ( IFS=" " - case " $* " in - *" --mode=compile "*) - for arg - do # cycle over the arguments - case $arg in - "--mode=compile") - # insert --quiet before "--mode=compile" - set fnord "$@" --quiet - shift # fnord - ;; - esac - set fnord "$@" "$arg" - shift # fnord - shift # "$arg" - done - ;; - esac - for arg - do - case "$arg" in - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" - ) & - proc=$! - "$@" - stat=$? - wait "$proc" - if test "$stat" != 0; then exit $stat; fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" - echo " " >> "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 diff --git a/config/elfutils.spec.in b/config/elfutils.spec.in deleted file mode 100644 index f5377b0e..00000000 --- a/config/elfutils.spec.in +++ /dev/null @@ -1,331 +0,0 @@ -%define gpl 0 -Summary: A collection of utilities and DSOs to handle compiled objects. -Name: elfutils -Version: @PACKAGE_VERSION@ -Release: 1 -Copyright: OSL -Group: Development/Tools -#URL: file://home/devel/drepper/ -Source: elfutils-%{version}.tar.gz -Obsoletes: libelf libelf-devel -Requires: elfutils-libelf = %{version}-%{release} -%if %{gpl} -Requires: binutils >= 2.14.90.0.4-26.2 -%endif - -# ExcludeArch: xxx - -BuildRoot: %{_tmppath}/%{name}-root -BuildRequires: gcc >= 3.2 -BuildRequires: bison >= 1.875 -BuildRequires: flex >= 2.5.4a - -%define _gnu %{nil} -%define _programprefix eu- - -%description -Elfutils is a collection of utilities, including ld (a linker), -nm (for listing symbols from object files), size (for listing the -section sizes of an object or archive file), strip (for discarding -symbols), readelf (to see the raw ELF file structures), and elflint -(to check for well-formed ELF files). Also included are numerous -helper libraries which implement DWARF, ELF, and machine-specific ELF -handling. - -%package devel -Summary: Development libraries to handle compiled objects. -Group: Development/Tools -Copyright: OSL -Requires: elfutils = %{version}-%{release} -Requires: elfutils-libelf-devel = %{version}-%{release} - -%description devel -The elfutils-devel package contains the libraries to create -applications for handling compiled objects. libebl provides some -higher-level ELF access functionality. libdw provides access to -the DWARF debugging information. libasm provides a programmable -assembler interface. - -%package libelf -Summary: Library to read and write ELF files. -Group: Development/Tools -%if %{gpl} -Copyright: GPL -%endif - -%description libelf -The elfutils-libelf package provides a DSO which allows reading and -writing ELF files on a high level. Third party programs depend on -this package to read internals of ELF files. The programs of the -elfutils package use it also to generate new ELF files. - -%package libelf-devel -Summary: Development support for libelf -Group: Development/Tools -Requires: elfutils-libelf = %{version}-%{release} -Conflicts: libelf-devel -%if %{gpl} -Copyright: GPL -%endif - -%description libelf-devel -The elfutils-libelf-devel package contains the libraries to create -applications for handling compiled objects. libelf allows you to -access the internals of the ELF object file format, so you can see the -different sections of an ELF file. - -%prep -%setup -q - -%build -mkdir build-%{_target_platform} -cd build-%{_target_platform} -../configure \ - --prefix=%{_prefix} --exec-prefix=%{_exec_prefix} \ - --bindir=%{_bindir} --sbindir=%{_sbindir} --sysconfdir=%{_sysconfdir} \ - --datadir=%{_datadir} --includedir=%{_includedir} --libdir=%{_libdir} \ - --libexecdir=%{_libexecdir} --localstatedir=%{_localstatedir} \ - --sharedstatedir=%{_sharedstatedir} --mandir=%{_mandir} \ - --infodir=%{_infodir} --program-prefix=%{_programprefix} --enable-shared -cd .. - -%install -rm -rf ${RPM_BUILD_ROOT} -mkdir -p ${RPM_BUILD_ROOT}%{_prefix} - -cd build-%{_target_platform} -#make check -%makeinstall - -chmod +x ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/lib*.so* -%if !%{gpl} -chmod +x ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/elfutils/lib*.so* -%endif - -cd .. - -%if !%{gpl} -# XXX Nuke unpackaged files -{ cd ${RPM_BUILD_ROOT} - rm -f .%{_bindir}/eu-ld - rm -f .%{_includedir}/elfutils/libasm.h - rm -f .%{_includedir}/elfutils/libdw.h - rm -f .%{_libdir}/libasm-%{version}.so - rm -f .%{_libdir}/libasm.a - rm -f .%{_libdir}/libdw.so - rm -f .%{_libdir}/libdw.a -} -%endif - -%check -cd build-%{_target_platform} -make check - -%clean -rm -rf ${RPM_BUILD_ROOT} - -%post -p /sbin/ldconfig - -%postun -p /sbin/ldconfig - -%post libelf -p /sbin/ldconfig - -%postun libelf -p /sbin/ldconfig - -%files -%defattr(-,root,root) -%doc README TODO -%if %{gpl} -%doc fake-src/FULL -%endif -%{_bindir}/eu-elflint -%{_bindir}/eu-nm -%{_bindir}/eu-readelf -%{_bindir}/eu-size -%{_bindir}/eu-strip -%if !%{gpl} -#%{_bindir}/eu-ld -#%{_libdir}/libasm-%{version}.so -%{_libdir}/libdw-%{version}.so -#%{_libdir}/libasm*.so.* -%{_libdir}/libdw*.so.* -%dir %{_libdir}/elfutils -%{_libdir}/elfutils/lib*.so -%endif - -%files devel -%defattr(-,root,root) -%{_includedir}/dwarf.h -%dir %{_includedir}/elfutils -%{_includedir}/elfutils/elf-knowledge.h -%if !%{gpl} -%{_includedir}/elfutils/libebl.h -#%{_libdir}/libasm.a -%{_libdir}/libebl.a -#%{_libdir}/libdw.a -#%{_libdir}/libasm.so -#%{_libdir}/libdw.so -%endif - -%files libelf -%defattr(-,root,root) -%{_libdir}/libelf-%{version}.so -%{_libdir}/libelf*.so.* - -%files libelf-devel -%defattr(-,root,root) -%{_includedir}/libelf.h -%{_includedir}/gelf.h -%{_includedir}/nlist.h -%{_libdir}/libelf.a -%{_libdir}/libelf.so - -%changelog -* Fri Jan 16 2004 Jakub Jelinek <jakub@redhat.com> 0.94-1 -- upgrade to 0.94 - -* Fri Jan 16 2004 Jakub Jelinek <jakub@redhat.com> 0.93-1 -- upgrade to 0.93 - -* Thu Jan 8 2004 Jakub Jelinek <jakub@redhat.com> 0.92-1 -- full version -- macroized spec file for GPL or OSL builds -- include only libelf under GPL plus wrapper scripts - -* Wed Jan 7 2004 Jakub Jelinek <jakub@redhat.com> 0.91-2 -- macroized spec file for GPL or OSL builds - -* Wed Jan 7 2004 Ulrich Drepper <drepper@redhat.com> -- split elfutils-devel into two packages. - -* Wed Jan 7 2004 Jakub Jelinek <jakub@redhat.com> 0.91-1 -- include only libelf under GPL plus wrapper scripts - -* Tue Dec 23 2003 Jeff Johnson <jbj@redhat.com> 0.89-3 -- readelf, not readline, in %%description (#111214). - -* Fri Sep 26 2003 Bill Nottingham <notting@redhat.com> 0.89-1 -- update to 0.89 (fix eu-strip) - -* Tue Sep 23 2003 Jakub Jelinek <jakub@redhat.com> 0.86-3 -- update to 0.86 (fix eu-strip on s390x/alpha) -- libebl is an archive now; remove references to DSO - -* Mon Jul 14 2003 Jeff Johnson <jbj@redhat.com> 0.84-3 -- upgrade to 0.84 (readelf/elflint improvements, rawhide bugs fixed). - -* Fri Jul 11 2003 Jeff Johnson <jbj@redhat.com> 0.83-3 -- upgrade to 0.83 (fix invalid ELf handle on *.so strip, more). - -* Wed Jul 9 2003 Jeff Johnson <jbj@redhat.com> 0.82-3 -- upgrade to 0.82 (strip tests fixed on big-endian). - -* Tue Jul 8 2003 Jeff Johnson <jbj@redhat.com> 0.81-3 -- upgrade to 0.81 (strip excludes unused symtable entries, test borked). - -* Thu Jun 26 2003 Jeff Johnson <jbj@redhat.com> 0.80-3 -- upgrade to 0.80 (debugedit changes for kernel in progress). - -* Wed Jun 04 2003 Elliot Lee <sopwith@redhat.com> -- rebuilt - -* Wed May 21 2003 Jeff Johnson <jbj@redhat.com> 0.79-2 -- upgrade to 0.79 (correct formats for size_t, more of libdw "works"). - -* Mon May 19 2003 Jeff Johnson <jbj@redhat.com> 0.78-2 -- upgrade to 0.78 (libdwarf bugfix, libdw additions). - -* Mon Feb 24 2003 Elliot Lee <sopwith@redhat.com> -- debuginfo rebuild - -* Thu Feb 20 2003 Jeff Johnson <jbj@redhat.com> 0.76-2 -- use the correct way of identifying the section via the sh_info link. - -* Sat Feb 15 2003 Jakub Jelinek <jakub@redhat.com> 0.75-2 -- update to 0.75 (eu-strip -g fix) - -* Tue Feb 11 2003 Jakub Jelinek <jakub@redhat.com> 0.74-2 -- update to 0.74 (fix for writing with some non-dirty sections) - -* Thu Feb 6 2003 Jeff Johnson <jbj@redhat.com> 0.73-3 -- another -0.73 update (with sparc fixes). -- do "make check" in %%check, not %%install, section. - -* Mon Jan 27 2003 Jeff Johnson <jbj@redhat.com> 0.73-2 -- update to 0.73 (with s390 fixes). - -* Wed Jan 22 2003 Tim Powers <timp@redhat.com> -- rebuilt - -* Wed Jan 22 2003 Jakub Jelinek <jakub@redhat.com> 0.72-4 -- fix arguments to gelf_getsymshndx and elf_getshstrndx -- fix other warnings -- reenable checks on s390x - -* Sat Jan 11 2003 Karsten Hopp <karsten@redhat.de> 0.72-3 -- temporarily disable checks on s390x, until someone has - time to look at it - -* Thu Dec 12 2002 Jakub Jelinek <jakub@redhat.com> 0.72-2 -- update to 0.72 - -* Wed Dec 11 2002 Jakub Jelinek <jakub@redhat.com> 0.71-2 -- update to 0.71 - -* Wed Dec 11 2002 Jeff Johnson <jbj@redhat.com> 0.69-4 -- update to 0.69. -- add "make check" and segfault avoidance patch. -- elfutils-libelf needs to run ldconfig. - -* Tue Dec 10 2002 Jeff Johnson <jbj@redhat.com> 0.68-2 -- update to 0.68. - -* Fri Dec 6 2002 Jeff Johnson <jbj@redhat.com> 0.67-2 -- update to 0.67. - -* Tue Dec 3 2002 Jeff Johnson <jbj@redhat.com> 0.65-2 -- update to 0.65. - -* Mon Dec 2 2002 Jeff Johnson <jbj@redhat.com> 0.64-2 -- update to 0.64. - -* Sun Dec 1 2002 Ulrich Drepper <drepper@redhat.com> 0.64 -- split packages further into elfutils-libelf - -* Sat Nov 30 2002 Jeff Johnson <jbj@redhat.com> 0.63-2 -- update to 0.63. - -* Fri Nov 29 2002 Ulrich Drepper <drepper@redhat.com> 0.62 -- Adjust for dropping libtool - -* Sun Nov 24 2002 Jeff Johnson <jbj@redhat.com> 0.59-2 -- update to 0.59 - -* Thu Nov 14 2002 Jeff Johnson <jbj@redhat.com> 0.56-2 -- update to 0.56 - -* Thu Nov 7 2002 Jeff Johnson <jbj@redhat.com> 0.54-2 -- update to 0.54 - -* Sun Oct 27 2002 Jeff Johnson <jbj@redhat.com> 0.53-2 -- update to 0.53 -- drop x86_64 hack, ICE fixed in gcc-3.2-11. - -* Sat Oct 26 2002 Jeff Johnson <jbj@redhat.com> 0.52-3 -- get beehive to punch a rhpkg generated package. - -* Wed Oct 23 2002 Jeff Johnson <jbj@redhat.com> 0.52-2 -- build in 8.0.1. -- x86_64: avoid gcc-3.2 ICE on x86_64 for now. - -* Tue Oct 22 2002 Ulrich Drepper <drepper@redhat.com> 0.52 -- Add libelf-devel to conflicts for elfutils-devel - -* Mon Oct 21 2002 Ulrich Drepper <drepper@redhat.com> 0.50 -- Split into runtime and devel package - -* Fri Oct 18 2002 Ulrich Drepper <drepper@redhat.com> 0.49 -- integrate into official sources - -* Wed Oct 16 2002 Jeff Johnson <jbj@redhat.com> 0.46-1 -- Swaddle. diff --git a/config/install-sh b/config/install-sh deleted file mode 100644 index 398a88e1..00000000 --- a/config/install-sh +++ /dev/null @@ -1,251 +0,0 @@ -#!/bin/sh -# -# install - install a program, script, or datafile -# This comes from X11R5 (mit/util/scripts/install.sh). -# -# Copyright 1991 by the Massachusetts Institute of Technology -# -# Permission to use, copy, modify, distribute, and sell this software and its -# documentation for any purpose is hereby granted without fee, provided that -# the above copyright notice appear in all copies and that both that -# copyright notice and this permission notice appear in supporting -# documentation, and that the name of M.I.T. not be used in advertising or -# publicity pertaining to distribution of the software without specific, -# written prior permission. M.I.T. makes no representations about the -# suitability of this software for any purpose. It is provided "as is" -# without express or implied warranty. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd="$cpprog" - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd="$stripprog" - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "install: no input file specified" - exit 1 -else - : -fi - -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d $dst ]; then - instcmd=: - chmodcmd="" - else - instcmd=$mkdirprog - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f $src -o -d $src ] - then - : - else - echo "install: $src does not exist" - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "install: no destination specified" - exit 1 - else - : - fi - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - - if [ -d $dst ] - then - dst="$dst"/`basename $src` - else - : - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' - ' -IFS="${IFS-${defaultIFS}}" - -oIFS="${IFS}" -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS="${oIFS}" - -pathcomp='' - -while [ $# -ne 0 ] ; do - pathcomp="${pathcomp}${1}" - shift - - if [ ! -d "${pathcomp}" ] ; - then - $mkdirprog "${pathcomp}" - else - : - fi - - pathcomp="${pathcomp}/" -done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd $dst && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else : ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else : ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename $dst` - else - dstfile=`basename $dst $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename $dst` - else - : - fi - -# Make a temp file name in the proper directory. - - dsttmp=$dstdir/#inst.$$# - -# Move or copy the file name to the temp name - - $doit $instcmd $src $dsttmp && - - trap "rm -f ${dsttmp}" 0 && - -# and set any options; do chmod last to preserve setuid bits - -# If any of these fail, we abort the whole thing. If we want to -# ignore errors from any of these, just make sure not to ignore -# errors from the above "$doit $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else :;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else :;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else :;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else :;fi && - -# Now rename the file to the real destination. - - $doit $rmcmd -f $dstdir/$dstfile && - $doit $mvcmd $dsttmp $dstdir/$dstfile - -fi && - - -exit 0 diff --git a/config/missing b/config/missing deleted file mode 100644 index dd583709..00000000 --- a/config/missing +++ /dev/null @@ -1,336 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. -# Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc. -# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 -fi - -run=: - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi - -case "$1" in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case "$1" in - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails - -Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - tar try tar, gnutar, gtar, then tar without non-portable flags - yacc create \`y.tab.[ch]', if possible, from existing .[ch]" - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing 0.4 - GNU automake" - ;; - - -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 - ;; - - aclocal*) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case "$f" in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake*) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is needed, and you do not seem to have it handy on your - system. You might have modified some files without having the - proper tools for further handling them. - You can get \`$1Help2man' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` - test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison|yacc) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if [ ! -f y.tab.h ]; then - echo >y.tab.h - fi - if [ ! -f y.tab.c ]; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex|flex) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if [ ! -f lex.yy.c ]; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` - fi - if [ -f "$file" ]; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit 1 - fi - ;; - - makeinfo) - if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then - # We have makeinfo, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` - fi - touch $file - ;; - - tar) - shift - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - fi - - # We have already tried tar in the generic part. - # Look for gnutar/gtar before invocation to avoid ugly error - # messages. - if (gnutar --version > /dev/null 2>&1); then - gnutar ${1+"$@"} && exit 0 - fi - if (gtar --version > /dev/null 2>&1); then - gtar ${1+"$@"} && exit 0 - fi - firstarg="$1" - if shift; then - case "$firstarg" in - *o*) - firstarg=`echo "$firstarg" | sed s/o//` - tar "$firstarg" ${1+"$@"} && exit 0 - ;; - esac - case "$firstarg" in - *h*) - firstarg=`echo "$firstarg" | sed s/h//` - tar "$firstarg" ${1+"$@"} && exit 0 - ;; - esac - fi - - echo 1>&2 "\ -WARNING: I can't seem to be able to run \`tar' with the given arguments. - You may want to install GNU tar or Free paxutils, or check the - command line arguments." - exit 1 - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and you do not seem to have it handy on your - system. You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequirements for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac - -exit 0 diff --git a/config/mkinstalldirs b/config/mkinstalldirs deleted file mode 100644 index e1666cfb..00000000 --- a/config/mkinstalldirs +++ /dev/null @@ -1,101 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy -# Author: Noah Friedman <friedman@prep.ai.mit.edu> -# Created: 1993-05-16 -# Public domain - -# $Id: mkinstalldirs,v 1.1 2004/01/18 07:34:34 drepper Exp $ - -errstatus=0 -dirmode="" - -usage="\ -Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." - -# process command line arguments -while test $# -gt 0 ; do - case "${1}" in - -h | --help | --h* ) # -h for help - echo "${usage}" 1>&2; exit 0 ;; - -m ) # -m PERM arg - shift - test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } - dirmode="${1}" - shift ;; - -- ) shift; break ;; # stop option processing - -* ) echo "${usage}" 1>&2; exit 1 ;; # unknown option - * ) break ;; # first non-opt arg - esac -done - -for file -do - if test -d "$file"; then - shift - else - break - fi -done - -case $# in -0) exit 0 ;; -esac - -case $dirmode in -'') - if mkdir -p -- . 2>/dev/null; then - echo "mkdir -p -- $*" - exec mkdir -p -- "$@" - fi ;; -*) - if mkdir -m "$dirmode" -p -- . 2>/dev/null; then - echo "mkdir -m $dirmode -p -- $*" - exec mkdir -m "$dirmode" -p -- "$@" - fi ;; -esac - -for file -do - set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` - shift - - pathcomp= - for d - do - pathcomp="$pathcomp$d" - case "$pathcomp" in - -* ) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" - - mkdir "$pathcomp" || lasterr=$? - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - else - if test ! -z "$dirmode"; then - echo "chmod $dirmode $pathcomp" - - lasterr="" - chmod "$dirmode" "$pathcomp" || lasterr=$? - - if test ! -z "$lasterr"; then - errstatus=$lasterr - fi - fi - fi - fi - - pathcomp="$pathcomp/" - done -done - -exit $errstatus - -# Local Variables: -# mode: shell-script -# sh-indentation: 3 -# End: -# mkinstalldirs ends here diff --git a/configure b/configure deleted file mode 100755 index b79a271f..00000000 --- a/configure +++ /dev/null @@ -1,7272 +0,0 @@ -#! /bin/sh -# From configure.ac Revision: 1.30 . -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59 for Red Hat elfutils 0.97. -# -# Report bugs to <http://bugzilla.redhat.com/bugzilla/>. -# -# Copyright (C) 2003 Free Software Foundation, Inc. -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -# -# Copyright (C) 1996-2003, 2004 Red Hat, Inc. -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -exec 6>&1 - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_config_libobj_dir=. -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - -# Identity of this package. -PACKAGE_NAME='Red Hat elfutils' -PACKAGE_TARNAME='elfutils' -PACKAGE_VERSION='0.97' -PACKAGE_STRING='Red Hat elfutils 0.97' -PACKAGE_BUGREPORT='http://bugzilla.redhat.com/bugzilla/' - -ac_unique_file="libelf/libelf.h" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP MKINSTALLDIRS MSGFMT GMSGFMT XGETTEXT MSGMERGE USE_NLS LIBICONV LTLIBICONV INTLLIBS LIBINTL LTLIBINTL POSUB RANLIB ac_ct_RANLIB YACC LEX LEXLIB LEX_OUTPUT_ROOT LOCALEDIR DATADIRNAME NATIVE_LD_TRUE NATIVE_LD_FALSE base_cpu MUDFLAP_TRUE MUDFLAP_FALSE LIBOBJS LTLIBOBJS' -ac_subst_files='' - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -ac_prev= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_option in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; - - -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi -fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || - { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 - { (exit 1); exit 1; }; } -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CC_set=${CC+set} -ac_env_CC_value=$CC -ac_cv_env_CC_set=${CC+set} -ac_cv_env_CC_value=$CC -ac_env_CFLAGS_set=${CFLAGS+set} -ac_env_CFLAGS_value=$CFLAGS -ac_cv_env_CFLAGS_set=${CFLAGS+set} -ac_cv_env_CFLAGS_value=$CFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures Red Hat elfutils 0.97 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -_ACEOF - - cat <<_ACEOF -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of Red Hat elfutils 0.97:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-tls enable use of thread local storage - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - --disable-nls do not use Native Language Support - --disable-largefile omit support for large files - --disable-generic do not build generic linker - --enable-mudflap build binaries with mudflap instrumentation - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-gnu-ld assume the C compiler uses GNU ld default=no - --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib - --without-libiconv-prefix don't search for libiconv in includedir and libdir - --with-libintl-prefix=DIR search for libintl in DIR/include and DIR/lib - --without-libintl-prefix don't search for libintl in includedir and libdir - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a - nonstandard directory <lib dir> - CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have - headers in a nonstandard directory <include dir> - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to <http://bugzilla.redhat.com/bugzilla/>. -_ACEOF -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - ac_popdir=`pwd` - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd "$ac_popdir" - done -fi - -test -n "$ac_init_help" && exit 0 -if $ac_init_version; then - cat <<\_ACEOF -Red Hat elfutils configure 0.97 -generated by GNU Autoconf 2.59 - -Copyright (C) 2003 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. - -Copyright (C) 1996-2003, 2004 Red Hat, Inc. -_ACEOF - exit 0 -fi -exec 5>config.log -cat >&5 <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by Red Hat elfutils $as_me 0.97, which was -generated by GNU Autoconf 2.59. Invocation command line was - - $ $0 $@ - -_ACEOF -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_sep= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; - 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " - ;; - esac - done -done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - cat <<\_ASBOX -## ---------------- ## -## Cache variables. ## -## ---------------- ## -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -{ - (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) - sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; - *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} - echo - - cat <<\_ASBOX -## ----------------- ## -## Output variables. ## -## ----------------- ## -_ASBOX - echo - for ac_var in $ac_subst_vars - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - - if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------- ## -## Output files. ## -## ------------- ## -_ASBOX - echo - for ac_var in $ac_subst_files - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - fi - - if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## -## confdefs.h. ## -## ----------- ## -_ASBOX - echo - sed "/^$/d" confdefs.h | sort - echo - fi - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status - ' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; - esac - fi -else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" - case $ac_old_set,$ac_new_set in - set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - - - - - - - - - - - - - -ac_aux_dir= -for ac_dir in config $srcdir/config; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f $ac_dir/shtool; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in config $srcdir/config" >&5 -echo "$as_me: error: cannot find install-sh or install.sh in config $srcdir/config" >&2;} - { (exit 1); exit 1; }; } -fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. - - ac_config_files="$ac_config_files config/Makefile" - - - - - -am__api_version="1.9" -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - done - done - ;; -esac -done - - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL=$ac_install_sh - fi -fi -echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -echo "$as_me:$LINENO: checking whether build environment is sane" >&5 -echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 -# Just in case -sleep 1 -echo timestamp > conftest.file -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&5 -echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&2;} - { (exit 1); exit 1; }; } - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! -Check your system clock" >&5 -echo "$as_me: error: newly created file is older than distributed files! -Check your system clock" >&2;} - { (exit 1); exit 1; }; } -fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -test "$program_prefix" != NONE && - program_transform_name="s,^,$program_prefix,;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s,\$,$program_suffix,;$program_transform_name" -# Double any \ or $. echo might interpret backslashes. -# By default was `s,x,x', remove it if useless. -cat <<\_ACEOF >conftest.sed -s/[\\$]/&&/g;s/;s,x,x,$// -_ACEOF -program_transform_name=`echo $program_transform_name | sed -f conftest.sed` -rm conftest.sed - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 -echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then - # We used to keeping the `.' as first argument, in order to - # allow $(mkdir_p) to be used without argument. As in - # $(mkdir_p) $(somedir) - # where $(somedir) is conditionally defined. However this is wrong - # for two reasons: - # 1. if the package is installed by a user who cannot write `.' - # make install will fail, - # 2. the above comment should most certainly read - # $(mkdir_p) $(DESTDIR)$(somedir) - # so it does not work when $(somedir) is undefined and - # $(DESTDIR) is not. - # To support the latter case, we have to write - # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), - # so the `.' trick is pointless. - mkdir_p='mkdir -p --' -else - # On NextStep and OpenStep, the `mkdir' command does not - # recognize any option. It will interpret all options as - # directories to create, and then abort because `.' already - # exists. - for d in ./-p ./--version; - do - test -d $d && rmdir $d - done - # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. - if test -f "$ac_aux_dir/mkinstalldirs"; then - mkdir_p='$(mkinstalldirs)' - else - mkdir_p='$(install_sh) -d' - fi -fi - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_AWK+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$AWK" && break -done - -echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 -set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` -if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.make <<\_ACEOF -all: - @echo 'ac_maketemp="$(MAKE)"' -_ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes -else - eval ac_cv_prog_make_${ac_make}_set=no -fi -rm -f conftest.make -fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - SET_MAKE= -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -# test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && - test -f $srcdir/config.status; then - { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 -echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} - { (exit 1); exit 1; }; } -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE='elfutils' - VERSION='0.97' - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -install_sh=${install_sh-"$am_aux_dir/install-sh"} - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - STRIP=$ac_ct_STRIP -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. - -AMTAR=${AMTAR-"${am_missing_run}tar"} - -am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' - - - - - - - - ac_config_files="$ac_config_files Makefile" - - ac_config_headers="$ac_config_headers config.h" - - -case m4 in - [\\/]* | ?:[\\/]* ) ac_macro_dir=m4 ;; - *) ac_macro_dir=$srcdir/m4 ;; -esac -if test -d "$ac_macro_dir"; then : -else - { { echo "$as_me:$LINENO: error: cannot find macro directory \`m4'" >&5 -echo "$as_me: error: cannot find macro directory \`m4'" >&2;} - { (exit 1); exit 1; }; } -fi - - ac_config_files="$ac_config_files m4/Makefile" - - - ac_config_files="$ac_config_files elfutils.spec:config/elfutils.spec.in" - - - -# Make sure we can run config.sub. -$ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} - { (exit 1); exit 1; }; } - -echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6 -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } -ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6 -build=$ac_cv_build -build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - -echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6 -if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_host_alias=$host_alias -test -z "$ac_cv_host_alias" && - ac_cv_host_alias=$ac_cv_build_alias -ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6 -host=$ac_cv_host -host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - - -# Check whether --enable-tls or --disable-tls was given. -if test "${enable_tls+set}" = set; then - enableval="$enable_tls" - cat >>confdefs.h <<\_ACEOF -#define USE_TLS 1 -_ACEOF - -fi; - - - -ALL_LINGUAS= - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_CC" && break -done - - CC=$ac_ct_CC -fi - -fi - - -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - -# Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 - (eval $ac_compiler --version </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 - (eval $ac_compiler -v </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 - (eval $ac_compiler -V </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. - -# Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -# b.out is created by i960 compilers. -for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) - ;; - conftest.$ac_ext ) - # This is the source file. - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool, - # but it would be cool to find out if it's true. Does anybody - # maintain Libtool? --akim. - export ac_cv_exeext - break;; - * ) - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables -See \`config.log' for more details." >&5 -echo "$as_me: error: C compiler cannot create executables -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } -fi - -ac_exeext=$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 - -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - fi - fi -fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -rm -f a.out a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext - break;; - * ) break;; - esac -done -else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 -if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_compiler_gnu=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 -GCC=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -CFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_prog_cc_g=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_prog_cc_stdc=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <stdarg.h> -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std1 is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std1. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext -done -rm -f conftest.$ac_ext conftest.$ac_objext -CC=$ac_save_CC - -fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; - *) - echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; -esac - -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -#include <stdlib.h> -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -DEPDIR="${am__leading_dot}deps" - - ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo done -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 -echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi -fi - - -echo "$as_me:$LINENO: result: $_am_result" >&5 -echo "${ECHO_T}$_am_result" >&6 -rm -f confinc confmf - -# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then - enableval="$enable_dependency_tracking" - -fi; -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi - - -if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - - - -depcc="$CC" am_compiler_list= - -echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 -if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - - -if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <ac_nonexistent.h> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <ac_nonexistent.h> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -if test "${ac_cv_prog_egrep+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' - fi -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 -echo "${ECHO_T}$ac_cv_prog_egrep" >&6 - EGREP=$ac_cv_prog_egrep - - -if test $ac_cv_c_compiler_gnu = yes; then - echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5 -echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6 -if test "${ac_cv_prog_gcc_traditional+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_pattern="Autoconf.*'x'" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <sgtty.h> -Autoconf TIOCGETP -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "$ac_pattern" >/dev/null 2>&1; then - ac_cv_prog_gcc_traditional=yes -else - ac_cv_prog_gcc_traditional=no -fi -rm -f conftest* - - - if test $ac_cv_prog_gcc_traditional = no; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <termio.h> -Autoconf TCGETA -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "$ac_pattern" >/dev/null 2>&1; then - ac_cv_prog_gcc_traditional=yes -fi -rm -f conftest* - - fi -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5 -echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6 - if test $ac_cv_prog_gcc_traditional = yes; then - CC="$CC -traditional" - fi -fi - - - MKINSTALLDIRS= - if test -n "$ac_aux_dir"; then - MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" - fi - if test -z "$MKINSTALLDIRS"; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - - - - - - # Extract the first word of "msgfmt", so it can be a program name with args. -set dummy msgfmt; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_MSGFMT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case "$MSGFMT" in - /*) - ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - ac_cv_path_MSGFMT="$ac_dir/$ac_word" - break - fi - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" - ;; -esac -fi -MSGFMT="$ac_cv_path_MSGFMT" -if test "$MSGFMT" != ":"; then - echo "$as_me:$LINENO: result: $MSGFMT" >&5 -echo "${ECHO_T}$MSGFMT" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - # Extract the first word of "gmsgfmt", so it can be a program name with args. -set dummy gmsgfmt; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_GMSGFMT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $GMSGFMT in - [\\/]* | ?:[\\/]*) - ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" - ;; -esac -fi -GMSGFMT=$ac_cv_path_GMSGFMT - -if test -n "$GMSGFMT"; then - echo "$as_me:$LINENO: result: $GMSGFMT" >&5 -echo "${ECHO_T}$GMSGFMT" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - - # Extract the first word of "xgettext", so it can be a program name with args. -set dummy xgettext; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_XGETTEXT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case "$XGETTEXT" in - /*) - ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - ac_cv_path_XGETTEXT="$ac_dir/$ac_word" - break - fi - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" - ;; -esac -fi -XGETTEXT="$ac_cv_path_XGETTEXT" -if test "$XGETTEXT" != ":"; then - echo "$as_me:$LINENO: result: $XGETTEXT" >&5 -echo "${ECHO_T}$XGETTEXT" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - rm -f messages.po - - # Extract the first word of "msgmerge", so it can be a program name with args. -set dummy msgmerge; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_MSGMERGE+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case "$MSGMERGE" in - /*) - ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then - ac_cv_path_MSGMERGE="$ac_dir/$ac_word" - break - fi - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" - ;; -esac -fi -MSGMERGE="$ac_cv_path_MSGMERGE" -if test "$MSGMERGE" != ":"; then - echo "$as_me:$LINENO: result: $MSGMERGE" >&5 -echo "${ECHO_T}$MSGMERGE" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - - if test "$GMSGFMT" != ":"; then - if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && - (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` - echo "$as_me:$LINENO: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 -echo "${ECHO_T}found $GMSGFMT program is not GNU msgfmt; ignore it" >&6 - GMSGFMT=":" - fi - fi - - if test "$XGETTEXT" != ":"; then - if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && - (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5 -echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6 - XGETTEXT=":" - fi - rm -f messages.po - fi - - ac_config_commands="$ac_config_commands default-1" - - - - if test "X$prefix" = "XNONE"; then - acl_final_prefix="$ac_default_prefix" - else - acl_final_prefix="$prefix" - fi - if test "X$exec_prefix" = "XNONE"; then - acl_final_exec_prefix='${prefix}' - else - acl_final_exec_prefix="$exec_prefix" - fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" - prefix="$acl_save_prefix" - - -# Check whether --with-gnu-ld or --without-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then - withval="$with_gnu_ld" - test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi; -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - echo "$as_me:$LINENO: checking for ld used by GCC" >&5 -echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | [A-Za-z]:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - echo "$as_me:$LINENO: checking for GNU ld" >&5 -echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 -else - echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 -fi -if test "${acl_cv_path_LD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then - test "$with_gnu_ld" != no && break - else - test "$with_gnu_ld" != yes && break - fi - fi - done - IFS="$ac_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi - -LD="$acl_cv_path_LD" -if test -n "$LD"; then - echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 -if test "${acl_cv_prog_gnu_ld+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then - acl_cv_prog_gnu_ld=yes -else - acl_cv_prog_gnu_ld=no -fi -fi -echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5 -echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6 -with_gnu_ld=$acl_cv_prog_gnu_ld - - - - echo "$as_me:$LINENO: checking for shared library run path origin" >&5 -echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6 -if test "${acl_cv_rpath+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ - ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh - . ./conftest.sh - rm -f ./conftest.sh - acl_cv_rpath=done - -fi -echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 -echo "${ECHO_T}$acl_cv_rpath" >&6 - wl="$acl_cv_wl" - libext="$acl_cv_libext" - shlibext="$acl_cv_shlibext" - hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - hardcode_direct="$acl_cv_hardcode_direct" - hardcode_minus_L="$acl_cv_hardcode_minus_L" - sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec" - sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec" - - - - - - - - use_additional=yes - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - -# Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. -if test "${with_libiconv_prefix+set}" = set; then - withval="$with_libiconv_prefix" - - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi - -fi; - LIBICONV= - LTLIBICONV= - INCICONV= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='iconv ' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" - else - : - fi - else - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "X$found_dir" = "X/usr/lib"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - if test "$hardcode_direct" = yes; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - haveit= - for x in $LDFLAGS $LIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" - fi - fi - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INCICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - if test -n "$found_la"; then - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIBICONV; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -l*) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" - ;; - esac - done - fi - else - LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" - else - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - for found_dir in $ltrpathdirs; do - LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" - done - fi - - - - - - - - - - - - - - - - - - echo "$as_me:$LINENO: checking whether NLS is requested" >&5 -echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&6 - # Check whether --enable-nls or --disable-nls was given. -if test "${enable_nls+set}" = set; then - enableval="$enable_nls" - USE_NLS=$enableval -else - USE_NLS=yes -fi; - echo "$as_me:$LINENO: result: $USE_NLS" >&5 -echo "${ECHO_T}$USE_NLS" >&6 - - - - LIBINTL= - LTLIBINTL= - POSUB= - - if test "$USE_NLS" = "yes"; then - gt_use_preinstalled_gnugettext=no - - - - - - - echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 -echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6 -if test "${gt_cv_func_gnugettext1_libc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <libintl.h> -extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings; -int -main () -{ -bindtextdomain ("", ""); -return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - gt_cv_func_gnugettext1_libc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -gt_cv_func_gnugettext1_libc=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libc" >&5 -echo "${ECHO_T}$gt_cv_func_gnugettext1_libc" >&6 - - if test "$gt_cv_func_gnugettext1_libc" != "yes"; then - - - - - - am_save_CPPFLAGS="$CPPFLAGS" - - for element in $INCICONV; do - haveit= - for x in $CPPFLAGS; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" - fi - done - - - echo "$as_me:$LINENO: checking for iconv" >&5 -echo $ECHO_N "checking for iconv... $ECHO_C" >&6 -if test "${am_cv_func_iconv+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <stdlib.h> -#include <iconv.h> -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - am_cv_func_iconv=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <stdlib.h> -#include <iconv.h> -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - am_cv_lib_iconv=yes - am_cv_func_iconv=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$am_save_LIBS" - fi - -fi -echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 -echo "${ECHO_T}$am_cv_func_iconv" >&6 - if test "$am_cv_func_iconv" = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_ICONV 1 -_ACEOF - - fi - if test "$am_cv_lib_iconv" = yes; then - echo "$as_me:$LINENO: checking how to link with libiconv" >&5 -echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6 - echo "$as_me:$LINENO: result: $LIBICONV" >&5 -echo "${ECHO_T}$LIBICONV" >&6 - else - CPPFLAGS="$am_save_CPPFLAGS" - LIBICONV= - LTLIBICONV= - fi - - - - - - - use_additional=yes - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - -# Check whether --with-libintl-prefix or --without-libintl-prefix was given. -if test "${with_libintl_prefix+set}" = set; then - withval="$with_libintl_prefix" - - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi - -fi; - LIBINTL= - LTLIBINTL= - INCINTL= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='intl ' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" - else - : - fi - else - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - if test "X$found_dir" = "X/usr/lib"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - if test "$hardcode_direct" = yes; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - haveit= - for x in $LDFLAGS $LIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" - else - LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" - else - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" - fi - fi - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INCINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - if test -n "$found_la"; then - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIBINTL; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -l*) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" - ;; - esac - done - fi - else - LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" - else - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - for found_dir in $ltrpathdirs; do - LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" - done - fi - - echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 -echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6 -if test "${gt_cv_func_gnugettext1_libintl+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCINTL" - gt_save_LIBS="$LIBS" - LIBS="$LIBS $LIBINTL" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <libintl.h> -extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (); -int -main () -{ -bindtextdomain ("", ""); -return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - gt_cv_func_gnugettext1_libintl=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -gt_cv_func_gnugettext1_libintl=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then - LIBS="$LIBS $LIBICONV" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <libintl.h> -extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (); -int -main () -{ -bindtextdomain ("", ""); -return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - LIBINTL="$LIBINTL $LIBICONV" - LTLIBINTL="$LTLIBINTL $LTLIBICONV" - gt_cv_func_gnugettext1_libintl=yes - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - fi - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS" -fi -echo "$as_me:$LINENO: result: $gt_cv_func_gnugettext1_libintl" >&5 -echo "${ECHO_T}$gt_cv_func_gnugettext1_libintl" >&6 - fi - - if test "$gt_cv_func_gnugettext1_libc" = "yes" \ - || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ - && test "$PACKAGE" != gettext; }; then - gt_use_preinstalled_gnugettext=yes - else - LIBINTL= - LTLIBINTL= - INCINTL= - fi - - - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - -cat >>confdefs.h <<\_ACEOF -#define ENABLE_NLS 1 -_ACEOF - - else - USE_NLS=no - fi - fi - - if test "$USE_NLS" = "yes"; then - - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then - echo "$as_me:$LINENO: checking how to link with libintl" >&5 -echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6 - echo "$as_me:$LINENO: result: $LIBINTL" >&5 -echo "${ECHO_T}$LIBINTL" >&6 - - for element in $INCINTL; do - haveit= - for x in $CPPFLAGS; do - - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - eval x=\"$x\" - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" - - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" - fi - done - - fi - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_GETTEXT 1 -_ACEOF - - -cat >>confdefs.h <<\_ACEOF -#define HAVE_DCGETTEXT 1 -_ACEOF - - fi - - POSUB=po - fi - - - - INTLLIBS="$LIBINTL" - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - RANLIB=$ac_ct_RANLIB -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -for ac_prog in 'bison -y' byacc -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_YACC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$YACC"; then - ac_cv_prog_YACC="$YACC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_YACC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -YACC=$ac_cv_prog_YACC -if test -n "$YACC"; then - echo "$as_me:$LINENO: result: $YACC" >&5 -echo "${ECHO_T}$YACC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$YACC" && break -done -test -n "$YACC" || YACC="yacc" - -for ac_prog in flex lex -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_LEX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$LEX"; then - ac_cv_prog_LEX="$LEX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_LEX="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -LEX=$ac_cv_prog_LEX -if test -n "$LEX"; then - echo "$as_me:$LINENO: result: $LEX" >&5 -echo "${ECHO_T}$LEX" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$LEX" && break -done -test -n "$LEX" || LEX=":" - -if test -z "$LEXLIB" -then - echo "$as_me:$LINENO: checking for yywrap in -lfl" >&5 -echo $ECHO_N "checking for yywrap in -lfl... $ECHO_C" >&6 -if test "${ac_cv_lib_fl_yywrap+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lfl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char yywrap (); -int -main () -{ -yywrap (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_fl_yywrap=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_fl_yywrap=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_fl_yywrap" >&5 -echo "${ECHO_T}$ac_cv_lib_fl_yywrap" >&6 -if test $ac_cv_lib_fl_yywrap = yes; then - LEXLIB="-lfl" -else - echo "$as_me:$LINENO: checking for yywrap in -ll" >&5 -echo $ECHO_N "checking for yywrap in -ll... $ECHO_C" >&6 -if test "${ac_cv_lib_l_yywrap+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ll $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char yywrap (); -int -main () -{ -yywrap (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_l_yywrap=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_l_yywrap=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_l_yywrap" >&5 -echo "${ECHO_T}$ac_cv_lib_l_yywrap" >&6 -if test $ac_cv_lib_l_yywrap = yes; then - LEXLIB="-ll" -fi - -fi - -fi - -if test "x$LEX" != "x:"; then - echo "$as_me:$LINENO: checking lex output file root" >&5 -echo $ECHO_N "checking lex output file root... $ECHO_C" >&6 -if test "${ac_cv_prog_lex_root+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # The minimal lex program is just a single line: %%. But some broken lexes -# (Solaris, I think it was) want two %% lines, so accommodate them. -cat >conftest.l <<_ACEOF -%% -%% -_ACEOF -{ (eval echo "$as_me:$LINENO: \"$LEX conftest.l\"") >&5 - (eval $LEX conftest.l) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -if test -f lex.yy.c; then - ac_cv_prog_lex_root=lex.yy -elif test -f lexyy.c; then - ac_cv_prog_lex_root=lexyy -else - { { echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5 -echo "$as_me: error: cannot find output from $LEX; giving up" >&2;} - { (exit 1); exit 1; }; } -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5 -echo "${ECHO_T}$ac_cv_prog_lex_root" >&6 -rm -f conftest.l -LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root - -echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5 -echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6 -if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # POSIX says lex can declare yytext either as a pointer or an array; the -# default is implementation-dependent. Figure out which it is, since -# not all implementations provide the %pointer and %array declarations. -ac_cv_prog_lex_yytext_pointer=no -echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c -ac_save_LIBS=$LIBS -LIBS="$LIBS $LEXLIB" -cat >conftest.$ac_ext <<_ACEOF -`cat $LEX_OUTPUT_ROOT.c` -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_lex_yytext_pointer=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_save_LIBS -rm -f "${LEX_OUTPUT_ROOT}.c" - -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5 -echo "${ECHO_T}$ac_cv_prog_lex_yytext_pointer" >&6 -if test $ac_cv_prog_lex_yytext_pointer = yes; then - -cat >>confdefs.h <<\_ACEOF -#define YYTEXT_POINTER 1 -_ACEOF - -fi - -fi -if test "$LEX" = :; then - LEX=${am_missing_run}flex -fi - -echo "$as_me:$LINENO: checking for gcc with C99 support" >&5 -echo $ECHO_N "checking for gcc with C99 support... $ECHO_C" >&6 -if test "${ac_cv_c99+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - old_CFLAGS="$CFLAGS" -CFLAGS="$CFLAGS -std=gnu99" -cat >conftest.$ac_ext <<_ACEOF -int foo (int a) { for (int i = 0; i < a; ++i) if (i % 4) break; int s = a; } -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c99=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_c99=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -CFLAGS="$old_CFLAGS" -fi -echo "$as_me:$LINENO: result: $ac_cv_c99" >&5 -echo "${ECHO_T}$ac_cv_c99" >&6 -if test "x$ac_cv_c99" != xyes; then - { { echo "$as_me:$LINENO: error: gcc with C99 support required" >&5 -echo "$as_me: error: gcc with C99 support required" >&2;} - { (exit 1); exit 1; }; } -fi - - -LOCALEDIR=$datadir - -cat >>confdefs.h <<_ACEOF -#define LOCALEDIR "$LOCALEDIR" -_ACEOF - - - - -DATADIRNAME=$datadir - - -# Check whether --enable-largefile or --disable-largefile was given. -if test "${enable_largefile+set}" = set; then - enableval="$enable_largefile" - -fi; -if test "$enable_largefile" != no; then - - echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 -echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6 -if test "${ac_cv_sys_largefile_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_sys_largefile_CC=no - if test "$GCC" != yes; then - ac_save_CC=$CC - while :; do - # IRIX 6.2 and later do not support large files by default, - # so use the C compiler's -n32 option if that helps. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <sys/types.h> - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF - rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext - CC="$CC -n32" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sys_largefile_CC=' -n32'; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext - break - done - CC=$ac_save_CC - rm -f conftest.$ac_ext - fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 -echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6 - if test "$ac_cv_sys_largefile_CC" != no; then - CC=$CC$ac_cv_sys_largefile_CC - fi - - echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 -echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6 -if test "${ac_cv_sys_file_offset_bits+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - while :; do - ac_cv_sys_file_offset_bits=no - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <sys/types.h> - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#define _FILE_OFFSET_BITS 64 -#include <sys/types.h> - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sys_file_offset_bits=64; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - break -done -fi -echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 -echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6 -if test "$ac_cv_sys_file_offset_bits" != no; then - -cat >>confdefs.h <<_ACEOF -#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits -_ACEOF - -fi -rm -f conftest* - echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 -echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6 -if test "${ac_cv_sys_large_files+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - while :; do - ac_cv_sys_large_files=no - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <sys/types.h> - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#define _LARGE_FILES 1 -#include <sys/types.h> - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sys_large_files=1; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - break -done -fi -echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 -echo "${ECHO_T}$ac_cv_sys_large_files" >&6 -if test "$ac_cv_sys_large_files" != no; then - -cat >>confdefs.h <<_ACEOF -#define _LARGE_FILES $ac_cv_sys_large_files -_ACEOF - -fi -rm -f conftest* -fi - - -native_ld=no -# Check whether --enable-generic or --disable-generic was given. -if test "${enable_generic+set}" = set; then - enableval="$enable_generic" - if test "$enable_generic" = no; then - case "$host_cpu" in - i?86) - cat >>confdefs.h <<\_ACEOF -#define NATIVE_ELF 32 -_ACEOF - - native_ld=yes - base_cpu=i386 - ;; - *) - { { echo "$as_me:$LINENO: error: no machine-specific linker for this configuration available" >&5 -echo "$as_me: error: no machine-specific linker for this configuration available" >&2;} - { (exit 1); exit 1; }; } - ;; - esac -fi -fi; - - - - -if test "$native_ld" = yes; then - NATIVE_LD_TRUE= - NATIVE_LD_FALSE='#' -else - NATIVE_LD_TRUE='#' - NATIVE_LD_FALSE= -fi - -if test -z "$base_cpu"; then - base_cpu=none -fi - - - -use_mudflap=no -# Check whether --enable-mudflap or --disable-mudflap was given. -if test "${enable_mudflap+set}" = set; then - enableval="$enable_mudflap" - if test "x$enable_mudflap" = xyes; then - # Check whether the compiler support -fmudflap. - old_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -fmudflap" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - use_mudflap=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -use_mudflap=fail -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS="$old_CFLAGS" -fi -fi; -if test "$use_mudflap" = fail; then - { { echo "$as_me:$LINENO: error: --enable-mudflap requires a compiler which understands this option -See \`config.log' for more details." >&5 -echo "$as_me: error: --enable-mudflap requires a compiler which understands this option -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - - -if test "$use_mudflap" = yes; then - MUDFLAP_TRUE= - MUDFLAP_FALSE='#' -else - MUDFLAP_TRUE='#' - MUDFLAP_FALSE= -fi - - - - - ac_config_files="$ac_config_files doc/Makefile" - - - ac_config_files="$ac_config_files lib/Makefile" - - - ac_config_files="$ac_config_files libelf/Makefile libelf-po/Makefile.in" - - - ac_config_files="$ac_config_files libebl/Makefile" - - - ac_config_files="$ac_config_files libdw/Makefile" - - - ac_config_files="$ac_config_files libcpu/Makefile" - - - ac_config_files="$ac_config_files libasm/Makefile" - - - ac_config_files="$ac_config_files src/Makefile po/Makefile.in" - - - ac_config_files="$ac_config_files tests/Makefile" - - - - - - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -{ - (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} | - sed ' - t clear - : clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" - cat confcache >$cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_i=`echo "$ac_i" | - sed 's/\$U\././;s/\.o$//;s/\.obj$//'` - # 2. Add them. - ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${NATIVE_LD_TRUE}" && test -z "${NATIVE_LD_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"NATIVE_LD\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"NATIVE_LD\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${MUDFLAP_TRUE}" && test -z "${MUDFLAP_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"MUDFLAP\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"MUDFLAP\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi - -: ${CONFIG_STATUS=./config.status} -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - -exec 6>&1 - -# Open the log real soon, to keep \$[0] and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF - -This file was extended by Red Hat elfutils $as_me 0.97, which was -generated by GNU Autoconf 2.59. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 -_ACEOF - -# Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi - -cat >>$CONFIG_STATUS <<\_ACEOF - -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to <bug-autoconf@gnu.org>." -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -ac_cs_version="\\ -Red Hat elfutils config.status 0.97 -configured by $0, generated by GNU Autoconf 2.59, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" - -Copyright (C) 2003 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir -INSTALL="$INSTALL" -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - ac_shift=: - ;; - -*) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_option=$1 - ac_need_defaults=false;; - esac - - case $ac_option in - # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" - ac_need_defaults=false;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -if \$ac_cs_recheck; then - echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion -fi - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -# -# INIT-COMMANDS section. -# - -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" -# Capture the value of obsolete $ALL_LINGUAS because we need it to compute - # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it - # from automake. - eval 'ALL_LINGUAS''="$ALL_LINGUAS"' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="${LINGUAS-%UNSET%}" - - -_ACEOF - - - -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_config_target in $ac_config_targets -do - case "$ac_config_target" in - # Handling of arguments. - "config/Makefile" ) CONFIG_FILES="$CONFIG_FILES config/Makefile" ;; - "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "m4/Makefile" ) CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;; - "elfutils.spec" ) CONFIG_FILES="$CONFIG_FILES elfutils.spec:config/elfutils.spec.in" ;; - "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; - "libelf/Makefile" ) CONFIG_FILES="$CONFIG_FILES libelf/Makefile" ;; - "libelf-po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES libelf-po/Makefile.in" ;; - "libebl/Makefile" ) CONFIG_FILES="$CONFIG_FILES libebl/Makefile" ;; - "libdw/Makefile" ) CONFIG_FILES="$CONFIG_FILES libdw/Makefile" ;; - "libcpu/Makefile" ) CONFIG_FILES="$CONFIG_FILES libcpu/Makefile" ;; - "libasm/Makefile" ) CONFIG_FILES="$CONFIG_FILES libasm/Makefile" ;; - "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; - "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; - "tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; - "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason to put it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF - -# -# CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s,@SHELL@,$SHELL,;t t -s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s,@exec_prefix@,$exec_prefix,;t t -s,@prefix@,$prefix,;t t -s,@program_transform_name@,$program_transform_name,;t t -s,@bindir@,$bindir,;t t -s,@sbindir@,$sbindir,;t t -s,@libexecdir@,$libexecdir,;t t -s,@datadir@,$datadir,;t t -s,@sysconfdir@,$sysconfdir,;t t -s,@sharedstatedir@,$sharedstatedir,;t t -s,@localstatedir@,$localstatedir,;t t -s,@libdir@,$libdir,;t t -s,@includedir@,$includedir,;t t -s,@oldincludedir@,$oldincludedir,;t t -s,@infodir@,$infodir,;t t -s,@mandir@,$mandir,;t t -s,@build_alias@,$build_alias,;t t -s,@host_alias@,$host_alias,;t t -s,@target_alias@,$target_alias,;t t -s,@DEFS@,$DEFS,;t t -s,@ECHO_C@,$ECHO_C,;t t -s,@ECHO_N@,$ECHO_N,;t t -s,@ECHO_T@,$ECHO_T,;t t -s,@LIBS@,$LIBS,;t t -s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t -s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t -s,@INSTALL_DATA@,$INSTALL_DATA,;t t -s,@CYGPATH_W@,$CYGPATH_W,;t t -s,@PACKAGE@,$PACKAGE,;t t -s,@VERSION@,$VERSION,;t t -s,@ACLOCAL@,$ACLOCAL,;t t -s,@AUTOCONF@,$AUTOCONF,;t t -s,@AUTOMAKE@,$AUTOMAKE,;t t -s,@AUTOHEADER@,$AUTOHEADER,;t t -s,@MAKEINFO@,$MAKEINFO,;t t -s,@install_sh@,$install_sh,;t t -s,@STRIP@,$STRIP,;t t -s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t -s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t -s,@mkdir_p@,$mkdir_p,;t t -s,@AWK@,$AWK,;t t -s,@SET_MAKE@,$SET_MAKE,;t t -s,@am__leading_dot@,$am__leading_dot,;t t -s,@AMTAR@,$AMTAR,;t t -s,@am__tar@,$am__tar,;t t -s,@am__untar@,$am__untar,;t t -s,@build@,$build,;t t -s,@build_cpu@,$build_cpu,;t t -s,@build_vendor@,$build_vendor,;t t -s,@build_os@,$build_os,;t t -s,@host@,$host,;t t -s,@host_cpu@,$host_cpu,;t t -s,@host_vendor@,$host_vendor,;t t -s,@host_os@,$host_os,;t t -s,@CC@,$CC,;t t -s,@CFLAGS@,$CFLAGS,;t t -s,@LDFLAGS@,$LDFLAGS,;t t -s,@CPPFLAGS@,$CPPFLAGS,;t t -s,@ac_ct_CC@,$ac_ct_CC,;t t -s,@EXEEXT@,$EXEEXT,;t t -s,@OBJEXT@,$OBJEXT,;t t -s,@DEPDIR@,$DEPDIR,;t t -s,@am__include@,$am__include,;t t -s,@am__quote@,$am__quote,;t t -s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t -s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t -s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t -s,@CCDEPMODE@,$CCDEPMODE,;t t -s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t -s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t -s,@CPP@,$CPP,;t t -s,@EGREP@,$EGREP,;t t -s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t -s,@MSGFMT@,$MSGFMT,;t t -s,@GMSGFMT@,$GMSGFMT,;t t -s,@XGETTEXT@,$XGETTEXT,;t t -s,@MSGMERGE@,$MSGMERGE,;t t -s,@USE_NLS@,$USE_NLS,;t t -s,@LIBICONV@,$LIBICONV,;t t -s,@LTLIBICONV@,$LTLIBICONV,;t t -s,@INTLLIBS@,$INTLLIBS,;t t -s,@LIBINTL@,$LIBINTL,;t t -s,@LTLIBINTL@,$LTLIBINTL,;t t -s,@POSUB@,$POSUB,;t t -s,@RANLIB@,$RANLIB,;t t -s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t -s,@YACC@,$YACC,;t t -s,@LEX@,$LEX,;t t -s,@LEXLIB@,$LEXLIB,;t t -s,@LEX_OUTPUT_ROOT@,$LEX_OUTPUT_ROOT,;t t -s,@LOCALEDIR@,$LOCALEDIR,;t t -s,@DATADIRNAME@,$DATADIRNAME,;t t -s,@NATIVE_LD_TRUE@,$NATIVE_LD_TRUE,;t t -s,@NATIVE_LD_FALSE@,$NATIVE_LD_FALSE,;t t -s,@base_cpu@,$base_cpu,;t t -s,@MUDFLAP_TRUE@,$MUDFLAP_TRUE,;t t -s,@MUDFLAP_FALSE@,$MUDFLAP_FALSE,;t t -s,@LIBOBJS@,$LIBOBJS,;t t -s,@LTLIBOBJS@,$LTLIBOBJS,;t t -CEOF - -_ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat - fi -fi # test -n "$CONFIG_FILES" - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_builddir$INSTALL ;; - esac - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@abs_srcdir@,$ac_abs_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s,@builddir@,$ac_builddir,;t t -s,@abs_builddir@,$ac_abs_builddir,;t t -s,@top_builddir@,$ac_top_builddir,;t t -s,@abs_top_builddir@,$ac_abs_top_builddir,;t t -s,@INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_HEADER section. -# - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' - -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - # Do quote $f, to prevent DOS paths from being IFS'd. - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - -_ACEOF - -# Transform confdefs.h into two sed scripts, `conftest.defines' and -# `conftest.undefs', that substitutes the proper values into -# config.h.in to produce config.h. The first handles `#define' -# templates, and the second `#undef' templates. -# And first: Protect against being on the right side of a sed subst in -# config.status. Protect against being in an unquoted here document -# in config.status. -rm -f conftest.defines conftest.undefs -# Using a here document instead of a string reduces the quoting nightmare. -# Putting comments in sed scripts is not portable. -# -# `end' is used to avoid that the second main sed command (meant for -# 0-ary CPP macros) applies to n-ary macro definitions. -# See the Autoconf documentation for `clear'. -cat >confdef2sed.sed <<\_ACEOF -s/[\\&,]/\\&/g -s,[\\$`],\\&,g -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp -t end -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp -: end -_ACEOF -# If some macros were called several times there might be several times -# the same #defines, which is useless. Nevertheless, we may not want to -# sort them, since we want the *last* AC-DEFINE to be honored. -uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines -sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs -rm -f confdef2sed.sed - -# This sed command replaces #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -cat >>conftest.undefs <<\_ACEOF -s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, -_ACEOF - -# Break up conftest.defines because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS -echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS -echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS -echo ' :' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.defines >/dev/null -do - # Write a limited-size here document to $tmp/defines.sed. - echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS - # Speed up: don't consider the non `#define' lines. - echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/defines.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines -echo ' fi # grep' >>$CONFIG_STATUS -echo >>$CONFIG_STATUS - -# Break up conftest.undefs because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #undef templates' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.undefs >/dev/null -do - # Write a limited-size here document to $tmp/undefs.sed. - echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS - # Speed up: don't consider the non `#undef' - echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/undefs.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail - rm -f conftest.undefs - mv conftest.tail conftest.undefs -done -rm -f conftest.undefs - -cat >>$CONFIG_STATUS <<\_ACEOF - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - echo "/* Generated by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - rm -f $tmp/in - if test x"$ac_file" != x-; then - if diff $ac_file $tmp/config.h >/dev/null 2>&1; then - { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} - else - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - rm -f $ac_file - mv $tmp/config.h $ac_file - fi - else - cat $tmp/config.h - rm -f $tmp/config.h - fi -# Compute $ac_file's index in $config_headers. -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $ac_file | $ac_file:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || -$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X$ac_file : 'X\(//\)[^/]' \| \ - X$ac_file : 'X\(//\)$' \| \ - X$ac_file : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X$ac_file | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'`/stamp-h$_am_stamp_count -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - - { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 -echo "$as_me: executing $ac_dest commands" >&6;} - case $ac_dest in - depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # So let's grep whole file. - if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then - dirpart=`(dirname "$mf") 2>/dev/null || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`(dirname "$file") 2>/dev/null || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p $dirpart/$fdir - else - as_dir=$dirpart/$fdir - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 -echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} - { (exit 1); exit 1; }; }; } - - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done - ;; - default-1 ) - for ac_file in $CONFIG_FILES; do - # Support "outfile[:infile[:infile...]]" - case "$ac_file" in - *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - esac - # PO directories have a Makefile.in generated from Makefile.in.in. - case "$ac_file" in */Makefile.in) - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" - # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. - if test -n "$ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" - fi - ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' - fi - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= - GMOFILES= - UPDATEPOFILES= - DUMMYPOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" - GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. - INST_LINGUAS= - if test -n "$ALL_LINGUAS"; then - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "$LINGUAS"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - INST_LINGUAS="$INST_LINGUAS $presentlang" - fi - done - fi - CATALOGS= - if test -n "$INST_LINGUAS"; then - for lang in $INST_LINGUAS; do - CATALOGS="$CATALOGS $lang.gmo" - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in - *.orig | *.bak | *~) ;; - *) cat "$f" >> "$ac_dir/Makefile" ;; - esac - fi - done - fi - ;; - esac - done ;; - esac -done -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF - -{ (exit 0); exit 0; } -_ACEOF -chmod +x $CONFIG_STATUS -ac_clean_files=$ac_clean_files_save - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } -fi - diff --git a/configure.ac b/configure.ac deleted file mode 100644 index e153737f..00000000 --- a/configure.ac +++ /dev/null @@ -1,253 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -*-m4-*- -dnl Configure input file for elfutils. -dnl -dnl Copyright (C) 1996-2002, 2003, 2004 Red Hat, Inc. -dnl -dnl This program is free software; you can redistribute it and/or modify -dnl it under the terms of the GNU General Public License as published by -dnl the Free Software Foundation, version 2. -dnl -dnl This program is distributed in the hope that it will be useful, -dnl but WITHOUT ANY WARRANTY; without even the implied warranty of -dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -dnl GNU General Public License for more details. -dnl -dnl You should have received a copy of the GNU General Public License -dnl along with this program; if not, write to the Free Software Foundation, -dnl Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -dnl -AC_INIT([Red Hat elfutils],[0.97],[http://bugzilla.redhat.com/bugzilla/], - [elfutils]) - -AC_CONFIG_AUX_DIR([config]) -AC_CONFIG_FILES([config/Makefile]) - -AC_COPYRIGHT([Copyright (C) 1996-2003, 2004 Red Hat, Inc.]) -AC_REVISION($Revision: 1.30 $) -AC_PREREQ(2.59) dnl Minimum Autoconf version required. - -AM_INIT_AUTOMAKE([gnits 1.7 dist-bzip2]) - -AC_CONFIG_SRCDIR([libelf/libelf.h]) -AC_CONFIG_FILES([Makefile]) -AC_CONFIG_HEADERS([config.h]) - -AC_CONFIG_MACRO_DIR([m4]) -AC_CONFIG_FILES([m4/Makefile]) - -dnl The RPM spec file. We substitute a few values in the file. -AC_CONFIG_FILES([elfutils.spec:config/elfutils.spec.in]) - - -AC_CANONICAL_HOST - -AC_ARG_ENABLE([tls], -AS_HELP_STRING([--enable-tls], [enable use of thread local storage]), -AC_DEFINE(USE_TLS)) -AH_TEMPLATE([USE_TLS], [Defined if thread local storage should be used.]) - -dnl Add all the languages for which translations are available. -ALL_LINGUAS= - -AC_PROG_CC -AC_PROG_CPP -AC_PROG_GCC_TRADITIONAL -AM_GNU_GETTEXT([external]) -AC_PROG_RANLIB -AC_PROG_YACC -AM_PROG_LEX - -AC_CACHE_CHECK([for gcc with C99 support], ac_cv_c99, [dnl -old_CFLAGS="$CFLAGS" -CFLAGS="$CFLAGS -std=gnu99" -AC_COMPILE_IFELSE([dnl -int foo (int a) { for (int i = 0; i < a; ++i) if (i % 4) break; int s = a; }], - ac_cv_c99=yes, ac_cv_c99=no) -CFLAGS="$old_CFLAGS"]) -AS_IF([test "x$ac_cv_c99" != xyes], - AC_MSG_ERROR([gcc with C99 support required])) - -LOCALEDIR=$datadir -AC_SUBST(LOCALEDIR) -AC_DEFINE_UNQUOTED(LOCALEDIR, "$LOCALEDIR") -AH_TEMPLATE([LOCALEDIR], [Directory to place translation files in.]) - -DATADIRNAME=$datadir -AC_SUBST(DATADIRNAME) - -dnl This test must come as early as possible after the compiler configuration -dnl tests, because the choice of the file model can (in principle) affect -dnl whether functions and headers are available, whether they work, etc. -AC_SYS_LARGEFILE - -dnl Enable the linker to be build as a native-only linker. By default it -dnl can handle all architectures but this comes at a cost. A native -dnl will be slightly faster, small, and has fewer dependencies. -native_ld=no -AC_ARG_ENABLE([generic], -AS_HELP_STRING([--disable-generic], [do not build generic linker]), [dnl -if test "$enable_generic" = no; then - case "$host_cpu" in - i?86) - AC_DEFINE(NATIVE_ELF, 32) - native_ld=yes - base_cpu=i386 - ;; - *) - AC_MSG_ERROR([no machine-specific linker for this configuration available]) - ;; - esac -fi]) -AH_TEMPLATE([NATIVE_ELF], -[Define to 32 or 64 if a specific implementation is wanted.]) -AM_CONDITIONAL(NATIVE_LD, test "$native_ld" = yes) -dnl The automake generated Makefile cannot deal with macros in the name -dnl of files if at any time there is no such file, even if the filename -dnl would not be used. -AS_IF([test -z "$base_cpu"], [base_cpu=none]) -AC_SUBST(base_cpu) - -dnl Enable debugging via mudflap. This option will cause most libraries -dnl to be built as archives which are statically linked into the applications. -dnl All code, as far as possible, is compiled instrumented to catch all -dnl the bugs valgrind is able to catch. -use_mudflap=no -AC_ARG_ENABLE([mudflap], -AS_HELP_STRING([--enable-mudflap], -[build binaries with mudflap instrumentation]), [dnl -if test "x$enable_mudflap" = xyes; then - # Check whether the compiler support -fmudflap. - old_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -fmudflap" - AC_TRY_COMPILE([], [], use_mudflap=yes, use_mudflap=fail) - CFLAGS="$old_CFLAGS" -fi]) -if test "$use_mudflap" = fail; then - AC_MSG_FAILURE([--enable-mudflap requires a compiler which understands this option]) -fi -AM_CONDITIONAL(MUDFLAP, test "$use_mudflap" = yes) - - -dnl The directories with content. - -dnl Documentation. -AC_CONFIG_FILES([doc/Makefile]) - -dnl Support library. -AC_CONFIG_FILES([lib/Makefile]) - -dnl ELF library. -AC_CONFIG_FILES([libelf/Makefile libelf-po/Makefile.in]) - -dnl Higher-level ELF support library. -AC_CONFIG_FILES([libebl/Makefile]) - -dnl DWARF library. -AC_CONFIG_FILES([libdw/Makefile]) - -dnl CPU handling library. -AC_CONFIG_FILES([libcpu/Makefile]) - -dnl Assembler library. -AC_CONFIG_FILES([libasm/Makefile]) - -dnl Tools. -AC_CONFIG_FILES([src/Makefile po/Makefile.in]) - -dnl Test suite. -AC_CONFIG_FILES([tests/Makefile]) - - -dnl Test of the config.h file. We hide all kinds of configuration magic -dnl in there. -AH_BOTTOM([ -/* Eventually we will allow multi-threaded applications to use the - libraries. Therefore we will add the necessary locking although - the macros used expand to nothing for now. */ -#define lock_lock(lock) ((void) (lock)) -#define rwlock_define(class,name) class int name -#define rwlock_init(lock) ((void) (lock)) -#define rwlock_fini(lock) ((void) (lock)) -#define rwlock_rdlock(lock) ((void) (lock)) -#define rwlock_wrlock(lock) ((void) (lock)) -#define rwlock_unlock(lock) ((void) (lock)) -#define tls_key_t void * -#define key_create(keyp, freefct) (1) -#define getspecific(key) key -#define setspecific(key,val) key = val -#define once_define(class,name) class int name -#define once_execute(name,fct) \ - do { \ - if (name == 0) \ - fct (); \ - name = 1; \ - } while (0) - -/* gettext helper macro. */ -#define N_(Str) Str - -/* Compiler-specific definitions. */ -#define strong_alias(name, aliasname) \ - extern __typeof (name) aliasname __attribute__ ((alias (#name))); - -#ifdef __i386__ -# define internal_function_def __attribute__ ((regparm (3), stdcall)) -#else -# define internal_function_def /* nothing */ -#endif - -# define internal_function \ - internal_function_def __attribute__ ((visibility ("internal"))) -# define internal_strong_alias(name, aliasname) \ - extern __typeof (name) aliasname __attribute__ ((alias (#name), visibility ("internal"))) internal_function_def; - -#define attribute_hidden \ - __attribute__ ((visibility ("hidden"))) - -/* Define ALLOW_UNALIGNED if the architecture allows operations on - unaligned memory locations. */ -#if defined __i386__ || defined __alpha__ || defined __x86_64__ || defined __ia64__ -# define ALLOW_UNALIGNED 1 -#else -# define ALLOW_UNALIGNED 0 -#endif - -#define unlikely(expr) __builtin_expect (expr, 0) -#define likely(expr) __builtin_expect (expr, 1) - -#define obstack_calloc(ob, size) \ - ({ size_t _s = (size); memset (obstack_alloc (ob, _s), '\0', _s); }) -#define obstack_strdup(ob, str) \ - ({ const char *_s = (str); obstack_copy0 (ob, _s, strlen (_s)); }) -#define obstack_strndup(ob, str, n) \ - ({ const char *_s = (str); obstack_copy0 (ob, _s, strnlen (_s, n)); }) - -#if __STDC_VERSION__ >= 199901L -# define flexarr_size /* empty */ -#else -# define flexarr_size 0 -#endif - -/* Calling conventions. */ -#ifdef __i386__ -# define CALLING_CONVENTION regparm (3), stdcall -# define AND_CALLING_CONVENTION , regparm (3), stdcall -#else -# define CALLING_CONVENTION -# define AND_CALLING_CONVENTION -#endif - -/* Avoid PLT entries. */ -#ifdef PIC -# define INTUSE(name) _INTUSE(name) -# define _INTUSE(name) __##name##_internal -# define INTDEF(name) _INTDEF(name) -# define _INTDEF(name) \ - extern __typeof__ (name) __##name##_internal __attribute__ ((alias (#name))); -#else -# define INTUSE(name) name -# define INTDEF(name) /* empty */ -#endif -]) - -AC_OUTPUT diff --git a/doc/ChangeLog b/doc/ChangeLog deleted file mode 100644 index c46ffcb6..00000000 --- a/doc/ChangeLog +++ /dev/null @@ -1,3 +0,0 @@ -2003-08-11 Ulrich Drepper <drepper@redhat.com> - - * Moved to CVS archive. diff --git a/doc/Makefile b/doc/Makefile deleted file mode 100644 index acdf1111..00000000 --- a/doc/Makefile +++ /dev/null @@ -1,319 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# doc/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - -srcdir = . -top_srcdir = .. - -pkgdatadir = $(datadir)/elfutils -pkglibdir = $(libdir)/elfutils -pkgincludedir = $(includedir)/elfutils -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = /usr/bin/install -c -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = i686-pc-linux-gnu -host_triplet = i686-pc-linux-gnu -subdir = doc -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run aclocal-1.9 -AMDEP_FALSE = # -AMDEP_TRUE = -AMTAR = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run tar -AUTOCONF = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoconf -AUTOHEADER = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoheader -AUTOMAKE = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run automake-1.9 -AWK = gawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -CPP = gcc -E -CPPFLAGS = -CYGPATH_W = echo -DATADIRNAME = ${prefix}/share -DEFS = -DHAVE_CONFIG_H -DEPDIR = .deps -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = grep -E -EXEEXT = -GMSGFMT = /usr/bin/msgfmt -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s -INTLLIBS = -LDFLAGS = -LEX = flex -LEXLIB = -lfl -LEX_OUTPUT_ROOT = lex.yy -LIBICONV = -liconv -LIBINTL = -LIBOBJS = -LIBS = -LOCALEDIR = ${prefix}/share -LTLIBICONV = -liconv -LTLIBINTL = -LTLIBOBJS = -MAKEINFO = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run makeinfo -MKINSTALLDIRS = config/mkinstalldirs -MSGFMT = /usr/bin/msgfmt -MSGMERGE = /usr/bin/msgmerge -MUDFLAP_FALSE = -MUDFLAP_TRUE = # -NATIVE_LD_FALSE = -NATIVE_LD_TRUE = # -OBJEXT = o -PACKAGE = elfutils -PACKAGE_BUGREPORT = http://bugzilla.redhat.com/bugzilla/ -PACKAGE_NAME = Red Hat elfutils -PACKAGE_STRING = Red Hat elfutils 0.97 -PACKAGE_TARNAME = elfutils -PACKAGE_VERSION = 0.97 -PATH_SEPARATOR = : -POSUB = po -RANLIB = ranlib -SET_MAKE = -SHELL = /bin/sh -STRIP = -USE_NLS = yes -VERSION = 0.97 -XGETTEXT = /usr/bin/xgettext -YACC = bison -y -ac_ct_CC = gcc -ac_ct_RANLIB = ranlib -ac_ct_STRIP = -am__fastdepCC_FALSE = # -am__fastdepCC_TRUE = -am__include = include -am__leading_dot = . -am__quote = -am__tar = ${AMTAR} chof - "$$tardir" -am__untar = ${AMTAR} xf - -base_cpu = none -bindir = ${exec_prefix}/bin -build = i686-pc-linux-gnu -build_alias = -build_cpu = i686 -build_os = linux-gnu -build_vendor = pc -datadir = ${prefix}/share -exec_prefix = ${prefix} -host = i686-pc-linux-gnu -host_alias = -host_cpu = i686 -host_os = linux-gnu -host_vendor = pc -includedir = ${prefix}/include -infodir = ${prefix}/info -install_sh = /work/elfutils/stock/elfutils-0.97/config/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localstatedir = ${prefix}/var -mandir = ${prefix}/man -mkdir_p = mkdir -p -- -oldincludedir = /usr/include -prefix = /work/elfutils/google/linux-install-elfutils-0.97/ -program_transform_name = s,x,x, -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -sysconfdir = ${prefix}/etc -target_alias = -EXTRA_DIST = elfutils.sgml -CLEANFILES = elfutils.dvi -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits doc/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits doc/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -uninstall-info-am: -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-info-am - -.PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \ - uninstall-info-am - - -# We need only a few special rules to generate the various output formats -# from the SGML sources. -.PHONY: dvi pdf html -dvi: $(srcdir)elfutils.dvi -pdf: $(srcdir)elfutils.pdf - -$(srcdir)%.dvi: %.sgml - db2dvi $^ -$(srcdir)%.pdf: %.sgml - db2pdf $^ -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/doc/Makefile.am b/doc/Makefile.am deleted file mode 100644 index b9f0e15f..00000000 --- a/doc/Makefile.am +++ /dev/null @@ -1,29 +0,0 @@ -## Process this file with automake to create Makefile.in -## Configure input file for elfutils. -## -## Copyright (C) 1996-2001, 2002 Red Hat, Inc. -## -## This program is Open Source software; you can redistribute it and/or -## modify it under the terms of the Open Software License version 1.0 as -## published by the Open Source Initiative. -## -## You should have received a copy of the Open Software License along -## with this program; if not, you may obtain a copy of the Open Software -## License version 1.0 from http://www.opensource.org/licenses/osl.php or -## by writing the Open Source Initiative c/o Lawrence Rosen, Esq., -## 3001 King Ranch Road, Ukiah, CA 95482. */ -## -EXTRA_DIST = elfutils.sgml - -CLEANFILES = elfutils.dvi - -# We need only a few special rules to generate the various output formats -# from the SGML sources. -.PHONY: dvi pdf html -dvi: $(srcdir)elfutils.dvi -pdf: $(srcdir)elfutils.pdf - -$(srcdir)%.dvi: %.sgml - db2dvi $^ -$(srcdir)%.pdf: %.sgml - db2pdf $^ diff --git a/doc/Makefile.in b/doc/Makefile.in deleted file mode 100644 index cefcf9fd..00000000 --- a/doc/Makefile.in +++ /dev/null @@ -1,319 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = doc -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DATADIRNAME = @DATADIRNAME@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -GMSGFMT = @GMSGFMT@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTLLIBS = @INTLLIBS@ -LDFLAGS = @LDFLAGS@ -LEX = @LEX@ -LEXLIB = @LEXLIB@ -LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LOCALEDIR = @LOCALEDIR@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -MSGMERGE = @MSGMERGE@ -MUDFLAP_FALSE = @MUDFLAP_FALSE@ -MUDFLAP_TRUE = @MUDFLAP_TRUE@ -NATIVE_LD_FALSE = @NATIVE_LD_FALSE@ -NATIVE_LD_TRUE = @NATIVE_LD_TRUE@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -XGETTEXT = @XGETTEXT@ -YACC = @YACC@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -base_cpu = @base_cpu@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -datadir = @datadir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -EXTRA_DIST = elfutils.sgml -CLEANFILES = elfutils.dvi -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits doc/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits doc/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -uninstall-info-am: -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-info-am - -.PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \ - uninstall-info-am - - -# We need only a few special rules to generate the various output formats -# from the SGML sources. -.PHONY: dvi pdf html -dvi: $(srcdir)elfutils.dvi -pdf: $(srcdir)elfutils.pdf - -$(srcdir)%.dvi: %.sgml - db2dvi $^ -$(srcdir)%.pdf: %.sgml - db2pdf $^ -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/doc/elfutils.sgml b/doc/elfutils.sgml deleted file mode 100644 index 7ef84a8d..00000000 --- a/doc/elfutils.sgml +++ /dev/null @@ -1,412 +0,0 @@ -<!doctype book PUBLIC "-//OASIS//DTD DocBook V4.1//EN"[ -<!ENTITY package "<filename>new-bu</filename>"> -]> - -<book> - <title>New Binutils User's and Reference Manual</title> - - <chapter> - <title><filename>libelf</filename> <acronym>ABI</acronym></title> - - <simpara>The <acronym>ABI</acronym> of the - <filename>libelf</filename> implemented in the &package; package - is following that of Sun's implementation which in turn in derived - from the original SysVr4 implementation. There are some - extensions over Sun's versions, though, which makes it impossible - to replace this implementation with Sun's.</simpara> - - <beginpage> - - <refentry xreflabel="Elf_Data" id="ElfUData"> - <refnamediv> - <refname>Elf_Data</refname> - <refpurpose>Descriptor for Data Buffer</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <synopsis> -#include <libelf.h> -</synopsis> - </refsynopsisdiv> - - <refsect1> - <title>Description</title> - - <simpara>The <structname>Elf_Data</structname> structure is as - a descriptor for a data buffer associated with a section. - Every data buffer is associated with a specific section (see - <!-- xref --><structname>Elf_Scn</structname>).</simpara> - - <simpara>A data buffer is created when reading a file. In - this case only a single buffer is present in the section. The - user can add as many sections as wanted to a section and they - can be retrieved using the <function>elf_getdata</function> - and <function>elf_rawdata</function> functions.<!-- xref - --></simpara> - - <simpara>The <structname>Elf_Data</structname> structure - contains the following members:</simpara> - - <programlisting> - void *d_buf - Elf_Type d_type - size_t d_size - off_t d_off - size_t d_align - unsigned int d_version -</programlisting> - - <simpara>All these members can be modified directly by the - user. They can be used to resize a section, to change its - content or type, and many things more. This is also true for - the data read from a file. The meaning of the members is as - follows:</simpara> - - <variablelist> - <varlistentry> - <term><structfield>d_buf</structfield></term> - <listitem> - <simpara>The <structfield>d_buf</structfield> member is - the pointer to the buffer with the actual data. When - the ELF file was read from a file the first and only - data buffer of a section is allocated by the - <filename>libelf</filename> library. The user should - not try to resize or free this buffer. When the user - adds a new data buffer to a section the associated - memory block is normally allocated by the user. It is - important that the buffer must have a lifetime at least - until the ELF file is closed entirely (important when - the buffer is allocated on the stack). If the buffer is - not allocated on the stack it is the user's - responsibility to free the buffer after it is not used - anymore. The <structfield>d_buf</structfield> member - can contain a null pointer if the data buffer is - empty.</simpara> - </listitem> - </varlistentry> - - <varlistentry> - <term><structfield>d_type</structfield></term> - <listitem> - <simpara>The <structfield>d_type</structfield> - determines how the data of the buffer is interpreted. - This type is determined from the section type and must - be the same for all data buffers for a section. See - <!-- xref --><type>Elf_Type</type> for more information. - The <function><link linkend="elfUgetdata" - endterm="elfUgetdata.refname"></link></function> - function uses this information to convert the data of - the buffer between the external form and the form - represented to the user and back if necessary.</simpara> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - </refentry> - - <beginpage> - - <refentry id="elfUgetdata"> - <refnamediv> - <refname id="elfUgetdata.refname">elf_getdata</refname> - <refpurpose>Get washed data of section</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcsynopsisinfo> -#include <libelf.h> -</funcsynopsisinfo> - <funcprototype> - <funcdef>Elf_Data *<function>elf_getdata</function></funcdef> - <paramdef>Elf_Scn *<parameter>scn</parameter></paramdef> - <paramdef>Elf_Data *<parameter>data</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Description</title> - - <simpara>The <function>elf_getdata</function> function allows - to retriece the data buffers of the section - <parameter>scn</parameter>. There can be more than one buffer - if the user explicitly added them. When a file is read the - <filename>libelf</filename> library creates exactly one data - buffer.</simpara> - - <simpara>The first buffer in the list can be obtained by - passing a null pointer in the parameter - <parameter>data</parameter>. To get the next data buffer the - previously returned value must be passed in the - <parameter>data</parameter> parameter. If there is no more - buffer left in the list a null pointer is returned.</simpara> - - <simpara>If the <parameter>data</parameter> parameter is not a - null pointer it must be a descriptor with for a buffer - associated with the section <parameter>scn</parameter>. If - this is not the case a null pointer is returned. To - facilitate error handling <function>elf_getdata</function> - also returns a null pointer if the <parameter>scn</parameter> - parameter is a null pointer.</simpara> - </refsect1> - </refentry> - - <refentry> - <refnamediv> - <refname id="elfUupdate.refname">elf_update</refname> - <refpurpose>update an ELF descriptor</refpurpose> - </refnamediv> - - <refsynopsisdiv> - <funcsynopsis> - <funcsynopsisinfo> -#include <libelf.h> -</funcsynopsisinfo> - <funcprototype> - <funcdef>off_t <function>elf_update</function></funcdef> - <paramdef>Elf *<parameter>elf</parameter></paramdef> - <paramdef>Elf_Cmd <parameter>cmd</parameter></paramdef> - </funcprototype> - </funcsynopsis> - </refsynopsisdiv> - - <refsect1> - <title>Description</title> - - <simpara>The user is responsible for filling in the following - fields in the named data structures:</simpara> - - <table> - <title>Fields not set by <function>elf_update</function></title> - <tgroup cols="3"> - <colspec colwidth="90pt"> - <colspec colwidth="110pt"> - <thead> - <row> - <entry>Data Structure</entry> - <entry>Member</entry> - <entry>Exception</entry> - </row> - </thead> - <tbody> - <row> - <entry morerows="8"><type>Elfxx_Ehdr</type></entry> - <entry>e_ident[EI_DATA]</entry> - <entry>see below</entry> - </row> - <row> - <entry></entry> - <entry>e_type</entry> - <!-- <entry morerows="1"></entry> --> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>e_machine</entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>e_version</entry> - <entry>see below</entry> - </row> - <row> - <entry></entry> - <entry>e_entry</entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>e_phoff</entry> - <entry>if <symbol>ELF_F_LAYOUT</symbol> is used</entry> - </row> - <row> - <entry></entry> - <entry>e_shoff</entry> - <entry>if <symbol>ELF_F_LAYOUT</symbol> is used</entry> - </row> - <row> - <entry></entry> - <entry>e_flags</entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>e_shstrndx</entry> - <entry></entry> - </row> - <row> - <entry morerows="7">Elfxx_Phdr</entry> - <entry>p_type</entry> - <entry morerows="7"></entry> - </row> - <row> - <entry></entry> - <entry>p_offset</entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>p_vaddr</entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>p_paddr</entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>p_filesz</entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>p_memsz</entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>p_flags</entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>p_align</entry> - <entry></entry> - </row> - - <row> - <entry morerows="9">Elfxx_Shdr</entry> - <entry>sh_name</entry> - <entry morerows="3"></entry> - </row> - <row> - <entry></entry> - <entry>sh_type</entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>sh_flags</entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>sh_addr</entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>sh_offset</entry> - <entry>if <symbol>ELF_F_LAYOUT</symbol> is used</entry> - </row> - <row> - <entry></entry> - <entry>sh_size</entry> - <entry>if <symbol>ELF_F_LAYOUT</symbol> is used</entry> - </row> - <row> - <entry></entry> - <entry>sh_link</entry> - <!-- <entry morerows="1"></entry> --> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>sh_info</entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>sh_addralign</entry> - <entry>if <symbol>ELF_F_LAYOUT</symbol> is used</entry> - </row> - <row> - <entry></entry> - <entry>sh_entsize</entry> - <entry></entry> - </row> - - <row> - <entry morerows="5">Elf_Data</entry> - <entry>d_buf</entry> - <entry morerows="2"></entry> - </row> - <row> - <entry></entry> - <entry>d_type</entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>d_size</entry> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>d_off</entry> - <entry>if <symbol>ELF_F_LAYOUT</symbol> is used</entry> - </row> - <row> - <entry></entry> - <entry>d_align</entry> - <!-- <entry morerows="1"></entry> --> - <entry></entry> - </row> - <row> - <entry></entry> - <entry>d_version</entry> - <entry></entry> - </row> - </tbody> - </tgroup> - </table> - - <simpara>Two fields of the ELF header are handled in a special - way:</simpara> - - <variablelist> - <varlistentry> - <term>e_version</term> - <listitem> - <simpara>The user can set this field to the vvalue for - the version to be used. It is an error if the library - cannot handle this version. If the field contains the - value <symbol>EV_NONE</symbol> the library will fill in - its own internal version.</simpara> - </listitem> - </varlistentry> - - <varlistentry> - <term>e_ident[EI_DATA]</term> - <listitem> - <simpara>The user should fill in the byte ordering for - the file. If the value of the field is - <symbol>ELFDATANONE</symbol> the library replaces it - with the native byte ordering for the machine.</simpara> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - </refentry> - </chapter> - - <chapter> - <title><filename>libelf</filename> Internals</title> - - <simpara>Since the binary format handling tools need constant - attention since there are always new machines and varients - therefore coming out it is important to have the implementation - weel documented. Only this way extensions can be made in the - right places and the mistakes of the past avoided.</simpara> - </chapter> -</book> -<!-- Keep this comment at the end of the file -Local variables: -mode: sgml -sgml-omitag:nil -sgml-shorttag:t -End: ---> diff --git a/elfutils.spec b/elfutils.spec deleted file mode 100644 index 5db4242e..00000000 --- a/elfutils.spec +++ /dev/null @@ -1,331 +0,0 @@ -%define gpl 0 -Summary: A collection of utilities and DSOs to handle compiled objects. -Name: elfutils -Version: 0.97 -Release: 1 -Copyright: OSL -Group: Development/Tools -#URL: file://home/devel/drepper/ -Source: elfutils-%{version}.tar.gz -Obsoletes: libelf libelf-devel -Requires: elfutils-libelf = %{version}-%{release} -%if %{gpl} -Requires: binutils >= 2.14.90.0.4-26.2 -%endif - -# ExcludeArch: xxx - -BuildRoot: %{_tmppath}/%{name}-root -BuildRequires: gcc >= 3.2 -BuildRequires: bison >= 1.875 -BuildRequires: flex >= 2.5.4a - -%define _gnu %{nil} -%define _programprefix eu- - -%description -Elfutils is a collection of utilities, including ld (a linker), -nm (for listing symbols from object files), size (for listing the -section sizes of an object or archive file), strip (for discarding -symbols), readelf (to see the raw ELF file structures), and elflint -(to check for well-formed ELF files). Also included are numerous -helper libraries which implement DWARF, ELF, and machine-specific ELF -handling. - -%package devel -Summary: Development libraries to handle compiled objects. -Group: Development/Tools -Copyright: OSL -Requires: elfutils = %{version}-%{release} -Requires: elfutils-libelf-devel = %{version}-%{release} - -%description devel -The elfutils-devel package contains the libraries to create -applications for handling compiled objects. libebl provides some -higher-level ELF access functionality. libdw provides access to -the DWARF debugging information. libasm provides a programmable -assembler interface. - -%package libelf -Summary: Library to read and write ELF files. -Group: Development/Tools -%if %{gpl} -Copyright: GPL -%endif - -%description libelf -The elfutils-libelf package provides a DSO which allows reading and -writing ELF files on a high level. Third party programs depend on -this package to read internals of ELF files. The programs of the -elfutils package use it also to generate new ELF files. - -%package libelf-devel -Summary: Development support for libelf -Group: Development/Tools -Requires: elfutils-libelf = %{version}-%{release} -Conflicts: libelf-devel -%if %{gpl} -Copyright: GPL -%endif - -%description libelf-devel -The elfutils-libelf-devel package contains the libraries to create -applications for handling compiled objects. libelf allows you to -access the internals of the ELF object file format, so you can see the -different sections of an ELF file. - -%prep -%setup -q - -%build -mkdir build-%{_target_platform} -cd build-%{_target_platform} -../configure \ - --prefix=%{_prefix} --exec-prefix=%{_exec_prefix} \ - --bindir=%{_bindir} --sbindir=%{_sbindir} --sysconfdir=%{_sysconfdir} \ - --datadir=%{_datadir} --includedir=%{_includedir} --libdir=%{_libdir} \ - --libexecdir=%{_libexecdir} --localstatedir=%{_localstatedir} \ - --sharedstatedir=%{_sharedstatedir} --mandir=%{_mandir} \ - --infodir=%{_infodir} --program-prefix=%{_programprefix} --enable-shared -cd .. - -%install -rm -rf ${RPM_BUILD_ROOT} -mkdir -p ${RPM_BUILD_ROOT}%{_prefix} - -cd build-%{_target_platform} -#make check -%makeinstall - -chmod +x ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/lib*.so* -%if !%{gpl} -chmod +x ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/elfutils/lib*.so* -%endif - -cd .. - -%if !%{gpl} -# XXX Nuke unpackaged files -{ cd ${RPM_BUILD_ROOT} - rm -f .%{_bindir}/eu-ld - rm -f .%{_includedir}/elfutils/libasm.h - rm -f .%{_includedir}/elfutils/libdw.h - rm -f .%{_libdir}/libasm-%{version}.so - rm -f .%{_libdir}/libasm.a - rm -f .%{_libdir}/libdw.so - rm -f .%{_libdir}/libdw.a -} -%endif - -%check -cd build-%{_target_platform} -make check - -%clean -rm -rf ${RPM_BUILD_ROOT} - -%post -p /sbin/ldconfig - -%postun -p /sbin/ldconfig - -%post libelf -p /sbin/ldconfig - -%postun libelf -p /sbin/ldconfig - -%files -%defattr(-,root,root) -%doc README TODO -%if %{gpl} -%doc fake-src/FULL -%endif -%{_bindir}/eu-elflint -%{_bindir}/eu-nm -%{_bindir}/eu-readelf -%{_bindir}/eu-size -%{_bindir}/eu-strip -%if !%{gpl} -#%{_bindir}/eu-ld -#%{_libdir}/libasm-%{version}.so -%{_libdir}/libdw-%{version}.so -#%{_libdir}/libasm*.so.* -%{_libdir}/libdw*.so.* -%dir %{_libdir}/elfutils -%{_libdir}/elfutils/lib*.so -%endif - -%files devel -%defattr(-,root,root) -%{_includedir}/dwarf.h -%dir %{_includedir}/elfutils -%{_includedir}/elfutils/elf-knowledge.h -%if !%{gpl} -%{_includedir}/elfutils/libebl.h -#%{_libdir}/libasm.a -%{_libdir}/libebl.a -#%{_libdir}/libdw.a -#%{_libdir}/libasm.so -#%{_libdir}/libdw.so -%endif - -%files libelf -%defattr(-,root,root) -%{_libdir}/libelf-%{version}.so -%{_libdir}/libelf*.so.* - -%files libelf-devel -%defattr(-,root,root) -%{_includedir}/libelf.h -%{_includedir}/gelf.h -%{_includedir}/nlist.h -%{_libdir}/libelf.a -%{_libdir}/libelf.so - -%changelog -* Fri Jan 16 2004 Jakub Jelinek <jakub@redhat.com> 0.94-1 -- upgrade to 0.94 - -* Fri Jan 16 2004 Jakub Jelinek <jakub@redhat.com> 0.93-1 -- upgrade to 0.93 - -* Thu Jan 8 2004 Jakub Jelinek <jakub@redhat.com> 0.92-1 -- full version -- macroized spec file for GPL or OSL builds -- include only libelf under GPL plus wrapper scripts - -* Wed Jan 7 2004 Jakub Jelinek <jakub@redhat.com> 0.91-2 -- macroized spec file for GPL or OSL builds - -* Wed Jan 7 2004 Ulrich Drepper <drepper@redhat.com> -- split elfutils-devel into two packages. - -* Wed Jan 7 2004 Jakub Jelinek <jakub@redhat.com> 0.91-1 -- include only libelf under GPL plus wrapper scripts - -* Tue Dec 23 2003 Jeff Johnson <jbj@redhat.com> 0.89-3 -- readelf, not readline, in %%description (#111214). - -* Fri Sep 26 2003 Bill Nottingham <notting@redhat.com> 0.89-1 -- update to 0.89 (fix eu-strip) - -* Tue Sep 23 2003 Jakub Jelinek <jakub@redhat.com> 0.86-3 -- update to 0.86 (fix eu-strip on s390x/alpha) -- libebl is an archive now; remove references to DSO - -* Mon Jul 14 2003 Jeff Johnson <jbj@redhat.com> 0.84-3 -- upgrade to 0.84 (readelf/elflint improvements, rawhide bugs fixed). - -* Fri Jul 11 2003 Jeff Johnson <jbj@redhat.com> 0.83-3 -- upgrade to 0.83 (fix invalid ELf handle on *.so strip, more). - -* Wed Jul 9 2003 Jeff Johnson <jbj@redhat.com> 0.82-3 -- upgrade to 0.82 (strip tests fixed on big-endian). - -* Tue Jul 8 2003 Jeff Johnson <jbj@redhat.com> 0.81-3 -- upgrade to 0.81 (strip excludes unused symtable entries, test borked). - -* Thu Jun 26 2003 Jeff Johnson <jbj@redhat.com> 0.80-3 -- upgrade to 0.80 (debugedit changes for kernel in progress). - -* Wed Jun 04 2003 Elliot Lee <sopwith@redhat.com> -- rebuilt - -* Wed May 21 2003 Jeff Johnson <jbj@redhat.com> 0.79-2 -- upgrade to 0.79 (correct formats for size_t, more of libdw "works"). - -* Mon May 19 2003 Jeff Johnson <jbj@redhat.com> 0.78-2 -- upgrade to 0.78 (libdwarf bugfix, libdw additions). - -* Mon Feb 24 2003 Elliot Lee <sopwith@redhat.com> -- debuginfo rebuild - -* Thu Feb 20 2003 Jeff Johnson <jbj@redhat.com> 0.76-2 -- use the correct way of identifying the section via the sh_info link. - -* Sat Feb 15 2003 Jakub Jelinek <jakub@redhat.com> 0.75-2 -- update to 0.75 (eu-strip -g fix) - -* Tue Feb 11 2003 Jakub Jelinek <jakub@redhat.com> 0.74-2 -- update to 0.74 (fix for writing with some non-dirty sections) - -* Thu Feb 6 2003 Jeff Johnson <jbj@redhat.com> 0.73-3 -- another -0.73 update (with sparc fixes). -- do "make check" in %%check, not %%install, section. - -* Mon Jan 27 2003 Jeff Johnson <jbj@redhat.com> 0.73-2 -- update to 0.73 (with s390 fixes). - -* Wed Jan 22 2003 Tim Powers <timp@redhat.com> -- rebuilt - -* Wed Jan 22 2003 Jakub Jelinek <jakub@redhat.com> 0.72-4 -- fix arguments to gelf_getsymshndx and elf_getshstrndx -- fix other warnings -- reenable checks on s390x - -* Sat Jan 11 2003 Karsten Hopp <karsten@redhat.de> 0.72-3 -- temporarily disable checks on s390x, until someone has - time to look at it - -* Thu Dec 12 2002 Jakub Jelinek <jakub@redhat.com> 0.72-2 -- update to 0.72 - -* Wed Dec 11 2002 Jakub Jelinek <jakub@redhat.com> 0.71-2 -- update to 0.71 - -* Wed Dec 11 2002 Jeff Johnson <jbj@redhat.com> 0.69-4 -- update to 0.69. -- add "make check" and segfault avoidance patch. -- elfutils-libelf needs to run ldconfig. - -* Tue Dec 10 2002 Jeff Johnson <jbj@redhat.com> 0.68-2 -- update to 0.68. - -* Fri Dec 6 2002 Jeff Johnson <jbj@redhat.com> 0.67-2 -- update to 0.67. - -* Tue Dec 3 2002 Jeff Johnson <jbj@redhat.com> 0.65-2 -- update to 0.65. - -* Mon Dec 2 2002 Jeff Johnson <jbj@redhat.com> 0.64-2 -- update to 0.64. - -* Sun Dec 1 2002 Ulrich Drepper <drepper@redhat.com> 0.64 -- split packages further into elfutils-libelf - -* Sat Nov 30 2002 Jeff Johnson <jbj@redhat.com> 0.63-2 -- update to 0.63. - -* Fri Nov 29 2002 Ulrich Drepper <drepper@redhat.com> 0.62 -- Adjust for dropping libtool - -* Sun Nov 24 2002 Jeff Johnson <jbj@redhat.com> 0.59-2 -- update to 0.59 - -* Thu Nov 14 2002 Jeff Johnson <jbj@redhat.com> 0.56-2 -- update to 0.56 - -* Thu Nov 7 2002 Jeff Johnson <jbj@redhat.com> 0.54-2 -- update to 0.54 - -* Sun Oct 27 2002 Jeff Johnson <jbj@redhat.com> 0.53-2 -- update to 0.53 -- drop x86_64 hack, ICE fixed in gcc-3.2-11. - -* Sat Oct 26 2002 Jeff Johnson <jbj@redhat.com> 0.52-3 -- get beehive to punch a rhpkg generated package. - -* Wed Oct 23 2002 Jeff Johnson <jbj@redhat.com> 0.52-2 -- build in 8.0.1. -- x86_64: avoid gcc-3.2 ICE on x86_64 for now. - -* Tue Oct 22 2002 Ulrich Drepper <drepper@redhat.com> 0.52 -- Add libelf-devel to conflicts for elfutils-devel - -* Mon Oct 21 2002 Ulrich Drepper <drepper@redhat.com> 0.50 -- Split into runtime and devel package - -* Fri Oct 18 2002 Ulrich Drepper <drepper@redhat.com> 0.49 -- integrate into official sources - -* Wed Oct 16 2002 Jeff Johnson <jbj@redhat.com> 0.46-1 -- Swaddle. diff --git a/lib/ChangeLog b/lib/ChangeLog deleted file mode 100644 index 4da33b09..00000000 --- a/lib/ChangeLog +++ /dev/null @@ -1,14 +0,0 @@ -2004-01-17 Ulrich Drepper <drepper@redhat.com> - - * Makefile.am: Support building with mudflap. - -2003-09-22 Ulrich Drepper <drepper@redhat.com> - - * Makefile.am (AM_CFLAGS): Add -fpic. - - * Makefile.am (noinst_HEADERS): Add list.h. - * list.h: New file. - -2003-08-11 Ulrich Drepper <drepper@redhat.com> - - * Moved to CVS archive. diff --git a/lib/Makefile b/lib/Makefile deleted file mode 100644 index b87ff4eb..00000000 --- a/lib/Makefile +++ /dev/null @@ -1,424 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# lib/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - - -SOURCES = $(libeu_a_SOURCES) - -srcdir = . -top_srcdir = .. - -pkgdatadir = $(datadir)/elfutils -pkglibdir = $(libdir)/elfutils -pkgincludedir = $(includedir)/elfutils -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = /usr/bin/install -c -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = i686-pc-linux-gnu -host_triplet = i686-pc-linux-gnu -subdir = lib -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in ChangeLog -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -LIBRARIES = $(noinst_LIBRARIES) -AR = ar -ARFLAGS = cru -libeu_a_AR = $(AR) $(ARFLAGS) -libeu_a_LIBADD = -am_libeu_a_OBJECTS = xstrdup.$(OBJEXT) xstrndup.$(OBJEXT) \ - xmalloc.$(OBJEXT) next_prime.$(OBJEXT) crc32.$(OBJEXT) -libeu_a_OBJECTS = $(am_libeu_a_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(libeu_a_SOURCES) -DIST_SOURCES = $(libeu_a_SOURCES) -HEADERS = $(noinst_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run aclocal-1.9 -AMDEP_FALSE = # -AMDEP_TRUE = -AMTAR = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run tar -AUTOCONF = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoconf -AUTOHEADER = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoheader -AUTOMAKE = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run automake-1.9 -AWK = gawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -CPP = gcc -E -CPPFLAGS = -CYGPATH_W = echo -DATADIRNAME = ${prefix}/share -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DEPDIR = .deps -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = grep -E -EXEEXT = -GMSGFMT = /usr/bin/msgfmt -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s -INTLLIBS = -LDFLAGS = -LEX = flex -LEXLIB = -lfl -LEX_OUTPUT_ROOT = lex.yy -LIBICONV = -liconv -LIBINTL = -LIBOBJS = -LIBS = -LOCALEDIR = ${prefix}/share -LTLIBICONV = -liconv -LTLIBINTL = -LTLIBOBJS = -MAKEINFO = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run makeinfo -MKINSTALLDIRS = config/mkinstalldirs -MSGFMT = /usr/bin/msgfmt -MSGMERGE = /usr/bin/msgmerge -MUDFLAP_FALSE = -MUDFLAP_TRUE = # -NATIVE_LD_FALSE = -NATIVE_LD_TRUE = # -OBJEXT = o -PACKAGE = elfutils -PACKAGE_BUGREPORT = http://bugzilla.redhat.com/bugzilla/ -PACKAGE_NAME = Red Hat elfutils -PACKAGE_STRING = Red Hat elfutils 0.97 -PACKAGE_TARNAME = elfutils -PACKAGE_VERSION = 0.97 -PATH_SEPARATOR = : -POSUB = po -RANLIB = ranlib -SET_MAKE = -SHELL = /bin/sh -STRIP = -USE_NLS = yes -VERSION = 0.97 -XGETTEXT = /usr/bin/xgettext -YACC = bison -y -ac_ct_CC = gcc -ac_ct_RANLIB = ranlib -ac_ct_STRIP = -am__fastdepCC_FALSE = # -am__fastdepCC_TRUE = -am__include = include -am__leading_dot = . -am__quote = -am__tar = ${AMTAR} chof - "$$tardir" -am__untar = ${AMTAR} xf - -base_cpu = none -bindir = ${exec_prefix}/bin -build = i686-pc-linux-gnu -build_alias = -build_cpu = i686 -build_os = linux-gnu -build_vendor = pc -datadir = ${prefix}/share -exec_prefix = ${prefix} -host = i686-pc-linux-gnu -host_alias = -host_cpu = i686 -host_os = linux-gnu -host_vendor = pc -includedir = ${prefix}/include -infodir = ${prefix}/info -install_sh = /work/elfutils/stock/elfutils-0.97/config/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localstatedir = ${prefix}/var -mandir = ${prefix}/man -mkdir_p = mkdir -p -- -oldincludedir = /usr/include -prefix = /work/elfutils/google/linux-install-elfutils-0.97/ -program_transform_name = s,x,x, -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -sysconfdir = ${prefix}/etc -target_alias = -AM_CFLAGS = -Wall $(if $($(*F)_no_Werror),,-Werror) $(picflag) -picflag = -fpic -INCLUDES = -I$(srcdir)/../libelf -I.. -noinst_LIBRARIES = libeu.a -libeu_a_SOURCES = xstrdup.c xstrndup.c xmalloc.c next_prime.c crc32.c -noinst_HEADERS = fixedsizehash.h system.h dynamicsizehash.h list.h -EXTRA_DIST = dynamicsizehash.c - -# XXX gcc has a bug in that it generates warnings for internal symbols. -#xmalloc_no_Werror = yes -#crc32_no_Werror = yes -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits lib/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits lib/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libeu.a: $(libeu_a_OBJECTS) $(libeu_a_DEPENDENCIES) - -rm -f libeu.a - $(libeu_a_AR) libeu.a $(libeu_a_OBJECTS) $(libeu_a_LIBADD) - $(RANLIB) libeu.a - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -include ./$(DEPDIR)/crc32.Po -include ./$(DEPDIR)/next_prime.Po -include ./$(DEPDIR)/xmalloc.Po -include ./$(DEPDIR)/xstrdup.Po -include ./$(DEPDIR)/xstrndup.Po - -.c.o: - if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ - then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c $< - -.c.obj: - if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ - then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c `$(CYGPATH_W) '$<'` -uninstall-info-am: - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) $(HEADERS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-info-am - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-noinstLIBRARIES ctags distclean distclean-compile \ - distclean-generic distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-exec install-exec-am install-info \ - install-info-am install-man install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-info-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/lib/Makefile.am b/lib/Makefile.am deleted file mode 100644 index 43a13582..00000000 --- a/lib/Makefile.am +++ /dev/null @@ -1,37 +0,0 @@ -## Process this file with automake to create Makefile.in -## Configure input file for elfutils. -## -## Copyright (C) 1996-2001, 2002, 2004 Red Hat, Inc. -## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation, version 2. -## -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software Foundation, -## Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -## -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -AM_CFLAGS = -Wall $(if $($(*F)_no_Werror),,-Werror) $(picflag) -if !MUDFLAP -picflag = -fpic -endif -INCLUDES = -I$(srcdir)/../libelf -I.. - -noinst_LIBRARIES = libeu.a - -libeu_a_SOURCES = xstrdup.c xstrndup.c xmalloc.c next_prime.c crc32.c - -noinst_HEADERS = fixedsizehash.h system.h dynamicsizehash.h list.h -EXTRA_DIST = dynamicsizehash.c - -# XXX gcc has a bug in that it generates warnings for internal symbols. -if MUDFLAP -xmalloc_no_Werror = yes -crc32_no_Werror = yes -endif diff --git a/lib/Makefile.in b/lib/Makefile.in deleted file mode 100644 index 8014230f..00000000 --- a/lib/Makefile.in +++ /dev/null @@ -1,424 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - -SOURCES = $(libeu_a_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = lib -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in ChangeLog -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -LIBRARIES = $(noinst_LIBRARIES) -AR = ar -ARFLAGS = cru -libeu_a_AR = $(AR) $(ARFLAGS) -libeu_a_LIBADD = -am_libeu_a_OBJECTS = xstrdup.$(OBJEXT) xstrndup.$(OBJEXT) \ - xmalloc.$(OBJEXT) next_prime.$(OBJEXT) crc32.$(OBJEXT) -libeu_a_OBJECTS = $(am_libeu_a_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(libeu_a_SOURCES) -DIST_SOURCES = $(libeu_a_SOURCES) -HEADERS = $(noinst_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DATADIRNAME = @DATADIRNAME@ -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DEPDIR = @DEPDIR@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -GMSGFMT = @GMSGFMT@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTLLIBS = @INTLLIBS@ -LDFLAGS = @LDFLAGS@ -LEX = @LEX@ -LEXLIB = @LEXLIB@ -LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LOCALEDIR = @LOCALEDIR@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -MSGMERGE = @MSGMERGE@ -MUDFLAP_FALSE = @MUDFLAP_FALSE@ -MUDFLAP_TRUE = @MUDFLAP_TRUE@ -NATIVE_LD_FALSE = @NATIVE_LD_FALSE@ -NATIVE_LD_TRUE = @NATIVE_LD_TRUE@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -XGETTEXT = @XGETTEXT@ -YACC = @YACC@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -base_cpu = @base_cpu@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -datadir = @datadir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -AM_CFLAGS = -Wall $(if $($(*F)_no_Werror),,-Werror) $(picflag) -@MUDFLAP_FALSE@picflag = -fpic -INCLUDES = -I$(srcdir)/../libelf -I.. -noinst_LIBRARIES = libeu.a -libeu_a_SOURCES = xstrdup.c xstrndup.c xmalloc.c next_prime.c crc32.c -noinst_HEADERS = fixedsizehash.h system.h dynamicsizehash.h list.h -EXTRA_DIST = dynamicsizehash.c - -# XXX gcc has a bug in that it generates warnings for internal symbols. -@MUDFLAP_TRUE@xmalloc_no_Werror = yes -@MUDFLAP_TRUE@crc32_no_Werror = yes -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits lib/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits lib/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libeu.a: $(libeu_a_OBJECTS) $(libeu_a_DEPENDENCIES) - -rm -f libeu.a - $(libeu_a_AR) libeu.a $(libeu_a_OBJECTS) $(libeu_a_LIBADD) - $(RANLIB) libeu.a - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crc32.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/next_prime.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmalloc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrdup.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrndup.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` -uninstall-info-am: - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) $(HEADERS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-info-am - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-noinstLIBRARIES ctags distclean distclean-compile \ - distclean-generic distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-exec install-exec-am install-info \ - install-info-am install-man install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-info-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/lib/crc32.c b/lib/crc32.c deleted file mode 100644 index a198e8e4..00000000 --- a/lib/crc32.c +++ /dev/null @@ -1,86 +0,0 @@ -/* Copyright (C) 2002 Red Hat, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include <stdint.h> -#include "system.h" - - -/* Table computed with Mark Adler's makecrc.c utility. */ -static const uint32_t crc32_table[256] = -{ - 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, - 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, - 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, - 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, - 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, - 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, - 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, - 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, - 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, - 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, - 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, - 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, - 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, - 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, - 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, - 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, - 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, - 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, - 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, - 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, - 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, - 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, - 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, - 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, - 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, - 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, - 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, - 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, - 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, - 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, - 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, - 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, - 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, - 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, - 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, - 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, - 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, - 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, - 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, - 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, - 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, - 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, - 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, - 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, - 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, - 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, - 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, - 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, - 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, - 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, - 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, - 0x2d02ef8d -}; - -uint32_t -crc32 (uint32_t crc, unsigned char *buf, size_t len) -{ - unsigned char *end; - - crc = ~crc; - for (end = buf + len; buf < end; ++buf) - crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8); - return ~crc; -} diff --git a/lib/dynamicsizehash.c b/lib/dynamicsizehash.c deleted file mode 100644 index 16575f50..00000000 --- a/lib/dynamicsizehash.c +++ /dev/null @@ -1,316 +0,0 @@ -/* Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <assert.h> -#include <stdlib.h> -#include <system.h> - -/* Before including this file the following macros must be defined: - - NAME name of the hash table structure. - TYPE data type of the hash table entries - COMPARE comparison function taking two pointers to TYPE objects - - The following macros if present select features: - - ITERATE iterating over the table entries is possible - REVERSE iterate in reverse order of insert - */ - - -static size_t -lookup (htab, hval, val) - NAME *htab; - unsigned long int hval; - TYPE val; -{ - /* First hash function: simply take the modul but prevent zero. */ - size_t idx = 1 + hval % htab->size; - - if (htab->table[idx].hashval != 0) - { - unsigned long int hash; - - if (htab->table[idx].hashval == hval - && COMPARE (htab->table[idx].data, val) == 0) - return idx; - - /* Second hash function as suggested in [Knuth]. */ - hash = 1 + hval % (htab->size - 2); - - do - { - if (idx <= hash) - idx = htab->size + idx - hash; - else - idx -= hash; - - /* If entry is found use it. */ - if (htab->table[idx].hashval == hval - && COMPARE (htab->table[idx].data, val) == 0) - return idx; - } - while (htab->table[idx].hashval); - } - return idx; -} - - -static void -insert_entry_2 (NAME *htab, unsigned long int hval, size_t idx, TYPE data) -{ -#ifdef ITERATE - if (htab->table[idx].hashval == 0) - { -# ifdef REVERSE - htab->table[idx].next = htab->first; - htab->first = &htab->table[idx]; -# else - /* Add the new value to the list. */ - if (htab->first == NULL) - htab->first = htab->table[idx].next = &htab->table[idx]; - else - { - htab->table[idx].next = htab->first->next; - htab->first = htab->first->next = &htab->table[idx]; - } -# endif - } -#endif - - htab->table[idx].hashval = hval; - htab->table[idx].data = data; - - ++htab->filled; - if (100 * htab->filled > 90 * htab->size) - { - /* Table is filled more than 90%. Resize the table. */ -#ifdef ITERATE - __typeof__ (htab->first) first; -# ifndef REVERSE - __typeof__ (htab->first) runp; -# endif -#else - unsigned long int old_size = htab->size; -#endif -#define _TABLE(name) \ - name##_ent *table = htab->table -#define TABLE(name) _TABLE (name) - TABLE(NAME); - - htab->size = next_prime (htab->size * 2); - htab->filled = 0; -#ifdef ITERATE - first = htab->first; - htab->first = NULL; -#endif - htab->table = calloc ((1 + htab->size), sizeof (htab->table[0])); - if (htab->table == NULL) - { - /* We cannot enlarge the table. Live with what we got. This - might lead to an infinite loop at some point, though. */ - htab->table = table; - return; - } - - /* Add the old entries to the new table. When iteration is - supported we maintain the order. */ -#ifdef ITERATE -# ifdef REVERSE - while (first != NULL) - { - insert_entry_2 (htab, first->hashval, - lookup (htab, first->hashval, first->data), - first->data); - - first = first->next; - } -# else - assert (first != NULL); - runp = first = first->next; - do - insert_entry_2 (htab, runp->hashval, - lookup (htab, runp->hashval, runp->data), runp->data); - while ((runp = runp->next) != first); -# endif -#else - for (idx = 1; idx <= old_size; ++idx) - if (table[idx].hashval != 0) - insert_entry_2 (htab, table[idx].hashval, - lookup (htab, table[idx].hashval, table[idx].data), - table[idx].data); -#endif - - free (table); - } -} - - -int -#define INIT(name) _INIT (name) -#define _INIT(name) \ - name##_init -INIT(NAME) (htab, init_size) - NAME *htab; - unsigned long int init_size; -{ - /* We need the size to be a prime. */ - init_size = next_prime (init_size); - - /* Initialize the data structure. */ - htab->size = init_size; - htab->filled = 0; -#ifdef ITERATE - htab->first = NULL; -#endif - htab->table = (void *) calloc ((init_size + 1), sizeof (htab->table[0])); - if (htab->table == NULL) - return -1; - - return 0; -} - - -int -#define FREE(name) _FREE (name) -#define _FREE(name) \ - name##_free -FREE(NAME) (htab) - NAME *htab; -{ - free (htab->table); - return 0; -} - - -int -#define INSERT(name) _INSERT (name) -#define _INSERT(name) \ - name##_insert -INSERT(NAME) (htab, hval, data) - NAME *htab; - unsigned long int hval; - TYPE data; -{ - size_t idx; - - /* Make the hash value nonzero. */ - hval = hval ?: 1; - - idx = lookup (htab, hval, data); - - if (htab->table[idx].hashval != 0) - /* We don't want to overwrite the old value. */ - return -1; - - /* An empty bucket has been found. */ - insert_entry_2 (htab, hval, idx, data); - return 0; -} - - -#ifdef OVERWRITE -int -#define INSERT(name) _INSERT (name) -#define _INSERT(name) \ - name##_overwrite -INSERT(NAME) (htab, hval, data) - NAME *htab; - unsigned long int hval; - TYPE data; -{ - size_t idx; - - /* Make the hash value nonzero. */ - hval = hval ?: 1; - - idx = lookup (htab, hval, data); - - /* The correct bucket has been found. */ - insert_entry_2 (htab, hval, idx, data); - return 0; -} -#endif - - -TYPE -#define FIND(name) _FIND (name) -#define _FIND(name) \ - name##_find -FIND(NAME) (htab, hval, val) - NAME *htab; - unsigned long int hval; - TYPE val; -{ - size_t idx; - - /* Make the hash value nonzero. */ - hval = hval ?: 1; - - idx = lookup (htab, hval, val); - - if (htab->table[idx].hashval == 0) - return NULL; - - return htab->table[idx].data; -} - - -#ifdef ITERATE -# define ITERATEFCT(name) _ITERATEFCT (name) -# define _ITERATEFCT(name) \ - name##_iterate -TYPE -ITERATEFCT(NAME) (htab, ptr) - NAME *htab; - void **ptr; -{ - void *p = *ptr; - -# define TYPENAME(name) _TYPENAME (name) -# define _TYPENAME(name) name##_ent - -# ifdef REVERSE - if (p == NULL) - p = htab->first; - else - p = ((TYPENAME(NAME) *) p)->next; - - if (p == NULL) - { - *ptr = NULL; - return NULL; - } -# else - if (p == NULL) - { - if (htab->first == NULL) - return NULL; - p = htab->first->next; - } - else - { - if (p == htab->first) - return NULL; - - p = ((TYPENAME(NAME) *) p)->next; - } -# endif - - /* Prepare the next element. If possible this will pull the data - into the cache, for reading. */ - __builtin_prefetch (((TYPENAME(NAME) *) p)->next, 0, 2); - - return ((TYPENAME(NAME) *) (*ptr = p))->data; -} -#endif diff --git a/lib/dynamicsizehash.h b/lib/dynamicsizehash.h deleted file mode 100644 index 39a706fd..00000000 --- a/lib/dynamicsizehash.h +++ /dev/null @@ -1,107 +0,0 @@ -/* Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <stddef.h> - -/* Before including this file the following macros must be defined: - - NAME name of the hash table structure. - TYPE data type of the hash table entries - - The following macros if present select features: - - ITERATE iterating over the table entries is possible - */ - - -/* Optionally include an entry pointing to the first used entry. */ -#ifdef ITERATE -# define FIRST(name) name##_ent *first; -# define NEXT(name) struct name##_ent *next; -#else -# define FIRST(name) -# define NEXT(name) -#endif - - -/* Defined separately. */ -extern size_t next_prime (size_t seed); - - -/* Table entry type. */ -#define _DYNHASHENTTYPE(name) \ - typedef struct name##_ent \ - { \ - unsigned long int hashval; \ - TYPE data; \ - NEXT (name) \ - } name##_ent -#define DYNHASHENTTYPE(name) _DYNHASHENTTYPE (name) -DYNHASHENTTYPE (NAME); - - -/* Type of the dynamic hash table data structure. */ -#define _DYNHASHTYPE(name) \ -typedef struct \ -{ \ - unsigned long int size; \ - unsigned long int filled; \ - name##_ent *table; \ - FIRST (name) \ -} name -#define DYNHASHTYPE(name) _DYNHASHTYPE (name) -DYNHASHTYPE (NAME); - - - -#define _FUNCTIONS(name) \ -/* Initialize the hash table. */ \ -extern int name##_init (name *htab, unsigned long int init_size); \ - \ -/* Free resources allocated for hash table. */ \ -extern int name##_free (name *htab); \ - \ -/* Insert new entry. */ \ -extern int name##_insert (name *htab, unsigned long int hval, TYPE data); \ - \ -/* Insert new entry, possibly overwrite old entry. */ \ -extern int name##_overwrite (name *htab, unsigned long int hval, TYPE data); \ - \ -/* Find entry in hash table. */ \ -extern TYPE name##_find (name *htab, unsigned long int hval, TYPE val); -#define FUNCTIONS(name) _FUNCTIONS (name) -FUNCTIONS (NAME) - - -#ifdef ITERATE -# define _XFUNCTIONS(name) \ -/* Get next element in table. */ \ -extern TYPE name##_iterate (name *htab, void **ptr); -# define XFUNCTIONS(name) _XFUNCTIONS (name) -XFUNCTIONS (NAME) -#endif - -#ifndef NO_UNDEF -# undef DYNHASHENTTYPE -# undef DYNHASHTYPE -# undef FUNCTIONS -# undef _FUNCTIONS -# undef XFUNCTIONS -# undef _XFUNCTIONS -# undef NAME -# undef TYPE -# undef ITERATE -# undef COMPARE -# undef FIRST -# undef NEXT -#endif diff --git a/lib/error.h b/lib/error.h deleted file mode 100644 index bbc15f99..00000000 --- a/lib/error.h +++ /dev/null @@ -1,3 +0,0 @@ -#ifndef ERROR_H -#define ERROR_H -#endif/* ERROR_H */ diff --git a/lib/fixedsizehash.h b/lib/fixedsizehash.h deleted file mode 100644 index c5a852c5..00000000 --- a/lib/fixedsizehash.h +++ /dev/null @@ -1,251 +0,0 @@ -/* Fixed size hash table with internal linking. - Copyright (C) 2000, 2001, 2002, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include <errno.h> -#include <stdlib.h> -#include <string.h> -#include <sys/cdefs.h> -#include <sys/param.h> - -#include <system.h> - -#define CONCAT(t1,t2) __CONCAT (t1,t2) - -/* Before including this file the following macros must be defined: - - TYPE data type of the hash table entries - HASHFCT name of the hashing function to use - HASHTYPE type used for the hashing value - COMPARE comparison function taking two pointers to TYPE objects - CLASS can be defined to `static' to avoid exporting the functions - PREFIX prefix to be used for function and data type names - STORE_POINTER if defined the table stores a pointer and not an element - of type TYPE - INSERT_HASH if defined alternate insert function which takes a hash - value is defined - NO_FINI_FCT if defined the fini function is not defined -*/ - - -/* Defined separately. */ -extern size_t next_prime (size_t seed); - - -/* Set default values. */ -#ifndef HASHTYPE -# define HASHTYPE size_t -#endif - -#ifndef CLASS -# define CLASS -#endif - -#ifndef PREFIX -# define PREFIX -#endif - - -/* The data structure. */ -struct CONCAT(PREFIX,fshash) -{ - size_t nslots; - struct CONCAT(PREFIX,fshashent) - { - HASHTYPE hval; -#ifdef STORE_POINTER -# define ENTRYP(el) (el).entry - TYPE *entry; -#else -# define ENTRYP(el) &(el).entry - TYPE entry; -#endif - } table[0]; -}; - - -/* Constructor for the hashing table. */ -CLASS struct CONCAT(PREFIX,fshash) * -CONCAT(PREFIX,fshash_init) (size_t nelems) -{ - struct CONCAT(PREFIX,fshash) *result; - /* We choose a size for the hashing table 150% over the number of - entries. This will guarantee short medium search lengths. */ - const size_t max_size_t = ~((size_t) 0); - - if (nelems >= (max_size_t / 3) * 2) - { - errno = EINVAL; - return NULL; - } - - /* Adjust the size to be used for the hashing table. */ - nelems = next_prime (MAX ((nelems * 3) / 2, 10)); - - /* Allocate the data structure for the result. */ - result = (struct CONCAT(PREFIX,fshash) *) - xcalloc (sizeof (struct CONCAT(PREFIX,fshash)) - + (nelems + 1) * sizeof (struct CONCAT(PREFIX,fshashent)), 1); - if (result == NULL) - return NULL; - - result->nslots = nelems; - - return result; -} - - -#ifndef NO_FINI_FCT -CLASS void -CONCAT(PREFIX,fshash_fini) (struct CONCAT(PREFIX,fshash) *htab) -{ - free (htab); -} -#endif - - -static struct CONCAT(PREFIX,fshashent) * -CONCAT(PREFIX,fshash_lookup) (struct CONCAT(PREFIX,fshash) *htab, - HASHTYPE hval, TYPE *data) -{ - size_t idx = 1 + hval % htab->nslots; - - if (htab->table[idx].hval != 0) - { - HASHTYPE hash; - - /* See whether this is the same entry. */ - if (htab->table[idx].hval == hval - && COMPARE (data, ENTRYP (htab->table[idx])) == 0) - return &htab->table[idx]; - - /* Second hash function as suggested in [Knuth]. */ - hash = 1 + hval % (htab->nslots - 2); - - do - { - if (idx <= hash) - idx = htab->nslots + idx - hash; - else - idx -= hash; - - if (htab->table[idx].hval == hval - && COMPARE (data, ENTRYP(htab->table[idx])) == 0) - return &htab->table[idx]; - } - while (htab->table[idx].hval != 0); - } - - return &htab->table[idx]; -} - - -CLASS int -__attribute__ ((unused)) -CONCAT(PREFIX,fshash_insert) (struct CONCAT(PREFIX,fshash) *htab, - const char *str, size_t len, TYPE *data) -{ - HASHTYPE hval = HASHFCT (str, len ?: strlen (str)); - struct CONCAT(PREFIX,fshashent) *slot; - - slot = CONCAT(PREFIX,fshash_lookup) (htab, hval, data); - if (slot->hval != 0) - /* We don't want to overwrite the old value. */ - return -1; - - slot->hval = hval; -#ifdef STORE_POINTER - slot->entry = data; -#else - slot->entry = *data; -#endif - - return 0; -} - - -#ifdef INSERT_HASH -CLASS int -__attribute__ ((unused)) -CONCAT(PREFIX,fshash_insert_hash) (struct CONCAT(PREFIX,fshash) *htab, - HASHTYPE hval, TYPE *data) -{ - struct CONCAT(PREFIX,fshashent) *slot; - - slot = CONCAT(PREFIX,fshash_lookup) (htab, hval, data); - if (slot->hval != 0) - /* We don't want to overwrite the old value. */ - return -1; - - slot->hval = hval; -#ifdef STORE_POINTER - slot->entry = data; -#else - slot->entry = *data; -#endif - - return 0; -} -#endif - - -CLASS int -__attribute__ ((unused)) -CONCAT(PREFIX,fshash_overwrite) (struct CONCAT(PREFIX,fshash) *htab, - const char *str, size_t len, TYPE *data) -{ - HASHTYPE hval = HASHFCT (str, len ?: strlen (str)); - struct CONCAT(PREFIX,fshashent) *slot; - - slot = CONCAT(PREFIX,fshash_lookup) (htab, hval, data); - slot->hval = hval; -#ifdef STORE_POINTER - slot->entry = data; -#else - slot->entry = *data; -#endif - - return 0; -} - - -const CLASS TYPE * -CONCAT(PREFIX,fshash_find) (const struct CONCAT(PREFIX,fshash) *htab, - const char *str, size_t len, TYPE *data) -{ - HASHTYPE hval = HASHFCT (str, len ?: strlen (str)); - struct CONCAT(PREFIX,fshashent) *slot; - - slot = CONCAT(PREFIX,fshash_lookup) ((struct CONCAT(PREFIX,fshash) *) htab, - hval, data); - if (slot->hval == 0) - /* Not found. */ - return NULL; - - return ENTRYP(*slot); -} - - -/* Unset the macros we expect. */ -#undef TYPE -#undef HASHFCT -#undef HASHTYPE -#undef COMPARE -#undef CLASS -#undef PREFIX -#undef INSERT_HASH -#undef STORE_POINTER -#undef NO_FINI_FCT diff --git a/lib/libeu.a b/lib/libeu.a Binary files differdeleted file mode 100644 index 321b74dc..00000000 --- a/lib/libeu.a +++ /dev/null diff --git a/lib/list.h b/lib/list.h deleted file mode 100644 index c039a0ba..00000000 --- a/lib/list.h +++ /dev/null @@ -1,85 +0,0 @@ -/* Copyright (C) 2001, 2002, 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef LIST_H -#define LIST_H 1 - -/* Add element to the end of a circular, double-linked list. */ -#define CDBL_LIST_ADD_REAR(first, newp) \ - do { \ - __typeof (newp) _newp = (newp); \ - assert (_newp->next == NULL); \ - assert (_newp->previous == NULL); \ - if (unlikely ((first) == NULL)) \ - (first) = _newp->next = _newp->previous = _newp; \ - else \ - { \ - _newp->next = (first); \ - _newp->previous = (first)->previous; \ - _newp->previous->next = _newp->next->previous = _newp; \ - } \ - } while (0) - -/* Remove element from circular, double-linked list. */ -#define CDBL_LIST_DEL(first, elem) \ - do { \ - __typeof (elem) _elem = (elem); \ - /* Check whether the element is indeed on the list. */ \ - assert (first != NULL && _elem != NULL \ - && (first != elem \ - || ({ __typeof (elem) _runp = first->next; \ - while (_runp != first) \ - if (_runp == _elem) \ - break; \ - else \ - _runp = _runp->next; \ - _runp == _elem; }))); \ - if (unlikely (_elem->next == _elem)) \ - first = NULL; \ - else \ - { \ - _elem->next->previous = _elem->previous; \ - _elem->previous->next = _elem->next; \ - if (unlikely (first == _elem)) \ - first = _elem->next; \ - } \ - assert ((_elem->next = _elem->previous = NULL, 1)); \ - } while (0) - - -/* Add element to the front of a single-linked list. */ -#define SNGL_LIST_PUSH(first, newp) \ - do { \ - __typeof (newp) _newp = (newp); \ - assert (_newp->next == NULL); \ - _newp->next = first; \ - first = _newp; \ - } while (0) - - -/* Add element to the rear of a circular single-linked list. */ -#define CSNGL_LIST_ADD_REAR(first, newp) \ - do { \ - __typeof (newp) _newp = (newp); \ - assert (_newp->next == NULL); \ - if (unlikely ((first) == NULL)) \ - (first) = _newp->next = _newp; \ - else \ - { \ - _newp->next = (first)->next; \ - (first) = (first)->next = _newp; \ - } \ - } while (0) - - -#endif /* list.h */ diff --git a/lib/next_prime.c b/lib/next_prime.c deleted file mode 100644 index 5d608046..00000000 --- a/lib/next_prime.c +++ /dev/null @@ -1,54 +0,0 @@ -/* Determine prime number. - Copyright (C) 2000, 2002 Free Software Foundation, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include <stddef.h> - - -/* Test whether CANDIDATE is a prime. */ -static int -is_prime (size_t candidate) -{ - /* No even number and none less than 10 will be passed here. */ - size_t divn = 3; - size_t sq = divn * divn; - - while (sq < candidate && candidate % divn != 0) - { - size_t old_sq = sq; - ++divn; - sq += 4 * divn; - if (sq < old_sq) - return 1; - ++divn; - } - - return candidate % divn != 0; -} - - -/* We need primes for the table size. */ -size_t -next_prime (size_t seed) -{ - /* Make it definitely odd. */ - seed |= 1; - - while (!is_prime (seed)) - seed += 2; - - return seed; -} diff --git a/lib/system.h b/lib/system.h deleted file mode 100644 index 8e46feac..00000000 --- a/lib/system.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright (C) 2000, 2002, 2004 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef LIB_SYSTEM_H -#define LIB_SYSTEM_H 1 - -#include <stddef.h> -#include <stdint.h> - -extern void *xmalloc (size_t) __attribute__ ((__malloc__)); -extern void *xcalloc (size_t, size_t) __attribute__ ((__malloc__)); -extern void *xrealloc (void *, size_t) __attribute__ ((__malloc__)); - -extern char *xstrdup (const char *) __attribute__ ((__malloc__)); -extern char *xstrndup (const char *, size_t) __attribute__ ((__malloc__)); - - -extern uint32_t crc32 (uint32_t crc, unsigned char *buf, size_t len); - - -/* A special gettext function we use if the strings are too short. */ -#define sgettext(Str) \ - ({ const char *__res = strrchr (gettext (Str), '|'); \ - __res ? __res + 1 : Str; }) - -#define gettext_noop(Str) Str - -#endif /* system.h */ diff --git a/lib/xmalloc.c b/lib/xmalloc.c deleted file mode 100644 index 5d077d03..00000000 --- a/lib/xmalloc.c +++ /dev/null @@ -1,68 +0,0 @@ -/* Copyright (C) 2000, 2002 Free Software Foundation, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <error.h> -//#include <libintl.h> -#include <stddef.h> -#include <stdlib.h> -#include <sys/types.h> -#include "system.h" - -#ifndef _ -# define _(str) gettext (str) -#endif - - -/* Allocate N bytes of memory dynamically, with error checking. */ -void * -xmalloc (n) - size_t n; -{ - void *p; - - p = malloc (n); - if (p == NULL) - error (EXIT_FAILURE, 0, _("memory exhausted")); - return p; -} - - -/* Allocate memory for N elements of S bytes, with error checking. */ -void * -xcalloc (n, s) - size_t n, s; -{ - void *p; - - p = calloc (n, s); - if (p == NULL) - error (EXIT_FAILURE, 0, _("memory exhausted")); - return p; -} - - -/* Change the size of an allocated block of memory P to N bytes, - with error checking. */ -void * -xrealloc (p, n) - void *p; - size_t n; -{ - p = realloc (p, n); - if (p == NULL) - error (EXIT_FAILURE, 0, _("memory exhausted")); - return p; -} diff --git a/lib/xstrdup.c b/lib/xstrdup.c deleted file mode 100644 index ad70a630..00000000 --- a/lib/xstrdup.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright (C) 2000, 2002 Free Software Foundation, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <string.h> -#include "system.h" - - -/* Return a newly allocated copy of STRING. */ -char * -xstrdup (string) - const char *string; -{ - return strcpy (xmalloc (strlen (string) + 1), string); -} diff --git a/lib/xstrndup.c b/lib/xstrndup.c deleted file mode 100644 index 946f3616..00000000 --- a/lib/xstrndup.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (C) 2000, 2002 Free Software Foundation, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <string.h> -#include "system.h" - - -/* Return a newly allocated copy of STRING. */ -char * -xstrndup (string, n) - const char *string; - size_t n; -{ - char *res; - size_t len = strnlen (string, n); - *((char *) mempcpy ((res = xmalloc (len + 1)), string, len)) = '\0'; - return res; -} diff --git a/libasm/ChangeLog b/libasm/ChangeLog deleted file mode 100644 index 630696d7..00000000 --- a/libasm/ChangeLog +++ /dev/null @@ -1,23 +0,0 @@ -2004-09-25 Ulrich Drepper <drepper@redhat.com> - - * asm_error.c: Make compile with gcc 4.0. - -2004-01-20 Ulrich Drepper <drepper@redhat.com> - - * Makefile.am: Support building with mudflap. - -2004-01-18 Ulrich Drepper <drepper@redhat.com> - - * libasmP.h (_): Use elfutils domain. - -2004-01-17 Ulrich Drepper <drepper@redhat.com> - - * Makefile.am: Support building with mudflap. - -2003-08-13 Ulrich Drepper <drepper@redhat.com> - - * Makefile.in: Depend on libebl.a, not libebl.so. - -2003-08-11 Ulrich Drepper <drepper@redhat.com> - - * Moved to CVS archive. diff --git a/libasm/Makefile b/libasm/Makefile deleted file mode 100644 index cf50cdbe..00000000 --- a/libasm/Makefile +++ /dev/null @@ -1,593 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# libasm/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - - - -SOURCES = $(libasm_a_SOURCES) $(libasm_pic_a_SOURCES) $(libasm_so_SOURCES) - -srcdir = . -top_srcdir = .. - -pkgdatadir = $(datadir)/elfutils -pkglibdir = $(libdir)/elfutils -pkgincludedir = $(includedir)/elfutils -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = /usr/bin/install -c -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = i686-pc-linux-gnu -host_triplet = i686-pc-linux-gnu -noinst_PROGRAMS = $(am__EXEEXT_1) -#am_libasm_pic_a_OBJECTS = -subdir = libasm -DIST_COMMON = $(euinclude_HEADERS) $(noinst_HEADERS) \ - $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(euincludedir)" -libLIBRARIES_INSTALL = $(INSTALL_DATA) -LIBRARIES = $(lib_LIBRARIES) $(noinst_LIBRARIES) -AR = ar -ARFLAGS = cru -libasm_a_AR = $(AR) $(ARFLAGS) -libasm_a_LIBADD = -am_libasm_a_OBJECTS = asm_begin.$(OBJEXT) asm_abort.$(OBJEXT) \ - asm_end.$(OBJEXT) asm_error.$(OBJEXT) asm_getelf.$(OBJEXT) \ - asm_newscn.$(OBJEXT) asm_newscn_ingrp.$(OBJEXT) \ - asm_newsubscn.$(OBJEXT) asm_newsym.$(OBJEXT) \ - asm_newcomsym.$(OBJEXT) asm_newabssym.$(OBJEXT) \ - asm_newscngrp.$(OBJEXT) asm_scngrp_newsignature.$(OBJEXT) \ - asm_fill.$(OBJEXT) asm_align.$(OBJEXT) asm_addstrz.$(OBJEXT) \ - asm_addint8.$(OBJEXT) asm_adduint8.$(OBJEXT) \ - asm_addint16.$(OBJEXT) asm_adduint16.$(OBJEXT) \ - asm_addint32.$(OBJEXT) asm_adduint32.$(OBJEXT) \ - asm_addint64.$(OBJEXT) asm_adduint64.$(OBJEXT) \ - asm_adduleb128.$(OBJEXT) asm_addsleb128.$(OBJEXT) \ - symbolhash.$(OBJEXT) -libasm_a_OBJECTS = $(am_libasm_a_OBJECTS) -libasm_pic_a_AR = $(AR) $(ARFLAGS) -libasm_pic_a_LIBADD = -libasm_pic_a_OBJECTS = $(am_libasm_pic_a_OBJECTS) -am__EXEEXT_1 = libasm.so$(EXEEXT) -PROGRAMS = $(noinst_PROGRAMS) -am_libasm_so_OBJECTS = -libasm_so_OBJECTS = $(am_libasm_so_OBJECTS) -libasm_so_LDADD = $(LDADD) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(libasm_a_SOURCES) $(libasm_pic_a_SOURCES) \ - $(libasm_so_SOURCES) -DIST_SOURCES = $(libasm_a_SOURCES) $(libasm_pic_a_SOURCES) \ - $(libasm_so_SOURCES) -euincludeHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(euinclude_HEADERS) $(noinst_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run aclocal-1.9 -AMDEP_FALSE = # -AMDEP_TRUE = -AMTAR = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run tar -AUTOCONF = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoconf -AUTOHEADER = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoheader -AUTOMAKE = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run automake-1.9 -AWK = gawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -CPP = gcc -E -CPPFLAGS = -CYGPATH_W = echo -DATADIRNAME = ${prefix}/share -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DEPDIR = .deps -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = grep -E -EXEEXT = -GMSGFMT = /usr/bin/msgfmt -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s -INTLLIBS = -LDFLAGS = -LEX = flex -LEXLIB = -lfl -LEX_OUTPUT_ROOT = lex.yy -LIBICONV = -liconv -LIBINTL = -LIBOBJS = -LIBS = -LOCALEDIR = ${prefix}/share -LTLIBICONV = -liconv -LTLIBINTL = -LTLIBOBJS = -MAKEINFO = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run makeinfo -MKINSTALLDIRS = config/mkinstalldirs -MSGFMT = /usr/bin/msgfmt -MSGMERGE = /usr/bin/msgmerge -MUDFLAP_FALSE = -MUDFLAP_TRUE = # -NATIVE_LD_FALSE = -NATIVE_LD_TRUE = # -OBJEXT = o -PACKAGE = elfutils -PACKAGE_BUGREPORT = http://bugzilla.redhat.com/bugzilla/ -PACKAGE_NAME = Red Hat elfutils -PACKAGE_STRING = Red Hat elfutils 0.97 -PACKAGE_TARNAME = elfutils -PACKAGE_VERSION = 0.97 -PATH_SEPARATOR = : -POSUB = po -RANLIB = ranlib -SET_MAKE = -SHELL = /bin/sh -STRIP = -USE_NLS = yes -VERSION = 1 -XGETTEXT = /usr/bin/xgettext -YACC = bison -y -ac_ct_CC = gcc -ac_ct_RANLIB = ranlib -ac_ct_STRIP = -am__fastdepCC_FALSE = # -am__fastdepCC_TRUE = -am__include = include -am__leading_dot = . -am__quote = -am__tar = ${AMTAR} chof - "$$tardir" -am__untar = ${AMTAR} xf - -base_cpu = none -bindir = ${exec_prefix}/bin -build = i686-pc-linux-gnu -build_alias = -build_cpu = i686 -build_os = linux-gnu -build_vendor = pc -datadir = ${prefix}/share -exec_prefix = ${prefix} -host = i686-pc-linux-gnu -host_alias = -host_cpu = i686 -host_os = linux-gnu -host_vendor = pc -includedir = ${prefix}/include -infodir = ${prefix}/info -install_sh = /work/elfutils/stock/elfutils-0.97/config/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localstatedir = ${prefix}/var -mandir = ${prefix}/man -mkdir_p = mkdir -p -- -oldincludedir = /usr/include -prefix = /work/elfutils/google/linux-install-elfutils-0.97/ -program_transform_name = s,x,x, -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -sysconfdir = ${prefix}/etc -target_alias = -AM_CFLAGS = -Wall -Werror -#AM_CFLAGS = -Wall -INCLUDES = -I. -I$(srcdir) -I.. -I$(top_srcdir)/libelf -I$(top_srcdir)/libebl \ - -I$(top_srcdir)/lib - -GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include) -LINT = splint -lib_LIBRARIES = libasm.a -noinst_LIBRARIES = libasm_pic.a -euincludedir = ${includedir}/elfutils -euinclude_HEADERS = libasm.h -libasm_a_SOURCES = asm_begin.c asm_abort.c asm_end.c asm_error.c \ - asm_getelf.c asm_newscn.c asm_newscn_ingrp.c \ - asm_newsubscn.c asm_newsym.c asm_newcomsym.c \ - asm_newabssym.c \ - asm_newscngrp.c asm_scngrp_newsignature.c \ - asm_fill.c asm_align.c asm_addstrz.c \ - asm_addint8.c asm_adduint8.c \ - asm_addint16.c asm_adduint16.c \ - asm_addint32.c asm_adduint32.c \ - asm_addint64.c asm_adduint64.c \ - asm_adduleb128.c asm_addsleb128.c \ - symbolhash.c - -libasm_pic_a_SOURCES = -am_libasm_pic_a_OBJECTS = $(libasm_a_SOURCES:.c=.os) -libasm_so_SOURCES = -noinst_HEADERS = libasmP.h symbolhash.h -EXTRA_DIST = libasm.map -CLEANFILES = $(am_libasm_pic_a_OBJECTS) -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits libasm/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits libasm/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -install-libLIBRARIES: $(lib_LIBRARIES) - @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - f=$(am__strip_dir) \ - echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ - $(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ - else :; fi; \ - done - @$(POST_INSTALL) - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - p=$(am__strip_dir) \ - echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \ - $(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \ - else :; fi; \ - done - -uninstall-libLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - p=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \ - rm -f "$(DESTDIR)$(libdir)/$$p"; \ - done - -clean-libLIBRARIES: - -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libasm.a: $(libasm_a_OBJECTS) $(libasm_a_DEPENDENCIES) - -rm -f libasm.a - $(libasm_a_AR) libasm.a $(libasm_a_OBJECTS) $(libasm_a_LIBADD) - $(RANLIB) libasm.a -libasm_pic.a: $(libasm_pic_a_OBJECTS) $(libasm_pic_a_DEPENDENCIES) - -rm -f libasm_pic.a - $(libasm_pic_a_AR) libasm_pic.a $(libasm_pic_a_OBJECTS) $(libasm_pic_a_LIBADD) - $(RANLIB) libasm_pic.a - -clean-noinstPROGRAMS: - -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) -#libasm.so$(EXEEXT): $(libasm_so_OBJECTS) $(libasm_so_DEPENDENCIES) -# @rm -f libasm.so$(EXEEXT) -# $(LINK) $(libasm_so_LDFLAGS) $(libasm_so_OBJECTS) $(libasm_so_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -include ./$(DEPDIR)/asm_abort.Po -include ./$(DEPDIR)/asm_addint16.Po -include ./$(DEPDIR)/asm_addint32.Po -include ./$(DEPDIR)/asm_addint64.Po -include ./$(DEPDIR)/asm_addint8.Po -include ./$(DEPDIR)/asm_addsleb128.Po -include ./$(DEPDIR)/asm_addstrz.Po -include ./$(DEPDIR)/asm_adduint16.Po -include ./$(DEPDIR)/asm_adduint32.Po -include ./$(DEPDIR)/asm_adduint64.Po -include ./$(DEPDIR)/asm_adduint8.Po -include ./$(DEPDIR)/asm_adduleb128.Po -include ./$(DEPDIR)/asm_align.Po -include ./$(DEPDIR)/asm_begin.Po -include ./$(DEPDIR)/asm_end.Po -include ./$(DEPDIR)/asm_error.Po -include ./$(DEPDIR)/asm_fill.Po -include ./$(DEPDIR)/asm_getelf.Po -include ./$(DEPDIR)/asm_newabssym.Po -include ./$(DEPDIR)/asm_newcomsym.Po -include ./$(DEPDIR)/asm_newscn.Po -include ./$(DEPDIR)/asm_newscn_ingrp.Po -include ./$(DEPDIR)/asm_newscngrp.Po -include ./$(DEPDIR)/asm_newsubscn.Po -include ./$(DEPDIR)/asm_newsym.Po -include ./$(DEPDIR)/asm_scngrp_newsignature.Po -include ./$(DEPDIR)/symbolhash.Po - -.c.o: - if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ - then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c $< - -.c.obj: - if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ - then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c `$(CYGPATH_W) '$<'` -uninstall-info-am: -install-euincludeHEADERS: $(euinclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(euincludedir)" || $(mkdir_p) "$(DESTDIR)$(euincludedir)" - @list='$(euinclude_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(euincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(euincludedir)/$$f'"; \ - $(euincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(euincludedir)/$$f"; \ - done - -uninstall-euincludeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(euinclude_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(euincludedir)/$$f'"; \ - rm -f "$(DESTDIR)$(euincludedir)/$$f"; \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(euincludedir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ - done -#install: install-am -install-exec: install-exec-am -install-data: install-data-am -#uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libLIBRARIES clean-noinstLIBRARIES \ - clean-noinstPROGRAMS mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-euincludeHEADERS - -install-exec-am: install-libLIBRARIES - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-euincludeHEADERS uninstall-info-am \ - uninstall-libLIBRARIES - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libLIBRARIES clean-noinstLIBRARIES clean-noinstPROGRAMS \ - ctags distclean distclean-compile distclean-generic \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am \ - install-euincludeHEADERS install-exec install-exec-am \ - install-info install-info-am install-libLIBRARIES install-man \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-euincludeHEADERS \ - uninstall-info-am uninstall-libLIBRARIES - -libasm.so: libasm_pic.a libasm.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libasm.map,--no-undefined \ - -Wl,--soname,$@.$(VERSION) \ - ../libebl/libebl.a ../libelf/libelf.so - ln -fs $@ $@.$(VERSION) - -%.os: %.c %.o - if $(COMPILE) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \ - -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \ - then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \ - rm -f "$(DEPDIR)/$*.Tpo"; \ - else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ - fi - -install: install-am libasm.so - $(mkinstalldirs) $(DESTDIR)$(libdir) - $(INSTALL_PROGRAM) libasm.so $(DESTDIR)$(libdir)/libasm-$(PACKAGE_VERSION).so - ln -fs libasm-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/libasm.so.$(VERSION) - ln -fs libasm.so.$(VERSION) $(DESTDIR)$(libdir)/libasm.so - -uninstall: uninstall-am - rm -f $(DESTDIR)$(libdir)/libasm-$(PACKAGE_VERSION).so - rm -f $(DESTDIR)$(libdir)/libasm.so.$(VERSION) - rm -f $(DESTDIR)$(libdir)/libasm.so - rmdir --ignore-fail-on-non-empty $(DESTDIR)$(includedir)/elfutils - -.PSEUDO: lint -lint: - $(LINT) $(DEFS) $(INCLUDES) $(GCC_INCLUDE) -f $(top_srcdir)/splint.rc \ - $(addprefix $(srcdir)/,$(libelf_la_SOURCES)) -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/libasm/Makefile.am b/libasm/Makefile.am deleted file mode 100644 index 9ba304d1..00000000 --- a/libasm/Makefile.am +++ /dev/null @@ -1,92 +0,0 @@ -## Process this file with automake to create Makefile.in -## Configure input file for elfutils. -## -## Copyright (C) 2002, 2004 Red Hat, Inc. -## -## This program is Open Source software; you can redistribute it and/or -## modify it under the terms of the Open Software License version 1.0 as -## published by the Open Source Initiative. -## -## You should have received a copy of the Open Software License along -## with this program; if not, you may obtain a copy of the Open Software -## License version 1.0 from http://www.opensource.org/licenses/osl.php or -## by writing the Open Source Initiative c/o Lawrence Rosen, Esq., -## 3001 King Ranch Road, Ukiah, CA 95482. -## -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -if MUDFLAP -AM_CFLAGS = -Wall -else -AM_CFLAGS = -Wall -Werror -endif -INCLUDES = -I. -I$(srcdir) -I.. -I$(top_srcdir)/libelf -I$(top_srcdir)/libebl \ - -I$(top_srcdir)/lib -GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include) -VERSION = 1 - -LINT = splint - -lib_LIBRARIES = libasm.a -if !MUDFLAP -noinst_LIBRARIES = libasm_pic.a -noinst_PROGRAMS = $(noinst_LIBRARIES:_pic.a=.so) -endif -euincludedir = ${includedir}/elfutils -euinclude_HEADERS = libasm.h - -libasm_a_SOURCES = asm_begin.c asm_abort.c asm_end.c asm_error.c \ - asm_getelf.c asm_newscn.c asm_newscn_ingrp.c \ - asm_newsubscn.c asm_newsym.c asm_newcomsym.c \ - asm_newabssym.c \ - asm_newscngrp.c asm_scngrp_newsignature.c \ - asm_fill.c asm_align.c asm_addstrz.c \ - asm_addint8.c asm_adduint8.c \ - asm_addint16.c asm_adduint16.c \ - asm_addint32.c asm_adduint32.c \ - asm_addint64.c asm_adduint64.c \ - asm_adduleb128.c asm_addsleb128.c \ - symbolhash.c - -if !MUDFLAP -libasm_pic_a_SOURCES = -am_libasm_pic_a_OBJECTS = $(libasm_a_SOURCES:.c=.os) - -libasm_so_SOURCES = -libasm.so: libasm_pic.a libasm.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libasm.map,--no-undefined \ - -Wl,--soname,$@.$(VERSION) \ - ../libebl/libebl.a ../libelf/libelf.so - ln -fs $@ $@.$(VERSION) - - -%.os: %.c %.o - if $(COMPILE) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \ - -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \ - then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \ - rm -f "$(DEPDIR)/$*.Tpo"; \ - else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ - fi - -install: install-am libasm.so - $(mkinstalldirs) $(DESTDIR)$(libdir) - $(INSTALL_PROGRAM) libasm.so $(DESTDIR)$(libdir)/libasm-$(PACKAGE_VERSION).so - ln -fs libasm-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/libasm.so.$(VERSION) - ln -fs libasm.so.$(VERSION) $(DESTDIR)$(libdir)/libasm.so - -uninstall: uninstall-am - rm -f $(DESTDIR)$(libdir)/libasm-$(PACKAGE_VERSION).so - rm -f $(DESTDIR)$(libdir)/libasm.so.$(VERSION) - rm -f $(DESTDIR)$(libdir)/libasm.so - rmdir --ignore-fail-on-non-empty $(DESTDIR)$(includedir)/elfutils -endif - -.PSEUDO: lint -lint: - $(LINT) $(DEFS) $(INCLUDES) $(GCC_INCLUDE) -f $(top_srcdir)/splint.rc \ - $(addprefix $(srcdir)/,$(libelf_la_SOURCES)) - -noinst_HEADERS = libasmP.h symbolhash.h -EXTRA_DIST = libasm.map - -CLEANFILES = $(am_libasm_pic_a_OBJECTS) diff --git a/libasm/Makefile.in b/libasm/Makefile.in deleted file mode 100644 index 9683d4d2..00000000 --- a/libasm/Makefile.in +++ /dev/null @@ -1,593 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - - -SOURCES = $(libasm_a_SOURCES) $(libasm_pic_a_SOURCES) $(libasm_so_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -@MUDFLAP_FALSE@noinst_PROGRAMS = $(am__EXEEXT_1) -@MUDFLAP_TRUE@am_libasm_pic_a_OBJECTS = -subdir = libasm -DIST_COMMON = $(euinclude_HEADERS) $(noinst_HEADERS) \ - $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(euincludedir)" -libLIBRARIES_INSTALL = $(INSTALL_DATA) -LIBRARIES = $(lib_LIBRARIES) $(noinst_LIBRARIES) -AR = ar -ARFLAGS = cru -libasm_a_AR = $(AR) $(ARFLAGS) -libasm_a_LIBADD = -am_libasm_a_OBJECTS = asm_begin.$(OBJEXT) asm_abort.$(OBJEXT) \ - asm_end.$(OBJEXT) asm_error.$(OBJEXT) asm_getelf.$(OBJEXT) \ - asm_newscn.$(OBJEXT) asm_newscn_ingrp.$(OBJEXT) \ - asm_newsubscn.$(OBJEXT) asm_newsym.$(OBJEXT) \ - asm_newcomsym.$(OBJEXT) asm_newabssym.$(OBJEXT) \ - asm_newscngrp.$(OBJEXT) asm_scngrp_newsignature.$(OBJEXT) \ - asm_fill.$(OBJEXT) asm_align.$(OBJEXT) asm_addstrz.$(OBJEXT) \ - asm_addint8.$(OBJEXT) asm_adduint8.$(OBJEXT) \ - asm_addint16.$(OBJEXT) asm_adduint16.$(OBJEXT) \ - asm_addint32.$(OBJEXT) asm_adduint32.$(OBJEXT) \ - asm_addint64.$(OBJEXT) asm_adduint64.$(OBJEXT) \ - asm_adduleb128.$(OBJEXT) asm_addsleb128.$(OBJEXT) \ - symbolhash.$(OBJEXT) -libasm_a_OBJECTS = $(am_libasm_a_OBJECTS) -libasm_pic_a_AR = $(AR) $(ARFLAGS) -libasm_pic_a_LIBADD = -libasm_pic_a_OBJECTS = $(am_libasm_pic_a_OBJECTS) -@MUDFLAP_FALSE@am__EXEEXT_1 = libasm.so$(EXEEXT) -PROGRAMS = $(noinst_PROGRAMS) -am_libasm_so_OBJECTS = -libasm_so_OBJECTS = $(am_libasm_so_OBJECTS) -libasm_so_LDADD = $(LDADD) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(libasm_a_SOURCES) $(libasm_pic_a_SOURCES) \ - $(libasm_so_SOURCES) -DIST_SOURCES = $(libasm_a_SOURCES) $(libasm_pic_a_SOURCES) \ - $(libasm_so_SOURCES) -euincludeHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(euinclude_HEADERS) $(noinst_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DATADIRNAME = @DATADIRNAME@ -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DEPDIR = @DEPDIR@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -GMSGFMT = @GMSGFMT@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTLLIBS = @INTLLIBS@ -LDFLAGS = @LDFLAGS@ -LEX = @LEX@ -LEXLIB = @LEXLIB@ -LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LOCALEDIR = @LOCALEDIR@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -MSGMERGE = @MSGMERGE@ -MUDFLAP_FALSE = @MUDFLAP_FALSE@ -MUDFLAP_TRUE = @MUDFLAP_TRUE@ -NATIVE_LD_FALSE = @NATIVE_LD_FALSE@ -NATIVE_LD_TRUE = @NATIVE_LD_TRUE@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USE_NLS = @USE_NLS@ -VERSION = 1 -XGETTEXT = @XGETTEXT@ -YACC = @YACC@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -base_cpu = @base_cpu@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -datadir = @datadir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -@MUDFLAP_FALSE@AM_CFLAGS = -Wall -Werror -@MUDFLAP_TRUE@AM_CFLAGS = -Wall -INCLUDES = -I. -I$(srcdir) -I.. -I$(top_srcdir)/libelf -I$(top_srcdir)/libebl \ - -I$(top_srcdir)/lib - -GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include) -LINT = splint -lib_LIBRARIES = libasm.a -@MUDFLAP_FALSE@noinst_LIBRARIES = libasm_pic.a -euincludedir = ${includedir}/elfutils -euinclude_HEADERS = libasm.h -libasm_a_SOURCES = asm_begin.c asm_abort.c asm_end.c asm_error.c \ - asm_getelf.c asm_newscn.c asm_newscn_ingrp.c \ - asm_newsubscn.c asm_newsym.c asm_newcomsym.c \ - asm_newabssym.c \ - asm_newscngrp.c asm_scngrp_newsignature.c \ - asm_fill.c asm_align.c asm_addstrz.c \ - asm_addint8.c asm_adduint8.c \ - asm_addint16.c asm_adduint16.c \ - asm_addint32.c asm_adduint32.c \ - asm_addint64.c asm_adduint64.c \ - asm_adduleb128.c asm_addsleb128.c \ - symbolhash.c - -@MUDFLAP_FALSE@libasm_pic_a_SOURCES = -@MUDFLAP_FALSE@am_libasm_pic_a_OBJECTS = $(libasm_a_SOURCES:.c=.os) -@MUDFLAP_FALSE@libasm_so_SOURCES = -noinst_HEADERS = libasmP.h symbolhash.h -EXTRA_DIST = libasm.map -CLEANFILES = $(am_libasm_pic_a_OBJECTS) -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits libasm/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits libasm/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -install-libLIBRARIES: $(lib_LIBRARIES) - @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - f=$(am__strip_dir) \ - echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ - $(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ - else :; fi; \ - done - @$(POST_INSTALL) - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - p=$(am__strip_dir) \ - echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \ - $(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \ - else :; fi; \ - done - -uninstall-libLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - p=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \ - rm -f "$(DESTDIR)$(libdir)/$$p"; \ - done - -clean-libLIBRARIES: - -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libasm.a: $(libasm_a_OBJECTS) $(libasm_a_DEPENDENCIES) - -rm -f libasm.a - $(libasm_a_AR) libasm.a $(libasm_a_OBJECTS) $(libasm_a_LIBADD) - $(RANLIB) libasm.a -libasm_pic.a: $(libasm_pic_a_OBJECTS) $(libasm_pic_a_DEPENDENCIES) - -rm -f libasm_pic.a - $(libasm_pic_a_AR) libasm_pic.a $(libasm_pic_a_OBJECTS) $(libasm_pic_a_LIBADD) - $(RANLIB) libasm_pic.a - -clean-noinstPROGRAMS: - -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) -@MUDFLAP_TRUE@libasm.so$(EXEEXT): $(libasm_so_OBJECTS) $(libasm_so_DEPENDENCIES) -@MUDFLAP_TRUE@ @rm -f libasm.so$(EXEEXT) -@MUDFLAP_TRUE@ $(LINK) $(libasm_so_LDFLAGS) $(libasm_so_OBJECTS) $(libasm_so_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_abort.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_addint16.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_addint32.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_addint64.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_addint8.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_addsleb128.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_addstrz.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_adduint16.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_adduint32.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_adduint64.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_adduint8.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_adduleb128.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_align.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_begin.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_end.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_error.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_fill.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_getelf.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_newabssym.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_newcomsym.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_newscn.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_newscn_ingrp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_newscngrp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_newsubscn.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_newsym.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm_scngrp_newsignature.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symbolhash.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` -uninstall-info-am: -install-euincludeHEADERS: $(euinclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(euincludedir)" || $(mkdir_p) "$(DESTDIR)$(euincludedir)" - @list='$(euinclude_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(euincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(euincludedir)/$$f'"; \ - $(euincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(euincludedir)/$$f"; \ - done - -uninstall-euincludeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(euinclude_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(euincludedir)/$$f'"; \ - rm -f "$(DESTDIR)$(euincludedir)/$$f"; \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(euincludedir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ - done -@MUDFLAP_TRUE@install: install-am -install-exec: install-exec-am -install-data: install-data-am -@MUDFLAP_TRUE@uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libLIBRARIES clean-noinstLIBRARIES \ - clean-noinstPROGRAMS mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-euincludeHEADERS - -install-exec-am: install-libLIBRARIES - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-euincludeHEADERS uninstall-info-am \ - uninstall-libLIBRARIES - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libLIBRARIES clean-noinstLIBRARIES clean-noinstPROGRAMS \ - ctags distclean distclean-compile distclean-generic \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am \ - install-euincludeHEADERS install-exec install-exec-am \ - install-info install-info-am install-libLIBRARIES install-man \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-euincludeHEADERS \ - uninstall-info-am uninstall-libLIBRARIES - -@MUDFLAP_FALSE@libasm.so: libasm_pic.a libasm.map -@MUDFLAP_FALSE@ $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ -@MUDFLAP_FALSE@ -Wl,--version-script,$(srcdir)/libasm.map,--no-undefined \ -@MUDFLAP_FALSE@ -Wl,--soname,$@.$(VERSION) \ -@MUDFLAP_FALSE@ ../libebl/libebl.a ../libelf/libelf.so -@MUDFLAP_FALSE@ ln -fs $@ $@.$(VERSION) - -@MUDFLAP_FALSE@%.os: %.c %.o -@MUDFLAP_FALSE@ if $(COMPILE) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \ -@MUDFLAP_FALSE@ -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \ -@MUDFLAP_FALSE@ then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \ -@MUDFLAP_FALSE@ rm -f "$(DEPDIR)/$*.Tpo"; \ -@MUDFLAP_FALSE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ -@MUDFLAP_FALSE@ fi - -@MUDFLAP_FALSE@install: install-am libasm.so -@MUDFLAP_FALSE@ $(mkinstalldirs) $(DESTDIR)$(libdir) -@MUDFLAP_FALSE@ $(INSTALL_PROGRAM) libasm.so $(DESTDIR)$(libdir)/libasm-$(PACKAGE_VERSION).so -@MUDFLAP_FALSE@ ln -fs libasm-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/libasm.so.$(VERSION) -@MUDFLAP_FALSE@ ln -fs libasm.so.$(VERSION) $(DESTDIR)$(libdir)/libasm.so - -@MUDFLAP_FALSE@uninstall: uninstall-am -@MUDFLAP_FALSE@ rm -f $(DESTDIR)$(libdir)/libasm-$(PACKAGE_VERSION).so -@MUDFLAP_FALSE@ rm -f $(DESTDIR)$(libdir)/libasm.so.$(VERSION) -@MUDFLAP_FALSE@ rm -f $(DESTDIR)$(libdir)/libasm.so -@MUDFLAP_FALSE@ rmdir --ignore-fail-on-non-empty $(DESTDIR)$(includedir)/elfutils - -.PSEUDO: lint -lint: - $(LINT) $(DEFS) $(INCLUDES) $(GCC_INCLUDE) -f $(top_srcdir)/splint.rc \ - $(addprefix $(srcdir)/,$(libelf_la_SOURCES)) -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/libasm/asm_abort.c b/libasm/asm_abort.c deleted file mode 100644 index f35757ca..00000000 --- a/libasm/asm_abort.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Abort operations on the assembler context, free all resources. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdlib.h> -#include <unistd.h> - -#include <libasmP.h> -#include <libelf.h> - - -int -asm_abort (ctx) - AsmCtx_t *ctx; -{ - if (ctx == NULL) - /* Something went wrong earlier. */ - return -1; - - if (likely (! ctx->textp)) - /* First free the ELF file. We don't care about the result. */ - (void) elf_end (ctx->out.elf); - - /* Now close the temporary file and remove it. */ - (void) unlink (ctx->tmp_fname); - - /* Free the resources. */ - __libasm_finictx (ctx); - - return 0; -} diff --git a/libasm/asm_addint16.c b/libasm/asm_addint16.c deleted file mode 100644 index 98125171..00000000 --- a/libasm/asm_addint16.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Add integer to a section. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#define SIZE 16 - -#include "asm_addint8.c" diff --git a/libasm/asm_addint32.c b/libasm/asm_addint32.c deleted file mode 100644 index 05ac3d25..00000000 --- a/libasm/asm_addint32.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Add integer to a section. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#define SIZE 32 - -#include "asm_addint8.c" diff --git a/libasm/asm_addint64.c b/libasm/asm_addint64.c deleted file mode 100644 index f9d93f80..00000000 --- a/libasm/asm_addint64.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Add integer to a section. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#define SIZE 64 - -#include "asm_addint8.c" diff --git a/libasm/asm_addint8.c b/libasm/asm_addint8.c deleted file mode 100644 index 35d9bf57..00000000 --- a/libasm/asm_addint8.c +++ /dev/null @@ -1,105 +0,0 @@ -/* Add integer to a section. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <byteswap.h> -#include <endian.h> -#include <inttypes.h> -#include <string.h> - -#include <libasmP.h> - -#ifndef SIZE -# define SIZE 8 -#endif - -#define FCT(size) _FCT(size) -#define _FCT(size) asm_addint##size -#define TYPE(size) _TYPE(size) -#define _TYPE(size) int##size##_t -#define BSWAP(size) _BSWAP(size) -#define _BSWAP(size) bswap_##size - - -int -FCT(SIZE) (asmscn, num) - AsmScn_t *asmscn; - TYPE(SIZE) num; -{ - if (asmscn == NULL) - return -1; - - if (asmscn->type == SHT_NOBITS && unlikely (num != 0)) - { - __libasm_seterrno (ASM_E_TYPE); - return -1; - } - - if (unlikely (asmscn->ctx->textp)) - { - // XXX Needs to use backend specified pseudo-ops - if (SIZE == 8) - printf ("\t.byte\t%" PRId8 "\n", (int8_t) num); - else if (SIZE == 16) - printf ("\t.value\t%" PRId16 "\n", (int16_t) num); - else if (SIZE == 32) - printf ("\t.long\t%" PRId32 "\n", (int32_t) num); - else - { - // XXX This is not necessary for 64-bit machines - bool is_leb = (elf_getident (asmscn->ctx->out.elf, NULL)[EI_DATA] - == ELFDATA2LSB); - - printf ("\t.long\t%" PRId32 "\n\t.long\t%" PRId32 "\n", - (int32_t) (is_leb - ? num % 0x100000000ll : num / 0x100000000ll), - (int32_t) (is_leb - ? num / 0x100000000ll : num % 0x100000000ll)); - } - } - else - { -#if SIZE > 8 - bool is_leb = (elf_getident (asmscn->ctx->out.elf, NULL)[EI_DATA] - == ELFDATA2LSB); -#endif - TYPE(SIZE) var = num; - - /* Make sure we have enough room. */ - if (__libasm_ensure_section_space (asmscn, SIZE / 8) != 0) - return -1; - -#if SIZE > 8 - if ((BYTE_ORDER == LITTLE_ENDIAN && !is_leb) - || (BYTE_ORDER == BIG_ENDIAN && is_leb)) - var = BSWAP(SIZE) (var); -#endif - - /* Copy the variable value. */ - if (likely (asmscn->type == SHT_NOBITS)) - memcpy (&asmscn->content->data[asmscn->content->len], &var, SIZE / 8); - - /* Adjust the pointer in the data buffer. */ - asmscn->content->len += SIZE / 8; - - /* Increment the offset in the (sub)section. */ - asmscn->offset += SIZE / 8; - } - - return 0; -} -INTDEF(FCT(SIZE)) diff --git a/libasm/asm_addsleb128.c b/libasm/asm_addsleb128.c deleted file mode 100644 index 0661b36e..00000000 --- a/libasm/asm_addsleb128.c +++ /dev/null @@ -1,84 +0,0 @@ -/* Add signed little endian base 128 integer to a section. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <inttypes.h> -#include <string.h> - -#include <libasmP.h> - - -int -asm_addsleb128 (asmscn, num) - AsmScn_t *asmscn; - int32_t num; -{ - if (asmscn == NULL) - return -1; - - if (asmscn->type == SHT_NOBITS && unlikely (num != 0)) - { - __libasm_seterrno (ASM_E_TYPE); - return -1; - } - - if (unlikely (asmscn->ctx->textp)) - printf ("\t.sleb128\t%" PRId32 "\n", num); - else - { - char tmpbuf[(sizeof (num) * 8 + 6) / 7]; - char *dest = tmpbuf; - uint32_t byte; - int32_t endval = num >> 31; - - if (num == 0) - byte = 0; - else - while (1) - { - byte = num & 0x7f; - - num >>= 7; - if (num == endval) - /* This is the last byte. */ - break; - - *dest++ = byte | 0x80; - } - - *dest++ = byte; - - /* Number of bytes produced. */ - size_t nbytes = dest - tmpbuf; - - /* Make sure we have enough room. */ - if (__libasm_ensure_section_space (asmscn, nbytes) != 0) - return -1; - - /* Copy the bytes. */ - if (likely (asmscn->type != SHT_NOBITS)) - memcpy (&asmscn->content->data[asmscn->content->len], tmpbuf, nbytes); - - /* Adjust the pointer in the data buffer. */ - asmscn->content->len += nbytes; - - /* Increment the offset in the (sub)section. */ - asmscn->offset += nbytes; - } - - return 0; -} diff --git a/libasm/asm_addstrz.c b/libasm/asm_addstrz.c deleted file mode 100644 index e183b0b5..00000000 --- a/libasm/asm_addstrz.c +++ /dev/null @@ -1,113 +0,0 @@ -/* Add string to a section. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <ctype.h> -#include <stdio.h> -#include <string.h> - -#include <libasmP.h> - - -/* Add zero terminated string STR of size LEN to (sub)section ASMSCN. */ -int -asm_addstrz (asmscn, str, len) - AsmScn_t *asmscn; - const char *str; - size_t len; -{ - if (asmscn == NULL) - return -1; - - if (unlikely (asmscn->type == SHT_NOBITS)) - { - if (len == 0) - { - if (str[0] != '\0') - { - __libasm_seterrno (ASM_E_TYPE); - return -1; - } - } - else - { - size_t cnt; - - for (cnt = 0; cnt < len; ++cnt) - if (str[cnt] != '\0') - { - __libasm_seterrno (ASM_E_TYPE); - return -1; - } - } - } - - if (len == 0) - len = strlen (str) + 1; - - if (unlikely (asmscn->ctx->textp)) - { - bool nextline = true; - - do - { - if (nextline) - { - fputs ("\t.string\t\"", asmscn->ctx->out.file); - nextline = false; - } - - if (*str == '\0') - fputs ("\\000", asmscn->ctx->out.file); - else if (! isascii (*str)) - fprintf (asmscn->ctx->out.file, "\\%03o", - (unsigned int) *((unsigned char *)str)); - else if (*str == '\\') - fputs ("\\\\", asmscn->ctx->out.file); - else if (*str == '\n') - { - fputs ("\\n\"", asmscn->ctx->out.file); - nextline = true; - } - else - fputc (*str, asmscn->ctx->out.file); - - ++str; - } - while (--len > 0 && (len > 1 || *str != '\0')); - - if (! nextline) - fputs ("\"\n", asmscn->ctx->out.file); - } - else - { - /* Make sure there is enough room. */ - if (__libasm_ensure_section_space (asmscn, len) != 0) - return -1; - - /* Copy the string. */ - memcpy (&asmscn->content->data[asmscn->content->len], str, len); - - /* Adjust the pointer in the data buffer. */ - asmscn->content->len += len; - - /* Increment the offset in the (sub)section. */ - asmscn->offset += len; - } - - return 0; -} diff --git a/libasm/asm_adduint16.c b/libasm/asm_adduint16.c deleted file mode 100644 index 8c1e698f..00000000 --- a/libasm/asm_adduint16.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Add unsigned integer to a section. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#define SIZE 16 - -#include "asm_adduint8.c" diff --git a/libasm/asm_adduint32.c b/libasm/asm_adduint32.c deleted file mode 100644 index a2257954..00000000 --- a/libasm/asm_adduint32.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Add unsigned integer to a section. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#define SIZE 32 - -#include "asm_adduint8.c" diff --git a/libasm/asm_adduint64.c b/libasm/asm_adduint64.c deleted file mode 100644 index edda4d38..00000000 --- a/libasm/asm_adduint64.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Add unsigned integer to a section. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#define SIZE 64 - -#include "asm_adduint8.c" diff --git a/libasm/asm_adduint8.c b/libasm/asm_adduint8.c deleted file mode 100644 index 7bfb3414..00000000 --- a/libasm/asm_adduint8.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Add unsigned integer to a section. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libasmP.h> - -#ifndef SIZE -# define SIZE 8 -#endif - -#define UFCT(size) _UFCT(size) -#define _UFCT(size) asm_adduint##size -#define FCT(size) _FCT(size) -#define _FCT(size) asm_addint##size -#define UTYPE(size) _UTYPE(size) -#define _UTYPE(size) uint##size##_t -#define TYPE(size) _TYPE(size) -#define _TYPE(size) int##size##_t - - -int -UFCT(SIZE) (asmscn, num) - AsmScn_t *asmscn; - UTYPE(SIZE) num; -{ - return INTUSE(FCT(SIZE)) (asmscn, (TYPE(SIZE)) num); -} diff --git a/libasm/asm_adduleb128.c b/libasm/asm_adduleb128.c deleted file mode 100644 index 521d265a..00000000 --- a/libasm/asm_adduleb128.c +++ /dev/null @@ -1,80 +0,0 @@ -/* Add integer to a section. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <inttypes.h> -#include <string.h> - -#include "libasmP.h" - - -int -asm_adduleb128 (asmscn, num) - AsmScn_t *asmscn; - uint32_t num; -{ - if (asmscn == NULL) - return -1; - - if (asmscn->type == SHT_NOBITS && unlikely (num != 0)) - { - __libasm_seterrno (ASM_E_TYPE); - return -1; - } - - if (unlikely (asmscn->ctx->textp)) - printf ("\t.uleb128\t%" PRIu32 "\n", num); - else - { - char tmpbuf[(sizeof (num) * 8 + 6) / 7]; - char *dest = tmpbuf; - uint32_t byte; - - while (1) - { - byte = num & 0x7f; - - num >>= 7; - if (num == 0) - /* This is the last byte. */ - break; - - *dest++ = byte | 0x80; - } - - *dest++ = byte; - - /* Number of bytes produced. */ - size_t nbytes = dest - tmpbuf; - - /* Make sure we have enough room. */ - if (__libasm_ensure_section_space (asmscn, nbytes) != 0) - return -1; - - /* Copy the bytes. */ - if (likely (asmscn->type != SHT_NOBITS)) - memcpy (&asmscn->content->data[asmscn->content->len], tmpbuf, nbytes); - - /* Adjust the pointer in the data buffer. */ - asmscn->content->len += nbytes; - - /* Increment the offset in the (sub)section. */ - asmscn->offset += nbytes; - } - - return 0; -} diff --git a/libasm/asm_align.c b/libasm/asm_align.c deleted file mode 100644 index e7350924..00000000 --- a/libasm/asm_align.c +++ /dev/null @@ -1,147 +0,0 @@ -/* Align section. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdlib.h> -#include <sys/param.h> - -#include <libasmP.h> -#include <system.h> - - -int -asm_align (asmscn, value) - AsmScn_t *asmscn; - GElf_Word value; -{ - if (asmscn == NULL) - /* An earlier error. */ - return -1; - - /* The alignment value must be a power of two. */ - if (unlikely (! powerof2 (value))) - { - __libasm_seterrno (ASM_E_INVALID); - return -1; - } - - rwlock_wrlock (asmscn->ctx->lock); - - int result = 0; - - /* Fillbytes necessary? */ - if ((asmscn->offset & (value - 1)) != 0) - { - /* Add fillbytes. */ - size_t cnt; - size_t byteptr; - - cnt = value - (asmscn->offset & (value - 1)); - - /* Ensure there is enough room to add the fill bytes. */ - result = __libasm_ensure_section_space (asmscn, cnt); - if (result != 0) - goto out; - - /* Fill in the bytes. We align the pattern according to the - current offset. */ - byteptr = asmscn->offset % asmscn->pattern->len; - - /* Update the total size. */ - asmscn->offset += cnt; - - do - { - asmscn->content->data[asmscn->content->len++] - = asmscn->pattern->bytes[byteptr++]; - - if (byteptr == asmscn->pattern->len) - byteptr = 0; - } - while (--cnt > 0); - } - - /* Remember the maximum alignment for this subsection. */ - if (asmscn->max_align < value) - { - asmscn->max_align = value; - - /* Update the parent as well (if it exists). */ - if (asmscn->subsection_id != 0) - { - rwlock_wrlock (asmscn->data.up->ctx->lock); - - if (asmscn->data.up->max_align < value) - asmscn->data.up->max_align = value; - - rwlock_unlock (asmscn->data.up->ctx->lock); - } - } - - out: - rwlock_unlock (asmscn->ctx->lock); - - return result; -} - - -/* Ensure there are at least LEN bytes available in the output buffer - for ASMSCN. */ -int -__libasm_ensure_section_space (asmscn, len) - AsmScn_t *asmscn; - size_t len; -{ - /* The blocks with the section content are kept in a circular - single-linked list. */ - size_t size; - - if (asmscn->content == NULL) - { - /* This is the first block. */ - size = MAX (2 * len, 960); - - asmscn->content = (struct AsmData *) malloc (sizeof (struct AsmData) - + size); - if (asmscn->content == NULL) - return -1; - - asmscn->content->next = asmscn->content; - } - else - { - struct AsmData *newp; - - if (asmscn->content->maxlen - asmscn->content->len >= len) - /* Nothing to do, there is enough space. */ - return 0; - - size = MAX (2 *len, MIN (32768, 2 * asmscn->offset)); - - newp = (struct AsmData *) malloc (sizeof (struct AsmData) + size); - if (newp == NULL) - return -1; - - newp->next = asmscn->content->next; - asmscn->content = asmscn->content->next = newp; - } - - asmscn->content->len = 0; - asmscn->content->maxlen = size; - - return 0; -} diff --git a/libasm/asm_begin.c b/libasm/asm_begin.c deleted file mode 100644 index 3896f78f..00000000 --- a/libasm/asm_begin.c +++ /dev/null @@ -1,151 +0,0 @@ -/* Create descriptor for assembling. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <errno.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> - -#include <gelf.h> -#include "libasmP.h" -#include <system.h> - - -static AsmCtx_t * -prepare_text_output (AsmCtx_t *result) -{ - return result; -} - - -static AsmCtx_t * -prepare_binary_output (AsmCtx_t *result, int machine, int klass, int data) -{ - GElf_Ehdr *ehdr; - GElf_Ehdr ehdr_mem; - - /* Create the ELF descriptor for the file. */ - result->out.elf = elf_begin (result->fd, ELF_C_WRITE_MMAP, NULL); - if (result->out.elf == NULL) - { - err_libelf: - unlink (result->tmp_fname); - close (result->fd); - free (result); - __libasm_seterrno (ASM_E_LIBELF); - return NULL; - } - - /* Create the ELF header for the output file. */ - if (gelf_newehdr (result->out.elf, klass) == 0) - goto err_libelf; - - ehdr = gelf_getehdr (result->out.elf, &ehdr_mem); - /* If this failed we are in trouble. */ - assert (ehdr != NULL); - - /* We create an object file. */ - ehdr->e_type = ET_REL; - /* Set the ELF version. */ - ehdr->e_version = EV_CURRENT; - - /* Use the machine value the user provided. */ - ehdr->e_machine = machine; - /* Same for the class and endianness. */ - ehdr->e_ident[EI_CLASS] = klass; - ehdr->e_ident[EI_DATA] = data; - - memcpy (&ehdr->e_ident[EI_MAG0], ELFMAG, SELFMAG); - - /* Write the ELF header information back. */ - (void) gelf_update_ehdr (result->out.elf, ehdr); - - /* No section so far. */ - result->section_list = NULL; - - /* Initialize the hash table. */ - asm_symbol_tab_init (&result->symbol_tab, 67); - result->nsymbol_tab = 0; - /* And the string tables. */ - result->section_strtab = ebl_strtabinit (true); - result->symbol_strtab = ebl_strtabinit (true); - - /* We have no section groups so far. */ - result->groups = NULL; - result->ngroups = 0; - - return result; -} - - -AsmCtx_t * -asm_begin (fname, textp, machine, klass, data) - const char *fname; - bool textp; - int machine; - int klass; - int data; -{ - size_t fname_len = strlen (fname); - AsmCtx_t *result; - - - /* First order of business: find the appropriate backend. If it - does not exist we don't have to look further. */ - // XXX - - /* Create the file descriptor. We do not generate the output file - right away. Instead we create a temporary file in the same - directory which, if everything goes alright, will replace a - possibly existing file with the given name. */ - result = (AsmCtx_t *) malloc (sizeof (AsmCtx_t) + 2 * fname_len + 9); - if (result == NULL) - return NULL; - - /* Initialize the lock. */ - rwlock_init (result->lock); - - /* Create the name of the temporary file. */ - result->fname = stpcpy (mempcpy (result->tmp_fname, fname, fname_len), - ".XXXXXX") + 1; - memcpy (result->fname, fname, fname_len + 1); - - /* Create the temporary file. */ - result->fd = mkstemp (result->tmp_fname); - if (result->fd == -1) - { - int save_errno = errno; - free (result); - __libasm_seterrno (ASM_E_CANNOT_CREATE); - errno = save_errno; - return NULL; - } - - /* Initialize the counter for temporary symbols. */ - result->tempsym_count = 0; - - /* Now we differentiate between textual and binary output. */ - result->textp = textp; - if (textp) - result = prepare_text_output (result); - else - result = prepare_binary_output (result, machine, klass, data); - - return result; -} diff --git a/libasm/asm_end.c b/libasm/asm_end.c deleted file mode 100644 index 01326a11..00000000 --- a/libasm/asm_end.c +++ /dev/null @@ -1,597 +0,0 @@ -/* Finalize operations on the assembler context, free all resources. - Copyright (C) 2002, 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <error.h> -#include <libintl.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <sys/stat.h> - -#include <libasmP.h> -#include <libelf.h> -#include <system.h> - - -static int -text_end (AsmCtx_t *ctx) -{ - // XXX Does anything have to be done? - return 0; -} - - -static int -binary_end (AsmCtx_t *ctx) -{ - void *symtab = NULL; - struct Ebl_Strent *symscn_strent = NULL; - struct Ebl_Strent *strscn_strent = NULL; - struct Ebl_Strent *xndxscn_strent = NULL; - Elf_Scn *shstrscn; - struct Ebl_Strent *shstrscn_strent; - size_t shstrscnndx; - size_t symscnndx = 0; - size_t strscnndx = 0; - size_t xndxscnndx = 0; - Elf_Data *data; - Elf_Data *shstrtabdata; - Elf_Data *strtabdata = NULL; - Elf_Data *xndxdata = NULL; - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - GElf_Ehdr ehdr_mem; - GElf_Ehdr *ehdr; - AsmScn_t *asmscn; - int result = 0; - - /* Iterate over the created sections and compute the offsets of the - various subsections and fill in the content. */ - for (asmscn = ctx->section_list; asmscn != NULL; asmscn = asmscn->allnext) - { -#if 0 - Elf_Scn *scn = elf_getscn (ctx->out.elf, asmscn->data.main.scnndx); -#else - Elf_Scn *scn = asmscn->data.main.scn; -#endif - off_t offset = 0; - AsmScn_t *asmsubscn = asmscn; - - do - { - struct AsmData *content = asmsubscn->content; - bool first = true; - - offset = ((offset + asmsubscn->max_align - 1) - & ~(asmsubscn->max_align - 1)); - - /* Update the offset for this subsection. This field now - stores the offset of the first by in this subsection. */ - asmsubscn->offset = offset; - - /* Note that the content list is circular. */ - if (content != NULL) - do - { - Elf_Data *newdata = elf_newdata (scn); - - if (newdata == NULL) - error (EXIT_FAILURE, 0, - _("cannot create section for output file: %s"), - elf_errmsg (-1)); - - newdata->d_buf = content->data; - newdata->d_type = ELF_T_BYTE; - newdata->d_size = content->len; - newdata->d_off = offset; - newdata->d_align = first ? asmsubscn->max_align : 1; - - offset += content->len; - } - while ((content = content->next) != asmsubscn->content); - } - while ((asmsubscn = asmsubscn->subnext) != NULL); - } - - - /* Create the symbol table if necessary. */ - if (ctx->nsymbol_tab > 0) - { - Elf_Scn *symscn; - Elf_Scn *strscn; - AsmSym_t *sym; - int ptr_local; - int ptr_nonlocal; - GElf_Sym syment; - uint32_t *xshndx = NULL; - void *runp; - - /* Create the symbol table and string table section names. */ - symscn_strent = ebl_strtabadd (ctx->section_strtab, ".symtab", 8); - strscn_strent = ebl_strtabadd (ctx->section_strtab, ".strtab", 8); - - /* Create the symbol string table section. */ - strscn = elf_newscn (ctx->out.elf); - strtabdata = elf_newdata (strscn); - shdr = gelf_getshdr (strscn, &shdr_mem); - if (strtabdata == NULL || shdr == NULL) - error (EXIT_FAILURE, 0, _("cannot create section for output file: %s"), - elf_errmsg (-1)); - strscnndx = elf_ndxscn (strscn); - - ebl_strtabfinalize (ctx->symbol_strtab, strtabdata); - - shdr->sh_type = SHT_STRTAB; - assert (shdr->sh_entsize == 0); - - (void) gelf_update_shdr (strscn, shdr); - - /* Create the symbol table section. */ - symscn = elf_newscn (ctx->out.elf); - data = elf_newdata (symscn); - shdr = gelf_getshdr (symscn, &shdr_mem); - if (data == NULL || shdr == NULL) - error (EXIT_FAILURE, 0, _("cannot create section for output file: %s"), - elf_errmsg (-1)); - symscnndx = elf_ndxscn (symscn); - - /* We know how many symbols there will be in the symbol table. */ - data->d_size = gelf_fsize (ctx->out.elf, ELF_T_SYM, - ctx->nsymbol_tab + 1, EV_CURRENT); - symtab = malloc (data->d_size); - if (symtab == NULL) - return -1; - data->d_buf = symtab; - data->d_type = ELF_T_SYM; - data->d_off = 0; - - /* Clear the first entry. */ - memset (&syment, '\0', sizeof (syment)); - (void) gelf_update_sym (data, 0, &syment); - - /* Iterate over the symbol table. */ - runp = NULL; - ptr_local = 1; /* Start with index 1; zero remains unused. */ - ptr_nonlocal = ctx->nsymbol_tab; - while ((sym = asm_symbol_tab_iterate (&ctx->symbol_tab, &runp)) != NULL) - if (asm_emit_symbol_p (ebl_string (sym->strent))) - { - int ptr; - Elf32_Word ndx; - Elf_Scn *scn; - - assert (ptr_local <= ptr_nonlocal); - - syment.st_name = ebl_strtaboffset (sym->strent); - syment.st_info = GELF_ST_INFO (sym->binding, sym->type); - syment.st_other = 0; - syment.st_value = sym->scn->offset + sym->offset; - syment.st_size = sym->size; - - /* Add local symbols at the beginning, the other from - the end. */ - ptr = sym->binding == STB_LOCAL ? ptr_local++ : ptr_nonlocal--; - - /* Determine the section index. We have to handle the - overflow correctly. */ - scn = (sym->scn->subsection_id == 0 - ? sym->scn->data.main.scn - : sym->scn->data.up->data.main.scn); - - if (unlikely (scn == ASM_ABS_SCN)) - ndx = SHN_ABS; - else if (unlikely (scn == ASM_COM_SCN)) - ndx = SHN_COMMON; - else if (unlikely ((ndx = elf_ndxscn (scn)) >= SHN_LORESERVE)) - { - if (unlikely (xshndx == NULL)) - { - /* The extended section index section does not yet - exist. */ - Elf_Scn *xndxscn; - size_t symscnndx = elf_ndxscn (symscn); - - xndxscn = elf_newscn (ctx->out.elf); - xndxdata = elf_newdata (xndxscn); - shdr = gelf_getshdr (xndxscn, &shdr_mem); - if (xndxdata == NULL || shdr == NULL) - error (EXIT_FAILURE, 0, _("\ -cannot create extended section index table: %s"), - elf_errmsg (-1)); - xndxscnndx = elf_ndxscn (xndxscn); - - shdr->sh_type = SHT_SYMTAB_SHNDX; - shdr->sh_entsize = sizeof (Elf32_Word); - shdr->sh_addralign = sizeof (Elf32_Word); - shdr->sh_link = symscnndx; - - (void) gelf_update_shdr (xndxscn, shdr); - - xndxscn_strent = ebl_strtabadd (ctx->section_strtab, - ".symtab_shndx", 14); - - /* Note that using 'elf32_fsize' instead of - 'gelf_fsize' here is correct. */ - xndxdata->d_size = elf32_fsize (ELF_T_WORD, - ctx->nsymbol_tab + 1, - EV_CURRENT); - xshndx = xndxdata->d_buf = calloc (1, xndxdata->d_size); - if (xshndx == NULL) - return -1; - /* Using ELF_T_WORD here relies on the fact that the - 32- and 64-bit types are the same size. */ - xndxdata->d_type = ELF_T_WORD; - xndxdata->d_off = 0; - } - - /* Store the real section index in the extended setion - index table. */ - assert ((size_t) ptr < ctx->nsymbol_tab + 1); - xshndx[ptr] = ndx; - - /* And signal that this happened. */ - ndx = SHN_XINDEX; - } - syment.st_shndx = ndx; - - /* Remember where we put the symbol. */ - sym->symidx = ptr; - - (void) gelf_update_sym (data, ptr, &syment); - } - - assert (ptr_local == ptr_nonlocal + 1); - - shdr->sh_type = SHT_SYMTAB; - shdr->sh_link = strscnndx; - shdr->sh_info = ptr_local; - shdr->sh_entsize = gelf_fsize (ctx->out.elf, ELF_T_SYM, 1, EV_CURRENT); - shdr->sh_addralign = gelf_fsize (ctx->out.elf, ELF_T_ADDR, 1, - EV_CURRENT); - - (void) gelf_update_shdr (symscn, shdr); - } - - - /* Create the section header string table section and fill in the - references in the section headers. */ - shstrscn = elf_newscn (ctx->out.elf); - shstrtabdata = elf_newdata (shstrscn); - shdr = gelf_getshdr (shstrscn, &shdr_mem); - if (shstrscn == NULL || shstrtabdata == NULL || shdr == NULL) - error (EXIT_FAILURE, 0, _("cannot create section for output file: %s"), - elf_errmsg (-1)); - - - /* Add the name of the section header string table. */ - shstrscn_strent = ebl_strtabadd (ctx->section_strtab, ".shstrtab", 10); - - ebl_strtabfinalize (ctx->section_strtab, shstrtabdata); - - shdr->sh_type = SHT_STRTAB; - assert (shdr->sh_entsize == 0); - shdr->sh_name = ebl_strtaboffset (shstrscn_strent); - - (void) gelf_update_shdr (shstrscn, shdr); - - - /* Create the section groups. */ - if (ctx->groups != NULL) - { - AsmScnGrp_t *runp = ctx->groups->next; - - do - { - Elf_Scn *scn; - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - Elf_Data *data; - Elf32_Word *grpdata; - - scn = runp->scn; - assert (scn != NULL); - shdr = gelf_getshdr (scn, &shdr_mem); - assert (shdr != NULL); - - data = elf_newdata (scn); - if (data == NULL) - error (EXIT_FAILURE, 0, - _("cannot create section group for output file: %s"), - elf_errmsg (-1)); - - /* It is correct to use 'elf32_fsize' instead of 'gelf_fsize' - here. */ - data->d_size = elf32_fsize (ELF_T_WORD, runp->nmembers + 1, - EV_CURRENT); - grpdata = data->d_buf = malloc (data->d_size); - if (grpdata == NULL) - return -1; - data->d_type = ELF_T_WORD; - data->d_off = 0; - data->d_align = elf32_fsize (ELF_T_WORD, 1, EV_CURRENT); - - /* The first word of the section is filled with the flag word. */ - *grpdata++ = runp->flags; - - if (runp->members != NULL) - { - AsmScn_t *member = runp->members->data.main.next_in_group; - - do - { - /* Only sections, not subsections, can be registered - as member of a group. The subsections get - automatically included. */ - assert (member->subsection_id == 0); - - *grpdata++ = elf_ndxscn (member->data.main.scn); - } - while ((member = member->data.main.next_in_group) - != runp->members->data.main.next_in_group); - } - - /* Construct the section header. */ - shdr->sh_name = ebl_strtaboffset (runp->strent); - shdr->sh_type = SHT_GROUP; - shdr->sh_flags = 0; - shdr->sh_link = symscnndx; - /* If the user did not specify a signature we use the initial - empty symbol in the symbol table as the signature. */ - shdr->sh_info = (runp->signature != NULL - ? runp->signature->symidx : 0); - - (void) gelf_update_shdr (scn, shdr); - } - while ((runp = runp->next) != ctx->groups->next); - } - - - /* Add the name to the symbol section. */ - if (likely (symscnndx != 0)) - { - Elf_Scn *scn = elf_getscn (ctx->out.elf, symscnndx); - - shdr = gelf_getshdr (scn, &shdr_mem); - - shdr->sh_name = ebl_strtaboffset (symscn_strent); - - (void) gelf_update_shdr (scn, shdr); - - - /* Add the name to the string section. */ - assert (strscnndx != 0); - scn = elf_getscn (ctx->out.elf, strscnndx); - - shdr = gelf_getshdr (scn, &shdr_mem); - - shdr->sh_name = ebl_strtaboffset (strscn_strent); - - (void) gelf_update_shdr (scn, shdr); - - - /* Add the name to the extended symbol index section. */ - if (xndxscnndx != 0) - { - scn = elf_getscn (ctx->out.elf, xndxscnndx); - - shdr = gelf_getshdr (scn, &shdr_mem); - - shdr->sh_name = ebl_strtaboffset (xndxscn_strent); - - (void) gelf_update_shdr (scn, shdr); - } - } - - - /* Iterate over the created sections and fill in the names. */ - for (asmscn = ctx->section_list; asmscn != NULL; asmscn = asmscn->allnext) - { - shdr = gelf_getshdr (asmscn->data.main.scn, &shdr_mem); - /* This better should not fail. */ - assert (shdr != NULL); - - shdr->sh_name = ebl_strtaboffset (asmscn->data.main.strent); - - /* We now know the maximum alignment. */ - shdr->sh_addralign = asmscn->max_align; - - (void) gelf_update_shdr (asmscn->data.main.scn, shdr); - } - - /* Put the reference to the section header string table in the ELF - header. */ - ehdr = gelf_getehdr (ctx->out.elf, &ehdr_mem); - assert (ehdr != NULL); - - shstrscnndx = elf_ndxscn (shstrscn); - if (unlikely (shstrscnndx > SHN_HIRESERVE) - || unlikely (shstrscnndx == SHN_XINDEX)) - { - /* The index of the section header string sectio is too large. */ - Elf_Scn *scn = elf_getscn (ctx->out.elf, 0); - - /* Get the header for the zeroth section. */ - shdr = gelf_getshdr (scn, &shdr_mem); - /* This better does not fail. */ - assert (shdr != NULL); - - /* The sh_link field of the zeroth section header contains the value. */ - shdr->sh_link = shstrscnndx; - - (void) gelf_update_shdr (scn, shdr); - - /* This is the sign for the overflow. */ - ehdr->e_shstrndx = SHN_XINDEX; - } - else - ehdr->e_shstrndx = elf_ndxscn (shstrscn); - - gelf_update_ehdr (ctx->out.elf, ehdr); - - /* Write out the ELF file. */ - if (unlikely (elf_update (ctx->out.elf, ELF_C_WRITE_MMAP)) < 0) - { - __libasm_seterrno (ASM_E_LIBELF); - result = -1; - } - - /* We do not need the section header and symbol string tables anymore. */ - free (shstrtabdata->d_buf); - if (strtabdata != NULL) - free (strtabdata->d_buf); - /* We might have allocated the extended symbol table index. */ - if (xndxdata != NULL) - free (xndxdata->d_buf); - - /* Free section groups memory. */ - AsmScnGrp_t *scngrp = ctx->groups; - if (scngrp != NULL) - do - free (elf_getdata (scngrp->scn, NULL)->d_buf); - while ((scngrp = scngrp->next) != ctx->groups); - - /* Finalize the ELF handling. */ - if (unlikely (elf_end (ctx->out.elf)) != 0) - { - __libasm_seterrno (ASM_E_LIBELF); - result = -1; - } - - /* Free the temporary resources. */ - free (symtab); - - return result; -} - - -int -asm_end (ctx) - AsmCtx_t *ctx; -{ - int result; - - if (ctx == NULL) - /* Something went wrong earlier. */ - return -1; - - result = unlikely (ctx->textp) ? text_end (ctx) : binary_end (ctx); - if (result != 0) - return result; - - /* Make the new file globally readable and user/group-writable. */ - if (fchmod (ctx->fd, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH) != 0) - { - __libasm_seterrno (ASM_E_CANNOT_CHMOD); - return -1; - } - - /* Rename output file. */ - if (rename (ctx->tmp_fname, ctx->fname) != 0) - { - __libasm_seterrno (ASM_E_CANNOT_RENAME); - return -1; - } - - /* Free the resources. */ - __libasm_finictx (ctx); - - return 0; -} - - -static void -free_section (AsmScn_t *scnp) -{ - void *oldp; - - if (scnp->subnext != NULL) - free_section (scnp->subnext); - - struct AsmData *data = scnp->content; - if (data != NULL) - do - { - oldp = data; - data = data->next; - free (oldp); - } - while (oldp != scnp->content); - - free (scnp); -} - - -void -__libasm_finictx (ctx) - AsmCtx_t *ctx; -{ - /* Iterate through section table and free individual entries. */ - AsmScn_t *scn = ctx->section_list; - while (scn != NULL) - { - AsmScn_t *oldp = scn; - scn = scn->allnext; - free_section (oldp); - } - - /* Free the resources of the symbol table. */ - void *runp = NULL; - AsmSym_t *sym; - while ((sym = asm_symbol_tab_iterate (&ctx->symbol_tab, &runp)) != NULL) - free (sym); - asm_symbol_tab_free (&ctx->symbol_tab); - - - /* Free section groups. */ - AsmScnGrp_t *scngrp = ctx->groups; - if (scngrp != NULL) - do - { - AsmScnGrp_t *oldp = scngrp; - - scngrp = scngrp->next; - free (oldp); - } - while (scngrp != ctx->groups); - - - if (unlikely (ctx->textp)) - { - /* Close the stream. */ - fclose (ctx->out.file); - } - else - { - /* Close the output file. */ - /* XXX We should test for errors here but what would we do if we'd - find any. */ - (void) close (ctx->fd); - - /* And the string tables. */ - ebl_strtabfree (ctx->section_strtab); - ebl_strtabfree (ctx->symbol_strtab); - } - - /* Initialize the lock. */ - rwlock_fini (ctx->lock); - - /* Finally free the data structure. */ - free (ctx); -} diff --git a/libasm/asm_error.c b/libasm/asm_error.c deleted file mode 100644 index 9d2d81ed..00000000 --- a/libasm/asm_error.c +++ /dev/null @@ -1,183 +0,0 @@ -/* Error handling in libasm. - Copyright (C) 2002, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libintl.h> -#include <stdbool.h> -#include <stdlib.h> - -#include "libasmP.h" - - -/* This is the key for the thread specific memory. */ -static tls_key_t key; - -/* The error number. Used in non-threaded programs. */ -static int global_error; -static bool threaded; -/* We need to initialize the thread-specific data. */ -once_define (static, once); - -/* The initialization and destruction functions. */ -static void init (void); -static void free_key_mem (void *mem); - - -int -asm_errno (void) -{ - int result; - - /* If we have not yet initialized the buffer do it now. */ - once_execute (once, init); - - if (threaded) - { - /* We have a key. Use it to get the thread-specific buffer. */ - int *buffer = getspecific (key); - if (buffer == NULL) - { - /* No buffer allocated so far. */ - buffer = (int *) malloc (sizeof (int)); - if (buffer == NULL) - /* No more memory available. We use the static buffer. */ - buffer = &global_error; - - setspecific (key, buffer); - - *buffer = 0; - } - - result = *buffer; - *buffer = ASM_E_NOERROR; - return result; - } - - result = global_error; - global_error = ASM_E_NOERROR; - return result; -} - - -void -__libasm_seterrno (value) - int value; -{ - /* If we have not yet initialized the buffer do it now. */ - once_execute (once, init); - - if (threaded) - { - /* We have a key. Use it to get the thread-specific buffer. */ - int *buffer = getspecific (key); - if (buffer == NULL) - { - /* No buffer allocated so far. */ - buffer = malloc (sizeof (int)); - if (buffer == NULL) - /* No more memory available. We use the static buffer. */ - buffer = &global_error; - - setspecific (key, buffer); - } - - *buffer = value; - } - - global_error = value; -} - - -/* Return the appropriate message for the error. */ -static const char *msgs[ASM_E_NUM] = -{ - [ASM_E_NOERROR] = N_("no error"), - [ASM_E_NOMEM] = N_("out of memory"), - [ASM_E_CANNOT_CREATE] = N_("cannot create output file"), - [ASM_E_INVALID] = N_("invalid parameter"), - [ASM_E_CANNOT_CHMOD] = N_("cannot change mode of output file"), - [ASM_E_CANNOT_RENAME] = N_("cannot rename output file"), - [ASM_E_DUPLSYM] = N_("duplicate symbol"), - [ASM_E_TYPE] = N_("invalid section type for operation") -}; - -const char * -asm_errmsg (error) - int error; -{ - int last_error; - - /* If we have not yet initialized the buffer do it now. */ - once_execute (once, init); - - if ((error == 0 || error == -1) && threaded) - { - /* We have a key. Use it to get the thread-specific buffer. */ - int *buffer = (int *) getspecific (key); - if (buffer == NULL) - { - /* No buffer allocated so far. */ - buffer = (int *) malloc (sizeof (int)); - if (buffer == NULL) - /* No more memory available. We use the static buffer. */ - buffer = &global_error; - - setspecific (key, buffer); - *buffer = 0; - } - - last_error = *buffer; - } - else - last_error = global_error; - - if (error < -1) - return _("Unknown error"); - if (error == 0 && last_error == 0) - /* No error. */ - return NULL; - - if (error != -1) - last_error = error; - - if (last_error == ASM_E_LIBELF) - return elf_errmsg (-1); - - return _(msgs[last_error]); -} - - -/* Free the thread specific data, this is done if a thread terminates. */ -static void -free_key_mem (void *mem) -{ - free (mem); - setspecific (key, NULL); -} - - -/* Initialize the key for the global variable. */ -static void -init (void) -{ - // XXX Screw you, gcc4, the unused function attribute does not work. - __asm ("" :: "r" (free_key_mem)); - - if (key_create (&key, free_key_mem) == 0) - /* Creating the key succeeded. */ - threaded = true; -} diff --git a/libasm/asm_fill.c b/libasm/asm_fill.c deleted file mode 100644 index 67b64417..00000000 --- a/libasm/asm_fill.c +++ /dev/null @@ -1,62 +0,0 @@ -/* Determine fill pattern for a section. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdlib.h> -#include <string.h> - -#include <libasmP.h> -#include <system.h> - - -int -asm_fill (asmscn, bytes, len) - AsmScn_t *asmscn; - void *bytes; - size_t len; -{ - struct FillPattern *pattern; - struct FillPattern *old_pattern; - - if (asmscn == NULL) - /* Some earlier error. */ - return -1; - - if (bytes == NULL) - /* Use the default pattern. */ - pattern = (struct FillPattern *) __libasm_default_pattern; - else - { - /* Allocate appropriate memory. */ - pattern = (struct FillPattern *) malloc (sizeof (struct FillPattern) - + len); - if (pattern == NULL) - return -1; - - pattern->len = len; - memcpy (pattern->bytes, bytes, len); - } - - old_pattern = asmscn->pattern; - asmscn->pattern = pattern; - - /* Free the old data structure if we have allocated it. */ - if (old_pattern != __libasm_default_pattern) - free (old_pattern); - - return 0; -} diff --git a/libasm/asm_getelf.c b/libasm/asm_getelf.c deleted file mode 100644 index 3bbb0d90..00000000 --- a/libasm/asm_getelf.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Return ELF descriptor associated with the assembler context. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stddef.h> - -#include <libasmP.h> - - -Elf * -asm_getelf (ctx) - AsmCtx_t *ctx; -{ - return ctx != NULL ? ctx->out.elf : NULL; -} diff --git a/libasm/asm_newabssym.c b/libasm/asm_newabssym.c deleted file mode 100644 index fba46f0f..00000000 --- a/libasm/asm_newabssym.c +++ /dev/null @@ -1,121 +0,0 @@ -/* Create new ABS symbol. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <inttypes.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include <libasmP.h> -#include <system.h> - - -/* Object for special COMMON section. */ -static const AsmScn_t __libasm_abs_scn = - { - .data = { - .main = { - .scn = ASM_ABS_SCN - } - } - }; - - -AsmSym_t * -asm_newabssym (ctx, name, size, value, type, binding) - AsmCtx_t *ctx; - const char *name; - GElf_Xword size; - GElf_Addr value; - int type; - int binding; -{ - AsmSym_t *result; - - if (ctx == NULL) - /* Something went wrong before. */ - return NULL; - - /* Common symbols are public. Therefore the user must provide a - name. */ - if (name == NULL) - { - __libasm_seterrno (ASM_E_INVALID); - return NULL; - } - - rwlock_wrlock (ctx->lock); - - result = (AsmSym_t *) malloc (sizeof (AsmSym_t)); - if (result == NULL) - return NULL; - - result->scn = (AsmScn_t *) &__libasm_abs_scn; - result->size = size; - result->type = type; - result->binding = binding; - result->symidx = 0; - result->strent = ebl_strtabadd (ctx->symbol_strtab, name, 0); - - /* The value of an ABS symbol must not be modified. Since there are - no subsection and the initial offset of the section is 0 we can - get the alignment recorded by storing it into the offset - field. */ - result->offset = value; - - if (unlikely (ctx->textp)) - { - /* An absolute symbol can be defined by giving a symbol a - specific value. */ - if (binding == STB_GLOBAL) - fprintf (ctx->out.file, "\t.globl %s\n", name); - else if (binding == STB_WEAK) - fprintf (ctx->out.file, "\t.weak %s\n", name); - - if (type == STT_OBJECT) - fprintf (ctx->out.file, "\t.type %s,@object\n", name); - else if (type == STT_FUNC) - fprintf (ctx->out.file, "\t.type %s,@function\n", name); - - fprintf (ctx->out.file, "%s = %llu\n", - name, (unsigned long long int) value); - - if (size != 0) - fprintf (ctx->out.file, "\t.size %s, %llu\n", - name, (unsigned long long int) size); - } - else - { - /* Put the symbol in the hash table so that we can later find it. */ - if (asm_symbol_tab_insert (&ctx->symbol_tab, elf_hash (name), result) - != 0) - { - /* The symbol already exists. */ - __libasm_seterrno (ASM_E_DUPLSYM); - free (result); - result = NULL; - } - else if (name != NULL && asm_emit_symbol_p (name)) - /* Only count non-private symbols. */ - ++ctx->nsymbol_tab; - } - - rwlock_unlock (ctx->lock); - - return result; -} diff --git a/libasm/asm_newcomsym.c b/libasm/asm_newcomsym.c deleted file mode 100644 index 61e5a909..00000000 --- a/libasm/asm_newcomsym.c +++ /dev/null @@ -1,102 +0,0 @@ -/* Create new COMMON symbol. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <inttypes.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include <libasmP.h> -#include <system.h> - - -/* Object for special COMMON section. */ -static const AsmScn_t __libasm_com_scn = - { - .data = { - .main = { - .scn = ASM_COM_SCN - } - } - }; - - -AsmSym_t * -asm_newcomsym (ctx, name, size, align) - AsmCtx_t *ctx; - const char *name; - GElf_Xword size; - GElf_Addr align; -{ - AsmSym_t *result; - - if (ctx == NULL) - /* Something went wrong before. */ - return NULL; - - /* Common symbols are public. Therefore the user must provide a - name. */ - if (name == NULL) - { - __libasm_seterrno (ASM_E_INVALID); - return NULL; - } - - rwlock_wrlock (ctx->lock); - - result = (AsmSym_t *) malloc (sizeof (AsmSym_t)); - if (result == NULL) - return NULL; - - result->scn = (AsmScn_t *) &__libasm_com_scn; - result->size = size; - /* XXX Do we have to allow a different type? */ - result->type = STT_OBJECT; - /* XXX Do we have to allow a different binding? */ - result->binding = STB_GLOBAL; - result->symidx = 0; - result->strent = ebl_strtabadd (ctx->symbol_strtab, name, 0); - - /* The value of a COM symbol is the alignment. Since there are no - subsection and the initial offset of the section is 0 we can get - the alignment recorded by storing it into the offset field. */ - result->offset = align; - - if (unlikely (ctx->textp)) - fprintf (ctx->out.file, "\t.comm %s, %" PRIuMAX ", %" PRIuMAX "\n", - name, (uintmax_t) size, (uintmax_t) align); - else - { - /* Put the symbol in the hash table so that we can later find it. */ - if (asm_symbol_tab_insert (&ctx->symbol_tab, elf_hash (name), result) - != 0) - { - /* The symbol already exists. */ - __libasm_seterrno (ASM_E_DUPLSYM); - free (result); - result = NULL; - } - else if (name != NULL && asm_emit_symbol_p (name)) - /* Only count non-private symbols. */ - ++ctx->nsymbol_tab; - } - - rwlock_unlock (ctx->lock); - - return result; -} diff --git a/libasm/asm_newscn.c b/libasm/asm_newscn.c deleted file mode 100644 index 75890a60..00000000 --- a/libasm/asm_newscn.c +++ /dev/null @@ -1,202 +0,0 @@ -/* Create new section in output file. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <error.h> -#include <libintl.h> -#include <stdlib.h> -#include <string.h> - -#include <libasmP.h> -#include <libelf.h> -#include <system.h> - - -/* Memory for the default pattern. The type uses a flexible array - which does work well with a static initializer. So we play some - dirty tricks here. */ -static const struct -{ - struct FillPattern pattern; - char zero; -} xdefault_pattern = - { - .pattern = - { - .len = 1 - }, - .zero = '\0' - }; -const struct FillPattern *__libasm_default_pattern = &xdefault_pattern.pattern; - - -static AsmScn_t * -text_newscn (AsmScn_t *result, GElf_Word type, GElf_Xword flags) -{ - /* Buffer where we construct the flag string. */ - char flagstr[sizeof (GElf_Xword) * 8 + 5]; - char *wp = flagstr; - const char *typestr = ""; - - /* Only write out the flag string if this is the first time the - section is selected. Some assemblers cannot cope with the - .section pseudo-op otherwise. */ - wp = stpcpy (wp, ", \""); - - if (flags & SHF_WRITE) - *wp++ = 'w'; - if (flags & SHF_ALLOC) - *wp++ = 'a'; - if (flags & SHF_EXECINSTR) - *wp++ = 'x'; - if (flags & SHF_MERGE) - *wp++ = 'M'; - if (flags & SHF_STRINGS) - *wp++ = 'S'; - if (flags & SHF_LINK_ORDER) - *wp++ = 'L'; - - *wp++ = '"'; - - if (type == SHT_PROGBITS) - typestr = ",@progbits"; - else if (type == SHT_NOBITS) - typestr = ",@nobits"; - - /* Terminate the string. */ - *wp = '\0'; - - printf ("\t.section \"%s\"%s%s\n", result->name, flagstr, typestr); - - return result; -} - - -static AsmScn_t * -binary_newscn (AsmScn_t *result, GElf_Word type, GElf_Xword flags, - size_t scnname_len) -{ - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - Elf_Scn *scn; - - /* The initial subsection has the number zero. */ - result->subsection_id = 0; - - /* We start at offset zero. */ - result->offset = 0; - /* And generic alignment. */ - result->max_align = 1; - - /* No output yet. */ - result->content = NULL; - - /* Put the default fill pattern in place. */ - result->pattern = (struct FillPattern *) __libasm_default_pattern; - - /* There are no subsections so far. */ - result->subnext = NULL; - - /* Add the name to the section header string table. */ - result->data.main.strent = ebl_strtabadd (result->ctx->section_strtab, - result->name, scnname_len); - assert (result->data.main.strent != NULL); - - /* Create the new ELF section. */ - result->data.main.scn = scn = elf_newscn (result->ctx->out.elf); - if (scn == NULL) - { - free (result); - __libasm_seterrno (ASM_E_LIBELF); - return NULL; - } - - /* Not part of a section group (yet). */ - result->data.main.next_in_group = NULL; - - /* Remember the flags. */ - shdr = gelf_getshdr (scn, &shdr_mem); - - shdr->sh_flags = flags; - result->type = shdr->sh_type = type; - - (void) gelf_update_shdr (scn, shdr); - - return result; -} - - -AsmScn_t * -asm_newscn (ctx, scnname, type, flags) - AsmCtx_t *ctx; - const char *scnname; - GElf_Word type; - GElf_Xword flags; -{ - size_t scnname_len = strlen (scnname) + 1; - unsigned long int hval; - AsmScn_t *result; - - /* If no context is given there might be an earlier error. */ - if (ctx == NULL) - return NULL; - - /* Check whether only flags are set which areselectable by the user. */ - if (unlikely ((flags & ~(SHF_WRITE | SHF_ALLOC | SHF_EXECINSTR | SHF_MERGE - | SHF_STRINGS | SHF_LINK_ORDER)) != 0) - /* We allow only two section types: data and data without file - representation. */ - || (type != SHT_PROGBITS && unlikely (type != SHT_NOBITS))) - { - __libasm_seterrno (ASM_E_INVALID); - return NULL; - } - - hval = elf_hash (scnname); - - rwlock_wrlock (ctx->lock); - - /* This is a new section. */ - result = (AsmScn_t *) malloc (sizeof (AsmScn_t) + scnname_len); - if (result != NULL) - { - /* Add the name. */ - memcpy (result->name, scnname, scnname_len); - - /* Add the reference to the context. */ - result->ctx = ctx; - - /* Perform operations according to output mode. */ - result = (unlikely (ctx->textp) - ? text_newscn (result, type, flags) - : binary_newscn (result, type, flags, scnname_len)); - - /* If everything went well finally add the new section to the hash - table. */ - if (result != NULL) - { - result->allnext = ctx->section_list; - ctx->section_list = result; - } - } - - rwlock_unlock (ctx->lock); - - return result; -} -INTDEF(asm_newscn) diff --git a/libasm/asm_newscn_ingrp.c b/libasm/asm_newscn_ingrp.c deleted file mode 100644 index dc0c4351..00000000 --- a/libasm/asm_newscn_ingrp.c +++ /dev/null @@ -1,66 +0,0 @@ -/* Create new section, which is member of a group, in output file. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> - -#include "libasmP.h" - - -AsmScn_t * -asm_newscn_ingrp (ctx, scnname, type, flags, grp) - AsmCtx_t *ctx; - const char *scnname; - GElf_Word type; - GElf_Xword flags; - AsmScnGrp_t *grp; -{ - AsmScn_t *result = __asm_newscn_internal (ctx, scnname, type, flags); - - if (likely (result != NULL)) - { - /* We managed to create a section group. Add it to the section - group. */ - if (grp->nmembers == 0) - { - assert (grp->members == NULL); - grp->members = result->data.main.next_in_group = result; - } - else - { - result->data.main.next_in_group - = grp->members->data.main.next_in_group; - grp->members = grp->members->data.main.next_in_group = result; - } - - ++grp->nmembers; - - /* Set the SHF_GROUP flag. */ - if (likely (! ctx->textp)) - { - GElf_Shdr shdr_mem; - GElf_Shdr *shdr = gelf_getshdr (result->data.main.scn, &shdr_mem); - - assert (shdr != NULL); - shdr->sh_flags |= SHF_GROUP; - - (void) gelf_update_shdr (result->data.main.scn, shdr); - } - } - - return result; -} diff --git a/libasm/asm_newscngrp.c b/libasm/asm_newscngrp.c deleted file mode 100644 index c1c8be3e..00000000 --- a/libasm/asm_newscngrp.c +++ /dev/null @@ -1,90 +0,0 @@ -/* Create new section group. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <stdlib.h> -#include <string.h> - -#include "libasmP.h" -#include <system.h> - - - -AsmScnGrp_t * -asm_newscngrp (ctx, grpname, signature, flags) - AsmCtx_t *ctx; - const char *grpname; - AsmSym_t *signature; - Elf32_Word flags; -{ - AsmScnGrp_t *result; - size_t grpname_len = strlen (grpname) + 1; - - if (ctx == NULL) - return NULL; - - if ((flags & ~GRP_COMDAT) != 0) - { - /* This is not a supported flag. */ - __libasm_seterrno (ASM_E_INVALID); - return NULL; - } - - result = (AsmScnGrp_t *) malloc (sizeof (AsmScnGrp_t) + grpname_len); - if (result == NULL) - return NULL; - - result->signature = signature; - result->members = NULL; - result->nmembers = 0; - result->flags = flags; - - memcpy (result->name, grpname, grpname_len); - result->strent = ebl_strtabadd (ctx->section_strtab, result->name, - grpname_len); - - if (unlikely (ctx->textp)) - // XXX TBI. What is the format? - abort (); - else - { - result->scn = elf_newscn (ctx->out.elf); - if (result->scn == NULL) - { - /* Couldn't allocate a new section. */ - __libasm_seterrno (ASM_E_LIBELF); - free (result); - return NULL; - } - } - - /* Enqueue is the context data structure. */ - if (ctx->ngroups == 0) - { - assert (ctx->groups == NULL); - ctx->groups = result->next = result; - } - else - { - result->next = ctx->groups->next; - ctx->groups = ctx->groups->next = result; - } - ++ctx->ngroups; - - return result; -} diff --git a/libasm/asm_newsubscn.c b/libasm/asm_newsubscn.c deleted file mode 100644 index e767720e..00000000 --- a/libasm/asm_newsubscn.c +++ /dev/null @@ -1,84 +0,0 @@ -/* Create new subsection section in given section. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdlib.h> - -#include <libasmP.h> -#include <system.h> - - -AsmScn_t * -asm_newsubscn (asmscn, nr) - AsmScn_t *asmscn; - unsigned int nr; -{ - AsmScn_t *runp; - AsmScn_t *newp; - - /* Just return if no section is given. The error must have been - somewhere else. */ - if (asmscn == NULL) - return NULL; - - /* Determine whether there is already a subsection with this number. */ - runp = asmscn->subsection_id == 0 ? asmscn : asmscn->data.up; - while (1) - { - if (runp->subsection_id == nr) - /* Found it. */ - return runp; - - if (runp->subnext == NULL || runp->subnext->subsection_id > nr) - break; - - runp = runp->subnext; - } - - newp = (AsmScn_t *) malloc (sizeof (AsmScn_t)); - if (newp == NULL) - return NULL; - - /* Same assembler context than the original section. */ - newp->ctx = runp->ctx; - - /* User provided the subsectio nID. */ - newp->subsection_id = nr; - - /* Inherit the parent's type. */ - newp->type = runp->type; - - /* Pointer to the zeroth subsection. */ - newp->data.up = runp->subsection_id == 0 ? runp : runp->data.up; - - /* We start at offset zero. */ - newp->offset = 0; - /* And generic alignment. */ - newp->max_align = 1; - - /* No output yet. */ - newp->content = NULL; - - /* Inherit the fill pattern from the section this one is derived from. */ - newp->pattern = asmscn->pattern; - - /* Enqueue at the right position in the list. */ - newp->subnext = runp->subnext; - runp->subnext = newp; - - return newp; -} diff --git a/libasm/asm_newsym.c b/libasm/asm_newsym.c deleted file mode 100644 index 6a6df2d8..00000000 --- a/libasm/asm_newsym.c +++ /dev/null @@ -1,116 +0,0 @@ -/* Define new symbol for current position in given section. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <inttypes.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include <libasmP.h> -#include <system.h> - - -AsmSym_t * -asm_newsym (asmscn, name, size, type, binding) - AsmScn_t *asmscn; - const char *name; - GElf_Xword size; - int type; - int binding; -{ -#define TEMPSYMLEN 10 - char tempsym[TEMPSYMLEN]; - AsmSym_t *result; - - if (asmscn == NULL) - /* Something went wrong before. */ - return NULL; - - /* Generate a temporary symbol if necessary. */ - if (name == NULL) - { - /* If a local symbol name is created the symbol better have - local binding. */ - if (binding != STB_LOCAL) - { - __libasm_seterrno (ASM_E_INVALID); - return NULL; - } - - // XXX This requires getting the format from the machine backend. */ - snprintf (tempsym, TEMPSYMLEN, ".L%07u", asmscn->ctx->tempsym_count++); - } - - result = (AsmSym_t *) malloc (sizeof (AsmSym_t)); - if (result == NULL) - return NULL; - - rwlock_wrlock (asmscn->ctx->lock); - - result->scn = asmscn; - result->offset = asmscn->offset; - result->size = size; - result->type = type; - result->binding = binding; - result->symidx = 0; - result->strent = ebl_strtabadd (asmscn->ctx->symbol_strtab, - name ?: tempsym, 0); - - if (unlikely (asmscn->ctx->textp)) - { - /* We are only interested in the name and don't need to know whether - it is a local name or not. */ - if (name == NULL) - name = tempsym; - - /* First print the binding pseudo-op. */ - if (binding == STB_GLOBAL) - fprintf (asmscn->ctx->out.file, "\t.globl\t%s\n", name); - else if (binding == STB_WEAK) - fprintf (asmscn->ctx->out.file, "\t.weak\t%s\n", name); - - /* Next the symbol type. */ - if (type == STT_OBJECT) - fprintf (asmscn->ctx->out.file, "\t.type\t%s,@object\n", name); - else if (type == STT_FUNC) - fprintf (asmscn->ctx->out.file, "\t.type\t%s,@function\n", name); - - /* Finally the size and the label. */ - fprintf (asmscn->ctx->out.file, "\t.size\t%s,%" PRIuMAX "\n%s:\n", - name, (uintmax_t) size, name); - } - else - { - /* Put the symbol in the hash table so that we can later find it. */ - if (asm_symbol_tab_insert (&asmscn->ctx->symbol_tab, - elf_hash (name ?: tempsym), result) != 0) - { - /* The symbol already exists. */ - __libasm_seterrno (ASM_E_DUPLSYM); - free (result); - result = NULL; - } - else if (name != NULL && asm_emit_symbol_p (name)) - /* Only count non-private symbols. */ - ++asmscn->ctx->nsymbol_tab; - } - - rwlock_unlock (asmscn->ctx->lock); - - return result; -} diff --git a/libasm/asm_scngrp_newsignature.c b/libasm/asm_scngrp_newsignature.c deleted file mode 100644 index d4042a24..00000000 --- a/libasm/asm_scngrp_newsignature.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Update signature of section group. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libasmP.h" - - -int -asm_scngrp_newsignature (grp, signature) - AsmScnGrp_t *grp; - AsmSym_t *signature; -{ - if (grp == NULL || signature == NULL) - return 1; - - grp->signature = signature; - - return 0; -} diff --git a/libasm/libasm.h b/libasm/libasm.h deleted file mode 100644 index dbdd6fc2..00000000 --- a/libasm/libasm.h +++ /dev/null @@ -1,155 +0,0 @@ -/* Interface for libasm. - Copyright (C) 2002 Red Hat, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef _LIBASM_H -#define _LIBASM_H 1 - -#include <stdbool.h> -#include <stdint.h> - -#include <gelf.h> - - -/* Opaque type for the assembler context descriptor. */ -typedef struct AsmCtx AsmCtx_t; - -/* Opaque type for a section. */ -typedef struct AsmScn AsmScn_t; - -/* Opaque type for a section group. */ -typedef struct AsmScnGrp AsmScnGrp_t; - -/* Opaque type for a symbol. */ -typedef struct AsmSym AsmSym_t; - - -#ifdef __cplusplus -extern "C" { -#endif - -/* Create output file and return descriptor for assembler context. If - TEXTP is true the output is an assembler format text file. - Otherwise an object file is created. The MACHINE parameter - corresponds to an EM_ constant from <elf.h>, KLASS specifies the - class (32- or 64-bit), and DATA specifies the byte order (little or - big endian). */ -extern AsmCtx_t *asm_begin (const char *fname, bool textp, int machine, - int klass, int data); - -/* Abort the operation on the assembler context and free all resources. */ -extern int asm_abort (AsmCtx_t *ctx); - -/* Finalize output file and free all resources. */ -extern int asm_end (AsmCtx_t *ctx); - - -/* Return handle for the named section. If it was not used before - create it. */ -extern AsmScn_t *asm_newscn (AsmCtx_t *ctx, const char *scnname, - GElf_Word type, GElf_Xword flags); - - -/* Similar to 'asm_newscn', but make it part of section group GRP. */ -extern AsmScn_t *asm_newscn_ingrp (AsmCtx_t *ctx, const char *scnname, - GElf_Word type, GElf_Xword flags, - AsmScnGrp_t *grp); - -/* Create new subsection NR in the given section. */ -extern AsmScn_t *asm_newsubscn (AsmScn_t *asmscn, unsigned int nr); - - -/* Return handle for new section group. The signature symbol can be - set later. */ -extern AsmScnGrp_t *asm_newscngrp (AsmCtx_t *ctx, const char *grpname, - AsmSym_t *signature, Elf32_Word flags); - -/* Set or overwrite signature symbol for group. */ -extern int asm_scngrp_newsignature (AsmScnGrp_t *grp, AsmSym_t *signature); - - -/* Add zero terminated string STR of size LEN to (sub)section ASMSCN. */ -extern int asm_addstrz (AsmScn_t *asmscn, const char *str, size_t len); - -/* Add 8-bit signed integer NUM to (sub)section ASMSCN. */ -extern int asm_addint8 (AsmScn_t *asmscn, int8_t num); - -/* Add 8-bit unsigned integer NUM to (sub)section ASMSCN. */ -extern int asm_adduint8 (AsmScn_t *asmscn, uint8_t num); - -/* Add 16-bit signed integer NUM to (sub)section ASMSCN. */ -extern int asm_addint16 (AsmScn_t *asmscn, int16_t num); - -/* Add 16-bit unsigned integer NUM to (sub)section ASMSCN. */ -extern int asm_adduint16 (AsmScn_t *asmscn, uint16_t num); - -/* Add 32-bit signed integer NUM to (sub)section ASMSCN. */ -extern int asm_addint32 (AsmScn_t *asmscn, int32_t num); - -/* Add 32-bit unsigned integer NUM to (sub)section ASMSCN. */ -extern int asm_adduint32 (AsmScn_t *asmscn, uint32_t num); - -/* Add 64-bit signed integer NUM to (sub)section ASMSCN. */ -extern int asm_addint64 (AsmScn_t *asmscn, int64_t num); - -/* Add 64-bit unsigned integer NUM to (sub)section ASMSCN. */ -extern int asm_adduint64 (AsmScn_t *asmscn, uint64_t num); - - -/* Add signed little endian base 128 integer NUM to (sub)section ASMSCN. */ -extern int asm_addsleb128 (AsmScn_t *asmscn, int32_t num); - -/* Add unsigned little endian base 128 integer NUM to (sub)section ASMSCN. */ -extern int asm_adduleb128 (AsmScn_t *asmscn, uint32_t num); - - -/* Define new symbol NAME for current position in given section ASMSCN. */ -extern AsmSym_t *asm_newsym (AsmScn_t *asmscn, const char *name, - GElf_Xword size, int type, int binding); - - -/* Define new common symbol NAME with given SIZE and alignment. */ -extern AsmSym_t *asm_newcomsym (AsmCtx_t *ctx, const char *name, - GElf_Xword size, GElf_Addr align); - -/* Define new common symbol NAME with given SIZE, VALUE, TYPE, and BINDING. */ -extern AsmSym_t *asm_newabssym (AsmCtx_t *ctx, const char *name, - GElf_Xword size, GElf_Addr value, - int type, int binding); - - -/* Align (sub)section offset according to VALUE. */ -extern int asm_align (AsmScn_t *asmscn, GElf_Word value); - -/* Set the byte pattern used to fill gaps created by alignment. */ -extern int asm_fill (AsmScn_t *asmscn, void *bytes, size_t len); - - -/* Return ELF descriptor created for the output file of the given context. */ -extern Elf *asm_getelf (AsmCtx_t *ctx); - - -/* Return error code of last failing function call. This value is kept - separately for each thread. */ -extern int asm_errno (void); - -/* Return error string for ERROR. If ERROR is zero, return error string - for most recent error or NULL is none occurred. If ERROR is -1 the - behaviour is similar to the last case except that not NULL but a legal - string is returned. */ -extern const char *asm_errmsg (int __error); - -#ifdef __cplusplus -} -#endif - -#endif /* libasm.h */ diff --git a/libasm/libasm.map b/libasm/libasm.map deleted file mode 100644 index b0b5b5b7..00000000 --- a/libasm/libasm.map +++ /dev/null @@ -1,33 +0,0 @@ -ELFUTILS_1.0 { - global: - asm_abort; - asm_addint16; - asm_addint32; - asm_addint64; - asm_addint8; - asm_addsleb128; - asm_addstrz; - asm_adduint16; - asm_adduint32; - asm_adduint64; - asm_adduint8; - asm_adduleb128; - asm_align; - asm_begin; - asm_end; - asm_errmsg; - asm_errno; - asm_fill; - asm_getelf; - asm_newabssym; - asm_newcomsym; - asm_newscn; - asm_newscn_ingrp; - asm_newscngrp; - asm_newsubscn; - asm_newsym; - asm_scngrp_newsignature; - - local: - *; -}; diff --git a/libasm/libasmP.h b/libasm/libasmP.h deleted file mode 100644 index 2e4954f6..00000000 --- a/libasm/libasmP.h +++ /dev/null @@ -1,268 +0,0 @@ -/* Internal definitions for libasm. - Copyright (C) 2002, 2004 Red Hat, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef _LIBASMP_H -#define _LIBASMP_H 1 - -#include <stdio.h> - -#include <libasm.h> -#include <libebl.h> - -/* gettext helper macros. */ -#define _(Str) dgettext ("elfutils", Str) - - -/* Known error codes. */ -enum - { - ASM_E_NOERROR, - ASM_E_NOMEM, /* No more memory. */ - ASM_E_CANNOT_CREATE, /* Output file cannot be created. */ - ASM_E_INVALID, /* Invalid parameters. */ - ASM_E_CANNOT_CHMOD, /* Cannot change mode of output file. */ - ASM_E_CANNOT_RENAME, /* Cannot rename output file. */ - ASM_E_DUPLSYM, /* Duplicate symbol definition. */ - ASM_E_LIBELF, /* Refer to error in libelf. */ - ASM_E_TYPE, /* Invalid section type for operation. */ - ASM_E_NUM /* Keep this entry as the last. */ - }; - - -/* Special sections. */ -#define ASM_ABS_SCN ((Elf_Scn *) 1) -#define ASM_COM_SCN ((Elf_Scn *) 2) - - -/* And the hash table for symbols. */ -#include <symbolhash.h> - - -/* Descriptor for a section. */ -struct AsmScn -{ - /* The underlying assembler context. */ - AsmCtx_t *ctx; - - /* Subsection ID. */ - unsigned int subsection_id; - - /* Section type. */ - GElf_Word type; - - union - { - /* Data only stored in the record for subsection zero. */ - struct - { - /* The ELF section. */ - Elf_Scn *scn; - - /* Entry in the section header string table. */ - struct Ebl_Strent *strent; - - /* Next member of group. */ - struct AsmScn *next_in_group; - } main; - - /* Pointer to the record for subsection zero. */ - AsmScn_t *up; - } data; - - /* Current offset in the (sub)section. */ - GElf_Off offset; - /* Maximum alignment of the section so far. */ - GElf_Word max_align; - - /* Section content. */ - struct AsmData - { - /* Currently used number of bytes in the block. */ - size_t len; - - /* Number of bytes allocated. */ - size_t maxlen; - - /* Pointer to the next block. */ - struct AsmData *next; - - /* The actual data. */ - char data[flexarr_size]; - } *content; - - /* Fill pattern. */ - struct FillPattern - { - size_t len; - char bytes[flexarr_size]; - } *pattern; - - /* Next subsection. */ - AsmScn_t *subnext; - - /* List of all allocated sections. */ - AsmScn_t *allnext; - - /* Name of the section. */ - char name[flexarr_size]; -}; - - -/* Descriptor used for the assembling session. */ -struct AsmCtx -{ - /* File descriptor of the temporary file. */ - int fd; - - /* True if text output is wanted. */ - bool textp; - - /* Output file handle. */ - union - { - /* ELF descriptor of the temporary file. */ - Elf *elf; - /* I/O stream for text output. */ - FILE *file; - } out; - - - /* List with defined sections. */ - AsmScn_t *section_list; - /* Section header string table. */ - struct Ebl_Strtab *section_strtab; - - /* Table with defined symbols. */ - asm_symbol_tab symbol_tab; - /* Number of symbols in the table. */ - unsigned int nsymbol_tab; - /* Symbol string table. */ - struct Ebl_Strtab *symbol_strtab; - - /* List of section groups. */ - struct AsmScnGrp *groups; - /* Number of section groups. */ - size_t ngroups; - - /* Current required alignment for common symbols. */ - GElf_Word common_align; - - /* Lock to handle multithreaded programs. */ - rwlock_define (,lock); - - /* Counter for temporary symbols. */ - unsigned int tempsym_count; - - /* Name of the output file. */ - char *fname; - /* The name of the temporary file. */ - char tmp_fname[flexarr_size]; -}; - - -/* Descriptor for a symbol. */ -struct AsmSym -{ - /* Reference to the section which contains the symbol. */ - AsmScn_t *scn; - - /* Type of the symbol. */ - int8_t type; - /* Binding of the symbol. */ - int8_t binding; - - /* Size of the symbol. */ - GElf_Xword size; - - /* Offset in the section. */ - GElf_Off offset; - - /* Symbol table index of the symbol in the symbol table. */ - size_t symidx; - - /* Reference to name of the symbol. */ - struct Ebl_Strent *strent; -}; - - -/* Descriptor for section group. */ -struct AsmScnGrp -{ - /* Entry in the section header string table. */ - struct Ebl_Strent *strent; - - /* The ELF section. */ - Elf_Scn *scn; - - /* The signature. */ - struct AsmSym *signature; - - /* First member. */ - struct AsmScn *members; - /* Number of members. */ - size_t nmembers; - - /* Flags. */ - Elf32_Word flags; - - /* Next group. */ - struct AsmScnGrp *next; - - /* Name of the section group. */ - char name[flexarr_size]; -}; - - -/* The default fill pattern: one zero byte. */ -extern const struct FillPattern *__libasm_default_pattern - attribute_hidden; - - -/* Ensure there are at least LEN bytes available in the output buffer - for ASMSCN. */ -extern int __libasm_ensure_section_space (AsmScn_t *asmscn, size_t len) - internal_function; - -/* Free all resources associated with the assembler context. */ -extern void __libasm_finictx (AsmCtx_t *ctx) internal_function; - -/* Set error code. */ -extern void __libasm_seterrno (int err) internal_function; - -/* Return handle for the named section. If it was not used before - create it. */ -extern AsmScn_t *__asm_newscn_internal (AsmCtx_t *ctx, const char *scnname, - GElf_Word type, GElf_Xword flags) - attribute_hidden; - - -/* Internal aliases of the asm_addintXX functions. */ -extern int __asm_addint8_internal (AsmScn_t *asmscn, int8_t num) - attribute_hidden; -extern int __asm_addint16_internal (AsmScn_t *asmscn, int16_t num) - attribute_hidden; -extern int __asm_addint32_internal (AsmScn_t *asmscn, int32_t num) - attribute_hidden; -extern int __asm_addint64_internal (AsmScn_t *asmscn, int64_t num) - attribute_hidden; - - - -/* Test whether given symbol is an internal symbol and if yes, whether - we should nevertheless emit it in the symbol table. */ -// XXX The second part should probably be controlled by an option which -// isn't implemented yet -// XXX Also, the format will change with the backend. -#define asm_emit_symbol_p(name) (strncmp (name, ".L", 2) != 0) - -#endif /* libasmP.h */ diff --git a/libasm/symbolhash.c b/libasm/symbolhash.c deleted file mode 100644 index 62d2c852..00000000 --- a/libasm/symbolhash.c +++ /dev/null @@ -1,39 +0,0 @@ -/* Symbol hash table implementation. - Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <string.h> - -#include <libasmP.h> -#include <libebl.h> - -/* Definitions for the symbol hash table. */ -#define TYPE AsmSym_t * -#define NAME asm_symbol_tab -#define ITERATE 1 -#define REVERSE 1 -#define COMPARE(a, b) \ - strcmp (ebl_string ((a)->strent), ebl_string ((b)->strent)) - -#define next_prime __libasm_next_prime -extern size_t next_prime (size_t) attribute_hidden; - -#include "../lib/dynamicsizehash.c" - -#undef next_prime -#define next_prime attribute_hidden __libasm_next_prime -#include "../lib/next_prime.c" diff --git a/libasm/symbolhash.h b/libasm/symbolhash.h deleted file mode 100644 index 4377b4b5..00000000 --- a/libasm/symbolhash.h +++ /dev/null @@ -1,25 +0,0 @@ -/* Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef SYMBOLHASH_H -#define SYMBOLHASH_H 1 - -/* Definitions for the symbol hash table. */ -#define TYPE AsmSym_t * -#define NAME asm_symbol_tab -#define ITERATE 1 -#define COMPARE(a, b) \ - strcmp (ebl_string ((a)->strent), ebl_string ((b)->strent)) -#include <dynamicsizehash.h> - -#endif /* symbolhash.h */ diff --git a/libcpu/ChangeLog b/libcpu/ChangeLog deleted file mode 100644 index c46ffcb6..00000000 --- a/libcpu/ChangeLog +++ /dev/null @@ -1,3 +0,0 @@ -2003-08-11 Ulrich Drepper <drepper@redhat.com> - - * Moved to CVS archive. diff --git a/libcpu/Makefile b/libcpu/Makefile deleted file mode 100644 index 744b5c09..00000000 --- a/libcpu/Makefile +++ /dev/null @@ -1,408 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# libcpu/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - -SOURCES = $(libcpu_i386_a_SOURCES) - -srcdir = . -top_srcdir = .. - -pkgdatadir = $(datadir)/elfutils -pkglibdir = $(libdir)/elfutils -pkgincludedir = $(includedir)/elfutils -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = /usr/bin/install -c -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = i686-pc-linux-gnu -host_triplet = i686-pc-linux-gnu -subdir = libcpu -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -LIBRARIES = $(noinst_LIBRARIES) -AR = ar -ARFLAGS = cru -libcpu_i386_a_AR = $(AR) $(ARFLAGS) -libcpu_i386_a_LIBADD = -am_libcpu_i386_a_OBJECTS = i386_dis.$(OBJEXT) -libcpu_i386_a_OBJECTS = $(am_libcpu_i386_a_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(libcpu_i386_a_SOURCES) -DIST_SOURCES = $(libcpu_i386_a_SOURCES) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run aclocal-1.9 -AMDEP_FALSE = # -AMDEP_TRUE = -AMTAR = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run tar -AUTOCONF = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoconf -AUTOHEADER = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoheader -AUTOMAKE = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run automake-1.9 -AWK = gawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -CPP = gcc -E -CPPFLAGS = -CYGPATH_W = echo -DATADIRNAME = ${prefix}/share -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -Wall -Wshadow -DEPDIR = .deps -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = grep -E -EXEEXT = -GMSGFMT = /usr/bin/msgfmt -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s -INTLLIBS = -LDFLAGS = -LEX = flex -LEXLIB = -lfl -LEX_OUTPUT_ROOT = lex.yy -LIBICONV = -liconv -LIBINTL = -LIBOBJS = -LIBS = -LOCALEDIR = ${prefix}/share -LTLIBICONV = -liconv -LTLIBINTL = -LTLIBOBJS = -MAKEINFO = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run makeinfo -MKINSTALLDIRS = config/mkinstalldirs -MSGFMT = /usr/bin/msgfmt -MSGMERGE = /usr/bin/msgmerge -MUDFLAP_FALSE = -MUDFLAP_TRUE = # -NATIVE_LD_FALSE = -NATIVE_LD_TRUE = # -OBJEXT = o -PACKAGE = elfutils -PACKAGE_BUGREPORT = http://bugzilla.redhat.com/bugzilla/ -PACKAGE_NAME = Red Hat elfutils -PACKAGE_STRING = Red Hat elfutils 0.97 -PACKAGE_TARNAME = elfutils -PACKAGE_VERSION = 0.97 -PATH_SEPARATOR = : -POSUB = po -RANLIB = ranlib -SET_MAKE = -SHELL = /bin/sh -STRIP = -USE_NLS = yes -VERSION = 0.97 -XGETTEXT = /usr/bin/xgettext -YACC = bison -y -ac_ct_CC = gcc -ac_ct_RANLIB = ranlib -ac_ct_STRIP = -am__fastdepCC_FALSE = # -am__fastdepCC_TRUE = -am__include = include -am__leading_dot = . -am__quote = -am__tar = ${AMTAR} chof - "$$tardir" -am__untar = ${AMTAR} xf - -base_cpu = none -bindir = ${exec_prefix}/bin -build = i686-pc-linux-gnu -build_alias = -build_cpu = i686 -build_os = linux-gnu -build_vendor = pc -datadir = ${prefix}/share -exec_prefix = ${prefix} -host = i686-pc-linux-gnu -host_alias = -host_cpu = i686 -host_os = linux-gnu -host_vendor = pc -includedir = ${prefix}/include -infodir = ${prefix}/info -install_sh = /work/elfutils/stock/elfutils-0.97/config/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localstatedir = ${prefix}/var -mandir = ${prefix}/man -mkdir_p = mkdir -p -- -oldincludedir = /usr/include -prefix = /work/elfutils/google/linux-install-elfutils-0.97/ -program_transform_name = s,x,x, -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -sysconfdir = ${prefix}/etc -target_alias = -INCLUDES = -I$(srcdir) -noinst_LIBRARIES = libcpu_i386.a -libcpu_i386_a_SOURCES = i386_dis.c -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits libcpu/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits libcpu/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libcpu_i386.a: $(libcpu_i386_a_OBJECTS) $(libcpu_i386_a_DEPENDENCIES) - -rm -f libcpu_i386.a - $(libcpu_i386_a_AR) libcpu_i386.a $(libcpu_i386_a_OBJECTS) $(libcpu_i386_a_LIBADD) - $(RANLIB) libcpu_i386.a - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -include ./$(DEPDIR)/i386_dis.Po - -.c.o: - if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ - then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c $< - -.c.obj: - if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ - then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c `$(CYGPATH_W) '$<'` -uninstall-info-am: - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-info-am - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-noinstLIBRARIES ctags distclean distclean-compile \ - distclean-generic distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-exec install-exec-am install-info \ - install-info-am install-man install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-info-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/libcpu/Makefile.am b/libcpu/Makefile.am deleted file mode 100644 index fc85f37c..00000000 --- a/libcpu/Makefile.am +++ /dev/null @@ -1,21 +0,0 @@ -## Process this file with automake to create Makefile.in -## Configure input file for elfutils. -## -## Copyright (C) 2002 Red Hat, Inc. -## -## This program is Open Source software; you can redistribute it and/or -## modify it under the terms of the Open Software License version 1.0 as -## published by the Open Source Initiative. -## -## You should have received a copy of the Open Software License along -## with this program; if not, you may obtain a copy of the Open Software -## License version 1.0 from http://www.opensource.org/licenses/osl.php or -## by writing the Open Source Initiative c/o Lawrence Rosen, Esq., -## 3001 King Ranch Road, Ukiah, CA 95482. -## -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -Wall -Wshadow -INCLUDES = -I$(srcdir) - -noinst_LIBRARIES = libcpu_i386.a - -libcpu_i386_a_SOURCES = i386_dis.c diff --git a/libcpu/Makefile.in b/libcpu/Makefile.in deleted file mode 100644 index abd67c34..00000000 --- a/libcpu/Makefile.in +++ /dev/null @@ -1,408 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -SOURCES = $(libcpu_i386_a_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = libcpu -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -LIBRARIES = $(noinst_LIBRARIES) -AR = ar -ARFLAGS = cru -libcpu_i386_a_AR = $(AR) $(ARFLAGS) -libcpu_i386_a_LIBADD = -am_libcpu_i386_a_OBJECTS = i386_dis.$(OBJEXT) -libcpu_i386_a_OBJECTS = $(am_libcpu_i386_a_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(libcpu_i386_a_SOURCES) -DIST_SOURCES = $(libcpu_i386_a_SOURCES) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DATADIRNAME = @DATADIRNAME@ -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -Wall -Wshadow -DEPDIR = @DEPDIR@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -GMSGFMT = @GMSGFMT@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTLLIBS = @INTLLIBS@ -LDFLAGS = @LDFLAGS@ -LEX = @LEX@ -LEXLIB = @LEXLIB@ -LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LOCALEDIR = @LOCALEDIR@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -MSGMERGE = @MSGMERGE@ -MUDFLAP_FALSE = @MUDFLAP_FALSE@ -MUDFLAP_TRUE = @MUDFLAP_TRUE@ -NATIVE_LD_FALSE = @NATIVE_LD_FALSE@ -NATIVE_LD_TRUE = @NATIVE_LD_TRUE@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -XGETTEXT = @XGETTEXT@ -YACC = @YACC@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -base_cpu = @base_cpu@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -datadir = @datadir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -INCLUDES = -I$(srcdir) -noinst_LIBRARIES = libcpu_i386.a -libcpu_i386_a_SOURCES = i386_dis.c -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits libcpu/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits libcpu/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libcpu_i386.a: $(libcpu_i386_a_OBJECTS) $(libcpu_i386_a_DEPENDENCIES) - -rm -f libcpu_i386.a - $(libcpu_i386_a_AR) libcpu_i386.a $(libcpu_i386_a_OBJECTS) $(libcpu_i386_a_LIBADD) - $(RANLIB) libcpu_i386.a - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386_dis.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` -uninstall-info-am: - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-info-am - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-noinstLIBRARIES ctags distclean distclean-compile \ - distclean-generic distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-exec install-exec-am install-info \ - install-info-am install-man install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-info-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/libcpu/i386_dis.c b/libcpu/i386_dis.c deleted file mode 100644 index 971746e3..00000000 --- a/libcpu/i386_dis.c +++ /dev/null @@ -1 +0,0 @@ -int foo; diff --git a/libdw/ChangeLog b/libdw/ChangeLog deleted file mode 100644 index f0c4b6b6..00000000 --- a/libdw/ChangeLog +++ /dev/null @@ -1,229 +0,0 @@ -2004-09-25 Ulrich Drepper <drepper@redhat.com> - - * dwarf_child.c: Make compile with gcc 4.0. - * dwarf_error.c: Likewise. - * dwarf_formblock.c: Likewise. - * dwarf_getabbrev.c: Likewise. - * dwarf_getattrs.c: Likewise. - * dwarf_getsrclines.c: Likewise. - * dwarf_tag.c: Likewise. - * libdw_form.c: Likewise. - -2004-01-20 Ulrich Drepper <drepper@redhat.com> - - * Makefile.am: Support building with mudflap. - - * dwarf_getloclist.c: Fix warnings gcc 3.4 spits out. - * dwarf_getsrclines.c: Likewise. - * dwarf_memory-access.h: Likewise. - -2004-01-19 Ulrich Drepper <drepper@redhat.com> - - * dwarf_getsrcfiles.c: Third parameter can be NULL. - - * libdw.h: Define Dwarf_macro. Declare dwarf_getmacros. - Third parameter of dwarf_getsrcfiles can be NULL. - - * libdw.map: Add dwarf_getmacros. - * Makefile.am (libdw_a_SOURCES): Add dwarf_getmacros. - * dwarf_getmacros.c: New file. - -2004-01-18 Ulrich Drepper <drepper@redhat.com> - - * libdw.h: Second parameter of dwarf_getaranges can be NULL. - - * dwarf_nextcu.c: Return -1 if dwarf parameter is NULL. - - * dwarf_getsrclines.c: - Use read_2ubyte_unaligned_inc instead of _inc-less variant. - - * dwarf_getaranges.c: Allow naranges parameter to be NULL. - - * libdwP.h (_): Use elfutils domain. - - * dwarf_getsrclines.c (dwarf_getsrclines): Add more branch prediction. - - * dwarf_getsrclines.c: Fix typo in comment. - -2004-01-17 Ulrich Drepper <drepper@redhat.com> - - * Makefile.am: Support building with mudflap. - -2004-01-16 Ulrich Drepper <drepper@redhat.com> - - * memory-access.h: Add lots of const in case a pointer passed is const. - - * dwarf_formflag.c: New file. - * dwarf_getattrs.c: New file. - * dwarf_error.c: Add new error value. - * libdw.h: Add prototypes for new functions. Adjust prototype for - dwarf_getpubnames. - * libdw.map: Add new functions. - * dwarf_getpubnames.c: Change type of return value and fourth parameter - to ptrdiff_t. - * libdwP.h: Add new error value. - * Makefile.am (libdw_a_SOURCES): Add dwarf_getattrs.c and - dwarf_formflag.c. - - * dwarf_getpubnames.c (dwarf_getpubnames): Just fail if dbg is NULL. - -2004-01-12 Ulrich Drepper <drepper@redhat.com> - - * dwarf_getarange_addr.c: New file - * dwarf_getarangeinfo.c: New file. - * dwarf_getaranges.c: New file. - * dwarf_onerange.c: New file. - * libdw.h: Declare new functions. Define Dwarf_Arange and - Dwarf_Aranges. - * libdw.map: Add new functions. - * libdwP.h: Add new errors. Add aranges member to struct Dwarf. - Define Dwarf_Aranges_s and Dwarf_Arange_s. - * Makefile.am (libdw_a_SOURCES): Add dwarf_getaranges.c, - dwarf_onearange.c, dwarf_getarangeinfo.c, dwarf_getarange_addr.c. - * dwarf_error.c: Add new message. - -2004-01-11 Ulrich Drepper <drepper@redhat.com> - - * Makefile.am (libdw_a_SOURCES): Add dwarf_lineaddr.c, dwarf_linecol.c, - dwarf_linebeginstatement.c, dwarf_lineendsequence.c, dwarf_lineblock.c, - dwarf_lineprologueend.c, dwarf_lineepiloguebegin.c, dwarf_onesrcline.c. - * dwarf_error.c: Add another message. - * dwarf_getsrc_die.c: Adjust for Dwarf_Files and Dwarf_Lines - introduction. - * dwarf_filesrc.c: Likewise. - * dwarf_getsrcfiles.c: Likewise. - * dwarf_getsrclines.c: Likewise. - * dwarf_lineaddr.c: New file. - * dwarf_linebeginstatement.c: New file. - * dwarf_lineblock.c: New file. - * dwarf_linecol.c: New file. - * dwarf_lineendsequence.c: New file. - * dwarf_lineepiloguebegin.c: New file. - * dwarf_lineno.c: New file. - * dwarf_lineprologueend.c: New file. - * dwarf_onesrcline.c: New file. - * dwarf_lineno.c: Change interface to store result in object pointed - to by second parameter. - * libdw.h: Add prototypes for new functions. Change dwarf_lineno - prototype. Define Dwarf_Files and Dwarf_Lines. - * libdw.map: Add new functions. - * libdwP.h: Define Dwarf_Files_s and Dwarf_Lines_s. - * libdw_findcu.c: Don't initialize nlines field. - - * dwarf_siblingof: Little optimization. - - * dwarf_begin.c: Remember that the ELF descriptor must be closed. - * dwarf_end.c: Close ELF descriptor if free_elf is set. - * libdwP.h (struct Dwarf): Add free_elf field. - - * Makefile.am (libdw_a_SOURCES): Add dwarf_getstring.c and - dwarf_offabbrev.c. - * dwarf_getstring.c: New file. - * dwarf_offabbrev.c: New file. - * libdw.map: Add dwarf_getstring and dwarf_offabbrev. - * dwarf_getabbrev.c (__libdw_getabbrev): Add new dbg and result - parameters. Don't allocate memory if not necessary and don't lookup - previous results if no CU given. - (dwarf_getabbrev): Adjust call to __libdw_getabbrev. - * dwarf_tag.c: Adjust call to __libdw_getabbrev. - * libdw.h: Declare dwarf_offabbrev and dwarf_getstring. - * libdwP.h: Change prototype for __libdw_getabbrev. - - * dwarf_getabbrevattr.c: Add offsetp parameter. Fill in before - returning if this is wanted. - -2004-01-09 Ulrich Drepper <drepper@redhat.com> - - * dwarf_nextcu.c: Add new parameter offset_sizep. Initialize it - with offset_size value. - * libdw.h: Adjust dwarf_nextcu prototype. - * libdwP.h (struct Dwarf_CU): Add offset_size member. - * libdw_findcu.c: Adjust dwarf_nextcu call. Initialize offset_size - member of new CU struct. - * dwarf_formstring.c: Depend on offset_size not address_size for - DW_FORM_strp handling. - * dwarf_form.c: Likewise for DW_FORM_strp and DW_FORM_ref_addr. - - * dwarf_tag.c (__libdw_findabbrev): Return correct value for - failing lookup. - (dwarf_tag): Correctly recognize failed lookup. - - * dwarf_end.c (cu_free): Call tdestroy for locs member. Use new - function noop_free. - * dwarf_error.c: Add message for DWARF_E_NO_BLOCK. - * dwarf_formblock.c: New file. - * dwarf_getloclist.c: Rewrite to handle a single block. - * libdw.h: Define Dwarf_Block. Rename Dwarf_Loc members. Remove - Dwarf_Locdesc definition. Declare dwarf_formblock. Remove - dwarf_getloclistent declaration. - * libdw.map: Add dwarf_formblock, remove dwarf_getloclistent. - * libdwP.h: Define struct loc_s and DWARF_E_NO_BLOCK. - Add locs member to struct Dwarf_CU. - * libdw_fundcu.c: Initialize locs member of new CU. - * Makefile.am (libdw_a_SOURCES): Add dwarf_formblock.c. - Remove dwarf_getloclistent.c. - -2004-01-07 Ulrich Drepper <drepper@redhat.com> - - * libdw.h: Use __nonnull__ attribute only for gcc >= 3.3. - * libdwP.h: Likewise. - - * dwarf_getloclist.c: New file. - * dwarf_getloclistent.c: New file. - * libdw.h: Define Dwarf_Loc and Dwarf_Locdesc. - Declare dwarf_getloclistent and dwarf_getloclist. - * libdw.map: Add dwarf_getloclistent and dwarf_getloclist. - * libdwP.h: Define DWARF_E_NO_LOCLIST. - * Makefile.am (libdw_a_SOURCES): Add dwarf_getloclistent.c and - dwarf_getloclist.c. - - * dwarf_error.c: More error messages. - -2004-01-06 Ulrich Drepper <drepper@redhat.com> - - * dwarf_getsrclines.c: Remove debugging support. - - * dwarf_getsrcfiles.c: New file. - * dwarf_filesrc.c: New file. - * libdw.h: Declare these functions. Define Dwarf_File. - * libdwP.c: Adjust Dwarf_File_s definition. - * libdw.map: Add these functions. - * Makefile.am (libdw_a_SOURCES): Add dwarf_getsrcfiles.c and - dwarf_filesrc.c. - * dwarf_getsrclines.c: Initialize cu->files. - -2004-01-05 Ulrich Drepper <drepper@redhat.com> - - * libdw.h: Add more nonnull function attributes. - - * dwarf_begin_elf.c (dwarf_begin_elf): Don't initialize mem_tail->next. - * dwarf_end.c (cu_free): New function. - (dwarf_end): Also free CU tree. Correct freeing of memory blocks. - * dwarf_error.c (errmsgs): Add new messages. - * dwarf_getsrc_die.c: New file. - * dwarf_getsrclines.c: New file. - * dwarf_lineno.c: New file. - * dwarf_linesrc.c: New file. - * dwarf_nextcu.c (dwarf_nextcu): Use read_*byte_unaligned_inc - instead of the *_inc-less variants. - * libdw.h: Define Dwarf_Line. Add some function attributes. Declare - dwarf_getsrclines, dwarf_getsrc_die, dwarf_lineno, and dwarf_linesrc. - * libdw.map: Add dwarf_getsrclines, dwarf_getsrc_die, dwarf_lineno, - and dwarf_linesrc. - * libdwP.h: Add more error codes. - (struct Dwarf): Remove mem_tail.next member. - (Dwarf_File): Define type. - (struct Dwarf_Line_s): Define type. - (struct Dwarf_CU): Add lines and nlines members. - (libdw_alloc): Define local variable _tail and use it. - Add some function attributes. - * libdw_alloc.c (__libdw_allocate): Don't initialize next member. - * libdw_findcu.c (__libdw_findcu): Initialize lines and nlines members. - * memory-access.h: Add unlikely for the endian conversion paths. - * Makefile.am (AM_CFLAGS): Add -std parameter. - (libdw_a_SOURCES): Add dwarf_getsrclines, dwarf_getsrc_die, - dwarf_lineno, and dwarf_linesrc. - -2003-08-11 Ulrich Drepper <drepper@redhat.com> - - * Moved to CVS archive. diff --git a/libdw/Makefile b/libdw/Makefile deleted file mode 100644 index ba960d4c..00000000 --- a/libdw/Makefile +++ /dev/null @@ -1,681 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# libdw/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - - - -SOURCES = $(libdw_a_SOURCES) $(libdw_pic_a_SOURCES) $(libdw_so_SOURCES) - -srcdir = . -top_srcdir = .. - -pkgdatadir = $(datadir)/elfutils -pkglibdir = $(libdir)/elfutils -pkgincludedir = $(includedir)/elfutils -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = /usr/bin/install -c -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = i686-pc-linux-gnu -host_triplet = i686-pc-linux-gnu -noinst_PROGRAMS = $(am__EXEEXT_1) -#am_libdw_pic_a_OBJECTS = -subdir = libdw -DIST_COMMON = $(euinclude_HEADERS) $(include_HEADERS) \ - $(noinst_HEADERS) $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - ChangeLog -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(euincludedir)" \ - "$(DESTDIR)$(includedir)" -libLIBRARIES_INSTALL = $(INSTALL_DATA) -LIBRARIES = $(lib_LIBRARIES) $(noinst_LIBRARIES) -AR = ar -ARFLAGS = cru -libdw_a_AR = $(AR) $(ARFLAGS) -libdw_a_LIBADD = -am_libdw_a_OBJECTS = dwarf_begin.$(OBJEXT) dwarf_begin_elf.$(OBJEXT) \ - dwarf_end.$(OBJEXT) dwarf_getelf.$(OBJEXT) \ - dwarf_getpubnames.$(OBJEXT) dwarf_getabbrev.$(OBJEXT) \ - dwarf_tag.$(OBJEXT) dwarf_error.$(OBJEXT) \ - dwarf_nextcu.$(OBJEXT) dwarf_diename.$(OBJEXT) \ - dwarf_offdie.$(OBJEXT) dwarf_attr.$(OBJEXT) \ - dwarf_formstring.$(OBJEXT) dwarf_abbrev_hash.$(OBJEXT) \ - dwarf_child.$(OBJEXT) dwarf_haschildren.$(OBJEXT) \ - dwarf_formaddr.$(OBJEXT) dwarf_formudata.$(OBJEXT) \ - dwarf_formsdata.$(OBJEXT) dwarf_lowpc.$(OBJEXT) \ - dwarf_highpc.$(OBJEXT) dwarf_formref.$(OBJEXT) \ - dwarf_siblingof.$(OBJEXT) dwarf_dieoffset.$(OBJEXT) \ - dwarf_cuoffset.$(OBJEXT) dwarf_hasattr.$(OBJEXT) \ - dwarf_hasform.$(OBJEXT) dwarf_whatform.$(OBJEXT) \ - dwarf_whatattr.$(OBJEXT) dwarf_bytesize.$(OBJEXT) \ - dwarf_arrayorder.$(OBJEXT) dwarf_bitsize.$(OBJEXT) \ - dwarf_bitoffset.$(OBJEXT) dwarf_srclang.$(OBJEXT) \ - dwarf_getabbrevtag.$(OBJEXT) dwarf_getabbrevcode.$(OBJEXT) \ - dwarf_abbrevhaschildren.$(OBJEXT) dwarf_getattrcnt.$(OBJEXT) \ - dwarf_getabbrevattr.$(OBJEXT) dwarf_getsrclines.$(OBJEXT) \ - dwarf_getsrc_die.$(OBJEXT) dwarf_linesrc.$(OBJEXT) \ - dwarf_lineno.$(OBJEXT) dwarf_lineaddr.$(OBJEXT) \ - dwarf_linecol.$(OBJEXT) dwarf_linebeginstatement.$(OBJEXT) \ - dwarf_lineendsequence.$(OBJEXT) dwarf_lineblock.$(OBJEXT) \ - dwarf_lineprologueend.$(OBJEXT) \ - dwarf_lineepiloguebegin.$(OBJEXT) dwarf_onesrcline.$(OBJEXT) \ - dwarf_formblock.$(OBJEXT) dwarf_getsrcfiles.$(OBJEXT) \ - dwarf_filesrc.$(OBJEXT) dwarf_getloclist.$(OBJEXT) \ - dwarf_getstring.$(OBJEXT) dwarf_offabbrev.$(OBJEXT) \ - dwarf_getaranges.$(OBJEXT) dwarf_onearange.$(OBJEXT) \ - dwarf_getarangeinfo.$(OBJEXT) dwarf_getarange_addr.$(OBJEXT) \ - dwarf_getattrs.$(OBJEXT) dwarf_formflag.$(OBJEXT) \ - dwarf_getmacros.$(OBJEXT) libdw_findcu.$(OBJEXT) \ - libdw_form.$(OBJEXT) libdw_alloc.$(OBJEXT) -libdw_a_OBJECTS = $(am_libdw_a_OBJECTS) -libdw_pic_a_AR = $(AR) $(ARFLAGS) -libdw_pic_a_LIBADD = -libdw_pic_a_OBJECTS = $(am_libdw_pic_a_OBJECTS) -am__EXEEXT_1 = libdw.so$(EXEEXT) -PROGRAMS = $(noinst_PROGRAMS) -am_libdw_so_OBJECTS = -libdw_so_OBJECTS = $(am_libdw_so_OBJECTS) -libdw_so_LDADD = $(LDADD) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(libdw_a_SOURCES) $(libdw_pic_a_SOURCES) \ - $(libdw_so_SOURCES) -DIST_SOURCES = $(libdw_a_SOURCES) $(libdw_pic_a_SOURCES) \ - $(libdw_so_SOURCES) -euincludeHEADERS_INSTALL = $(INSTALL_HEADER) -includeHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(euinclude_HEADERS) $(include_HEADERS) $(noinst_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run aclocal-1.9 -AMDEP_FALSE = # -AMDEP_TRUE = -AMTAR = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run tar -AUTOCONF = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoconf -AUTOHEADER = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoheader -AUTOMAKE = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run automake-1.9 -AWK = gawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -CPP = gcc -E -CPPFLAGS = -CYGPATH_W = echo -DATADIRNAME = ${prefix}/share -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DEPDIR = .deps -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = grep -E -EXEEXT = -GMSGFMT = /usr/bin/msgfmt -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s -INTLLIBS = -LDFLAGS = -LEX = flex -LEXLIB = -lfl -LEX_OUTPUT_ROOT = lex.yy -LIBICONV = -liconv -LIBINTL = -LIBOBJS = -LIBS = -LOCALEDIR = ${prefix}/share -LTLIBICONV = -liconv -LTLIBINTL = -LTLIBOBJS = -MAKEINFO = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run makeinfo -MKINSTALLDIRS = config/mkinstalldirs -MSGFMT = /usr/bin/msgfmt -MSGMERGE = /usr/bin/msgmerge -MUDFLAP_FALSE = -MUDFLAP_TRUE = # -NATIVE_LD_FALSE = -NATIVE_LD_TRUE = # -OBJEXT = o -PACKAGE = elfutils -PACKAGE_BUGREPORT = http://bugzilla.redhat.com/bugzilla/ -PACKAGE_NAME = Red Hat elfutils -PACKAGE_STRING = Red Hat elfutils 0.97 -PACKAGE_TARNAME = elfutils -PACKAGE_VERSION = 0.97 -PATH_SEPARATOR = : -POSUB = po -RANLIB = ranlib -SET_MAKE = -SHELL = /bin/sh -STRIP = -USE_NLS = yes -VERSION = 1 -XGETTEXT = /usr/bin/xgettext -YACC = bison -y -ac_ct_CC = gcc -ac_ct_RANLIB = ranlib -ac_ct_STRIP = -am__fastdepCC_FALSE = # -am__fastdepCC_TRUE = -am__include = include -am__leading_dot = . -am__quote = -am__tar = ${AMTAR} chof - "$$tardir" -am__untar = ${AMTAR} xf - -base_cpu = none -bindir = ${exec_prefix}/bin -build = i686-pc-linux-gnu -build_alias = -build_cpu = i686 -build_os = linux-gnu -build_vendor = pc -datadir = ${prefix}/share -exec_prefix = ${prefix} -host = i686-pc-linux-gnu -host_alias = -host_cpu = i686 -host_os = linux-gnu -host_vendor = pc -includedir = ${prefix}/include -infodir = ${prefix}/info -install_sh = /work/elfutils/stock/elfutils-0.97/config/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localstatedir = ${prefix}/var -mandir = ${prefix}/man -mkdir_p = mkdir -p -- -oldincludedir = /usr/include -prefix = /work/elfutils/google/linux-install-elfutils-0.97/ -program_transform_name = s,x,x, -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -sysconfdir = ${prefix}/etc -target_alias = -AM_CFLAGS = -Wall -Werror -Wshadow -std=gnu99 -#AM_CFLAGS = -Wall -Wshadow -std=gnu99 -INCLUDES = -I. -I$(srcdir) -I$(srcdir)/../libelf -I.. -I$(srcdir)/../lib -lib_LIBRARIES = libdw.a -noinst_LIBRARIES = libdw_pic.a -include_HEADERS = dwarf.h -euincludedir = ${includedir}/elfutils -euinclude_HEADERS = libdw.h -libdw_a_SOURCES = dwarf_begin.c dwarf_begin_elf.c dwarf_end.c dwarf_getelf.c \ - dwarf_getpubnames.c dwarf_getabbrev.c dwarf_tag.c \ - dwarf_error.c dwarf_nextcu.c dwarf_diename.c dwarf_offdie.c \ - dwarf_attr.c dwarf_formstring.c dwarf_abbrev_hash.c \ - dwarf_child.c dwarf_haschildren.c dwarf_formaddr.c \ - dwarf_formudata.c dwarf_formsdata.c dwarf_lowpc.c \ - dwarf_highpc.c dwarf_formref.c dwarf_siblingof.c \ - dwarf_dieoffset.c dwarf_cuoffset.c dwarf_hasattr.c \ - dwarf_hasform.c dwarf_whatform.c dwarf_whatattr.c \ - dwarf_bytesize.c dwarf_arrayorder.c dwarf_bitsize.c \ - dwarf_bitoffset.c dwarf_srclang.c dwarf_getabbrevtag.c \ - dwarf_getabbrevcode.c dwarf_abbrevhaschildren.c \ - dwarf_getattrcnt.c dwarf_getabbrevattr.c \ - dwarf_getsrclines.c dwarf_getsrc_die.c \ - dwarf_linesrc.c dwarf_lineno.c dwarf_lineaddr.c \ - dwarf_linecol.c dwarf_linebeginstatement.c \ - dwarf_lineendsequence.c dwarf_lineblock.c \ - dwarf_lineprologueend.c dwarf_lineepiloguebegin.c \ - dwarf_onesrcline.c dwarf_formblock.c \ - dwarf_getsrcfiles.c dwarf_filesrc.c \ - dwarf_getloclist.c dwarf_getstring.c dwarf_offabbrev.c \ - dwarf_getaranges.c dwarf_onearange.c dwarf_getarangeinfo.c \ - dwarf_getarange_addr.c dwarf_getattrs.c dwarf_formflag.c \ - dwarf_getmacros.c \ - libdw_findcu.c libdw_form.c libdw_alloc.c - -libdw_pic_a_SOURCES = -am_libdw_pic_a_OBJECTS = $(libdw_a_SOURCES:.c=.os) -libdw_so_SOURCES = -noinst_HEADERS = libdwP.h memory-access.h dwarf_abbrev_hash.h -EXTRA_DIST = libdw.map -CLEANFILES = $(am_libdw_pic_a_OBJECTS) -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits libdw/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits libdw/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -install-libLIBRARIES: $(lib_LIBRARIES) - @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - f=$(am__strip_dir) \ - echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ - $(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ - else :; fi; \ - done - @$(POST_INSTALL) - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - p=$(am__strip_dir) \ - echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \ - $(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \ - else :; fi; \ - done - -uninstall-libLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - p=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \ - rm -f "$(DESTDIR)$(libdir)/$$p"; \ - done - -clean-libLIBRARIES: - -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libdw.a: $(libdw_a_OBJECTS) $(libdw_a_DEPENDENCIES) - -rm -f libdw.a - $(libdw_a_AR) libdw.a $(libdw_a_OBJECTS) $(libdw_a_LIBADD) - $(RANLIB) libdw.a -libdw_pic.a: $(libdw_pic_a_OBJECTS) $(libdw_pic_a_DEPENDENCIES) - -rm -f libdw_pic.a - $(libdw_pic_a_AR) libdw_pic.a $(libdw_pic_a_OBJECTS) $(libdw_pic_a_LIBADD) - $(RANLIB) libdw_pic.a - -clean-noinstPROGRAMS: - -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) -#libdw.so$(EXEEXT): $(libdw_so_OBJECTS) $(libdw_so_DEPENDENCIES) -# @rm -f libdw.so$(EXEEXT) -# $(LINK) $(libdw_so_LDFLAGS) $(libdw_so_OBJECTS) $(libdw_so_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -include ./$(DEPDIR)/dwarf_abbrev_hash.Po -include ./$(DEPDIR)/dwarf_abbrevhaschildren.Po -include ./$(DEPDIR)/dwarf_arrayorder.Po -include ./$(DEPDIR)/dwarf_attr.Po -include ./$(DEPDIR)/dwarf_begin.Po -include ./$(DEPDIR)/dwarf_begin_elf.Po -include ./$(DEPDIR)/dwarf_bitoffset.Po -include ./$(DEPDIR)/dwarf_bitsize.Po -include ./$(DEPDIR)/dwarf_bytesize.Po -include ./$(DEPDIR)/dwarf_child.Po -include ./$(DEPDIR)/dwarf_cuoffset.Po -include ./$(DEPDIR)/dwarf_diename.Po -include ./$(DEPDIR)/dwarf_dieoffset.Po -include ./$(DEPDIR)/dwarf_end.Po -include ./$(DEPDIR)/dwarf_error.Po -include ./$(DEPDIR)/dwarf_filesrc.Po -include ./$(DEPDIR)/dwarf_formaddr.Po -include ./$(DEPDIR)/dwarf_formblock.Po -include ./$(DEPDIR)/dwarf_formflag.Po -include ./$(DEPDIR)/dwarf_formref.Po -include ./$(DEPDIR)/dwarf_formsdata.Po -include ./$(DEPDIR)/dwarf_formstring.Po -include ./$(DEPDIR)/dwarf_formudata.Po -include ./$(DEPDIR)/dwarf_getabbrev.Po -include ./$(DEPDIR)/dwarf_getabbrevattr.Po -include ./$(DEPDIR)/dwarf_getabbrevcode.Po -include ./$(DEPDIR)/dwarf_getabbrevtag.Po -include ./$(DEPDIR)/dwarf_getarange_addr.Po -include ./$(DEPDIR)/dwarf_getarangeinfo.Po -include ./$(DEPDIR)/dwarf_getaranges.Po -include ./$(DEPDIR)/dwarf_getattrcnt.Po -include ./$(DEPDIR)/dwarf_getattrs.Po -include ./$(DEPDIR)/dwarf_getelf.Po -include ./$(DEPDIR)/dwarf_getloclist.Po -include ./$(DEPDIR)/dwarf_getmacros.Po -include ./$(DEPDIR)/dwarf_getpubnames.Po -include ./$(DEPDIR)/dwarf_getsrc_die.Po -include ./$(DEPDIR)/dwarf_getsrcfiles.Po -include ./$(DEPDIR)/dwarf_getsrclines.Po -include ./$(DEPDIR)/dwarf_getstring.Po -include ./$(DEPDIR)/dwarf_hasattr.Po -include ./$(DEPDIR)/dwarf_haschildren.Po -include ./$(DEPDIR)/dwarf_hasform.Po -include ./$(DEPDIR)/dwarf_highpc.Po -include ./$(DEPDIR)/dwarf_lineaddr.Po -include ./$(DEPDIR)/dwarf_linebeginstatement.Po -include ./$(DEPDIR)/dwarf_lineblock.Po -include ./$(DEPDIR)/dwarf_linecol.Po -include ./$(DEPDIR)/dwarf_lineendsequence.Po -include ./$(DEPDIR)/dwarf_lineepiloguebegin.Po -include ./$(DEPDIR)/dwarf_lineno.Po -include ./$(DEPDIR)/dwarf_lineprologueend.Po -include ./$(DEPDIR)/dwarf_linesrc.Po -include ./$(DEPDIR)/dwarf_lowpc.Po -include ./$(DEPDIR)/dwarf_nextcu.Po -include ./$(DEPDIR)/dwarf_offabbrev.Po -include ./$(DEPDIR)/dwarf_offdie.Po -include ./$(DEPDIR)/dwarf_onearange.Po -include ./$(DEPDIR)/dwarf_onesrcline.Po -include ./$(DEPDIR)/dwarf_siblingof.Po -include ./$(DEPDIR)/dwarf_srclang.Po -include ./$(DEPDIR)/dwarf_tag.Po -include ./$(DEPDIR)/dwarf_whatattr.Po -include ./$(DEPDIR)/dwarf_whatform.Po -include ./$(DEPDIR)/libdw_alloc.Po -include ./$(DEPDIR)/libdw_findcu.Po -include ./$(DEPDIR)/libdw_form.Po - -.c.o: - if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ - then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c $< - -.c.obj: - if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ - then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c `$(CYGPATH_W) '$<'` -uninstall-info-am: -install-euincludeHEADERS: $(euinclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(euincludedir)" || $(mkdir_p) "$(DESTDIR)$(euincludedir)" - @list='$(euinclude_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(euincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(euincludedir)/$$f'"; \ - $(euincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(euincludedir)/$$f"; \ - done - -uninstall-euincludeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(euinclude_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(euincludedir)/$$f'"; \ - rm -f "$(DESTDIR)$(euincludedir)/$$f"; \ - done -install-includeHEADERS: $(include_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(includedir)" || $(mkdir_p) "$(DESTDIR)$(includedir)" - @list='$(include_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \ - $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \ - done - -uninstall-includeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(include_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \ - rm -f "$(DESTDIR)$(includedir)/$$f"; \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(euincludedir)" "$(DESTDIR)$(includedir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ - done -#install: install-am -install-exec: install-exec-am -install-data: install-data-am -#uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libLIBRARIES clean-noinstLIBRARIES \ - clean-noinstPROGRAMS mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-euincludeHEADERS install-includeHEADERS - -install-exec-am: install-libLIBRARIES - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-euincludeHEADERS uninstall-includeHEADERS \ - uninstall-info-am uninstall-libLIBRARIES - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libLIBRARIES clean-noinstLIBRARIES clean-noinstPROGRAMS \ - ctags distclean distclean-compile distclean-generic \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am \ - install-euincludeHEADERS install-exec install-exec-am \ - install-includeHEADERS install-info install-info-am \ - install-libLIBRARIES install-man install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-euincludeHEADERS \ - uninstall-includeHEADERS uninstall-info-am \ - uninstall-libLIBRARIES - -libdw.so: libdw_pic.a $(srcdir)/libdw.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libdw.map,--no-undefined \ - -Wl,--soname,$@.$(VERSION),-z,defs \ - ../libelf/libelf.so - ln -fs $@ $@.$(VERSION) - -%.os: %.c %.o - if $(COMPILE) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \ - -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \ - then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \ - rm -f "$(DEPDIR)/$*.Tpo"; \ - else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ - fi - -install: install-am libdw.so - $(mkinstalldirs) $(DESTDIR)$(libdir) - $(INSTALL_PROGRAM) libdw.so $(DESTDIR)$(libdir)/libdw-$(PACKAGE_VERSION).so - ln -fs libdw-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/libdw.so.$(VERSION) - ln -fs libdw.so.$(VERSION) $(DESTDIR)$(libdir)/libdw.so - -uninstall: uninstall-am - rm -f $(DESTDIR)$(libdir)/libdw-$(PACKAGE_VERSION).so - rm -f $(DESTDIR)$(libdir)/libdw.so.$(VERSION) - rm -f $(DESTDIR)$(libdir)/libdw.so - rmdir --ignore-fail-on-non-empty $(DESTDIR)$(includedir)/elfutils -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/libdw/Makefile.am b/libdw/Makefile.am deleted file mode 100644 index e452b43e..00000000 --- a/libdw/Makefile.am +++ /dev/null @@ -1,100 +0,0 @@ -## Process this file with automake to create Makefile.in -## Makefile for libdw. -## -## Copyright (C) 2002, 2003, 2004 Red Hat, Inc. -## -## This program is Open Source software; you can redistribute it and/or -## modify it under the terms of the Open Software License version 1.0 as -## published by the Open Source Initiative. -## -## You should have received a copy of the Open Software License along -## with this program; if not, you may obtain a copy of the Open Software -## License version 1.0 from http://www.opensource.org/licenses/osl.php or -## by writing the Open Source Initiative c/o Lawrence Rosen, Esq., -## 3001 King Ranch Road, Ukiah, CA 95482. -## -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -if MUDFLAP -AM_CFLAGS = -Wall -Wshadow -std=gnu99 -else -AM_CFLAGS = -Wall -Werror -Wshadow -std=gnu99 -endif -INCLUDES = -I. -I$(srcdir) -I$(srcdir)/../libelf -I.. -I$(srcdir)/../lib -VERSION = 1 - -lib_LIBRARIES = libdw.a -if !MUDFLAP -noinst_LIBRARIES = libdw_pic.a -noinst_PROGRAMS = $(noinst_LIBRARIES:_pic.a=.so) -endif - -include_HEADERS = dwarf.h -euincludedir = ${includedir}/elfutils -euinclude_HEADERS = libdw.h - -libdw_a_SOURCES = dwarf_begin.c dwarf_begin_elf.c dwarf_end.c dwarf_getelf.c \ - dwarf_getpubnames.c dwarf_getabbrev.c dwarf_tag.c \ - dwarf_error.c dwarf_nextcu.c dwarf_diename.c dwarf_offdie.c \ - dwarf_attr.c dwarf_formstring.c dwarf_abbrev_hash.c \ - dwarf_child.c dwarf_haschildren.c dwarf_formaddr.c \ - dwarf_formudata.c dwarf_formsdata.c dwarf_lowpc.c \ - dwarf_highpc.c dwarf_formref.c dwarf_siblingof.c \ - dwarf_dieoffset.c dwarf_cuoffset.c dwarf_hasattr.c \ - dwarf_hasform.c dwarf_whatform.c dwarf_whatattr.c \ - dwarf_bytesize.c dwarf_arrayorder.c dwarf_bitsize.c \ - dwarf_bitoffset.c dwarf_srclang.c dwarf_getabbrevtag.c \ - dwarf_getabbrevcode.c dwarf_abbrevhaschildren.c \ - dwarf_getattrcnt.c dwarf_getabbrevattr.c \ - dwarf_getsrclines.c dwarf_getsrc_die.c \ - dwarf_linesrc.c dwarf_lineno.c dwarf_lineaddr.c \ - dwarf_linecol.c dwarf_linebeginstatement.c \ - dwarf_lineendsequence.c dwarf_lineblock.c \ - dwarf_lineprologueend.c dwarf_lineepiloguebegin.c \ - dwarf_onesrcline.c dwarf_formblock.c \ - dwarf_getsrcfiles.c dwarf_filesrc.c \ - dwarf_getloclist.c dwarf_getstring.c dwarf_offabbrev.c \ - dwarf_getaranges.c dwarf_onearange.c dwarf_getarangeinfo.c \ - dwarf_getarange_addr.c dwarf_getattrs.c dwarf_formflag.c \ - dwarf_getmacros.c \ - libdw_findcu.c libdw_form.c libdw_alloc.c - - -if !MUDFLAP -libdw_pic_a_SOURCES = -am_libdw_pic_a_OBJECTS = $(libdw_a_SOURCES:.c=.os) - -libdw_so_SOURCES = -libdw.so: libdw_pic.a $(srcdir)/libdw.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libdw.map,--no-undefined \ - -Wl,--soname,$@.$(VERSION),-z,defs \ - ../libelf/libelf.so - ln -fs $@ $@.$(VERSION) - - -%.os: %.c %.o - if $(COMPILE) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \ - -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \ - then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \ - rm -f "$(DEPDIR)/$*.Tpo"; \ - else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ - fi - -install: install-am libdw.so - $(mkinstalldirs) $(DESTDIR)$(libdir) - $(INSTALL_PROGRAM) libdw.so $(DESTDIR)$(libdir)/libdw-$(PACKAGE_VERSION).so - ln -fs libdw-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/libdw.so.$(VERSION) - ln -fs libdw.so.$(VERSION) $(DESTDIR)$(libdir)/libdw.so - -uninstall: uninstall-am - rm -f $(DESTDIR)$(libdir)/libdw-$(PACKAGE_VERSION).so - rm -f $(DESTDIR)$(libdir)/libdw.so.$(VERSION) - rm -f $(DESTDIR)$(libdir)/libdw.so - rmdir --ignore-fail-on-non-empty $(DESTDIR)$(includedir)/elfutils -endif - -noinst_HEADERS = libdwP.h memory-access.h dwarf_abbrev_hash.h - -EXTRA_DIST = libdw.map - -CLEANFILES = $(am_libdw_pic_a_OBJECTS) diff --git a/libdw/Makefile.in b/libdw/Makefile.in deleted file mode 100644 index 9ceb5d51..00000000 --- a/libdw/Makefile.in +++ /dev/null @@ -1,681 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - - -SOURCES = $(libdw_a_SOURCES) $(libdw_pic_a_SOURCES) $(libdw_so_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -@MUDFLAP_FALSE@noinst_PROGRAMS = $(am__EXEEXT_1) -@MUDFLAP_TRUE@am_libdw_pic_a_OBJECTS = -subdir = libdw -DIST_COMMON = $(euinclude_HEADERS) $(include_HEADERS) \ - $(noinst_HEADERS) $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - ChangeLog -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(euincludedir)" \ - "$(DESTDIR)$(includedir)" -libLIBRARIES_INSTALL = $(INSTALL_DATA) -LIBRARIES = $(lib_LIBRARIES) $(noinst_LIBRARIES) -AR = ar -ARFLAGS = cru -libdw_a_AR = $(AR) $(ARFLAGS) -libdw_a_LIBADD = -am_libdw_a_OBJECTS = dwarf_begin.$(OBJEXT) dwarf_begin_elf.$(OBJEXT) \ - dwarf_end.$(OBJEXT) dwarf_getelf.$(OBJEXT) \ - dwarf_getpubnames.$(OBJEXT) dwarf_getabbrev.$(OBJEXT) \ - dwarf_tag.$(OBJEXT) dwarf_error.$(OBJEXT) \ - dwarf_nextcu.$(OBJEXT) dwarf_diename.$(OBJEXT) \ - dwarf_offdie.$(OBJEXT) dwarf_attr.$(OBJEXT) \ - dwarf_formstring.$(OBJEXT) dwarf_abbrev_hash.$(OBJEXT) \ - dwarf_child.$(OBJEXT) dwarf_haschildren.$(OBJEXT) \ - dwarf_formaddr.$(OBJEXT) dwarf_formudata.$(OBJEXT) \ - dwarf_formsdata.$(OBJEXT) dwarf_lowpc.$(OBJEXT) \ - dwarf_highpc.$(OBJEXT) dwarf_formref.$(OBJEXT) \ - dwarf_siblingof.$(OBJEXT) dwarf_dieoffset.$(OBJEXT) \ - dwarf_cuoffset.$(OBJEXT) dwarf_hasattr.$(OBJEXT) \ - dwarf_hasform.$(OBJEXT) dwarf_whatform.$(OBJEXT) \ - dwarf_whatattr.$(OBJEXT) dwarf_bytesize.$(OBJEXT) \ - dwarf_arrayorder.$(OBJEXT) dwarf_bitsize.$(OBJEXT) \ - dwarf_bitoffset.$(OBJEXT) dwarf_srclang.$(OBJEXT) \ - dwarf_getabbrevtag.$(OBJEXT) dwarf_getabbrevcode.$(OBJEXT) \ - dwarf_abbrevhaschildren.$(OBJEXT) dwarf_getattrcnt.$(OBJEXT) \ - dwarf_getabbrevattr.$(OBJEXT) dwarf_getsrclines.$(OBJEXT) \ - dwarf_getsrc_die.$(OBJEXT) dwarf_linesrc.$(OBJEXT) \ - dwarf_lineno.$(OBJEXT) dwarf_lineaddr.$(OBJEXT) \ - dwarf_linecol.$(OBJEXT) dwarf_linebeginstatement.$(OBJEXT) \ - dwarf_lineendsequence.$(OBJEXT) dwarf_lineblock.$(OBJEXT) \ - dwarf_lineprologueend.$(OBJEXT) \ - dwarf_lineepiloguebegin.$(OBJEXT) dwarf_onesrcline.$(OBJEXT) \ - dwarf_formblock.$(OBJEXT) dwarf_getsrcfiles.$(OBJEXT) \ - dwarf_filesrc.$(OBJEXT) dwarf_getloclist.$(OBJEXT) \ - dwarf_getstring.$(OBJEXT) dwarf_offabbrev.$(OBJEXT) \ - dwarf_getaranges.$(OBJEXT) dwarf_onearange.$(OBJEXT) \ - dwarf_getarangeinfo.$(OBJEXT) dwarf_getarange_addr.$(OBJEXT) \ - dwarf_getattrs.$(OBJEXT) dwarf_formflag.$(OBJEXT) \ - dwarf_getmacros.$(OBJEXT) libdw_findcu.$(OBJEXT) \ - libdw_form.$(OBJEXT) libdw_alloc.$(OBJEXT) -libdw_a_OBJECTS = $(am_libdw_a_OBJECTS) -libdw_pic_a_AR = $(AR) $(ARFLAGS) -libdw_pic_a_LIBADD = -libdw_pic_a_OBJECTS = $(am_libdw_pic_a_OBJECTS) -@MUDFLAP_FALSE@am__EXEEXT_1 = libdw.so$(EXEEXT) -PROGRAMS = $(noinst_PROGRAMS) -am_libdw_so_OBJECTS = -libdw_so_OBJECTS = $(am_libdw_so_OBJECTS) -libdw_so_LDADD = $(LDADD) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(libdw_a_SOURCES) $(libdw_pic_a_SOURCES) \ - $(libdw_so_SOURCES) -DIST_SOURCES = $(libdw_a_SOURCES) $(libdw_pic_a_SOURCES) \ - $(libdw_so_SOURCES) -euincludeHEADERS_INSTALL = $(INSTALL_HEADER) -includeHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(euinclude_HEADERS) $(include_HEADERS) $(noinst_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DATADIRNAME = @DATADIRNAME@ -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DEPDIR = @DEPDIR@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -GMSGFMT = @GMSGFMT@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTLLIBS = @INTLLIBS@ -LDFLAGS = @LDFLAGS@ -LEX = @LEX@ -LEXLIB = @LEXLIB@ -LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LOCALEDIR = @LOCALEDIR@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -MSGMERGE = @MSGMERGE@ -MUDFLAP_FALSE = @MUDFLAP_FALSE@ -MUDFLAP_TRUE = @MUDFLAP_TRUE@ -NATIVE_LD_FALSE = @NATIVE_LD_FALSE@ -NATIVE_LD_TRUE = @NATIVE_LD_TRUE@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USE_NLS = @USE_NLS@ -VERSION = 1 -XGETTEXT = @XGETTEXT@ -YACC = @YACC@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -base_cpu = @base_cpu@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -datadir = @datadir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -@MUDFLAP_FALSE@AM_CFLAGS = -Wall -Werror -Wshadow -std=gnu99 -@MUDFLAP_TRUE@AM_CFLAGS = -Wall -Wshadow -std=gnu99 -INCLUDES = -I. -I$(srcdir) -I$(srcdir)/../libelf -I.. -I$(srcdir)/../lib -lib_LIBRARIES = libdw.a -@MUDFLAP_FALSE@noinst_LIBRARIES = libdw_pic.a -include_HEADERS = dwarf.h -euincludedir = ${includedir}/elfutils -euinclude_HEADERS = libdw.h -libdw_a_SOURCES = dwarf_begin.c dwarf_begin_elf.c dwarf_end.c dwarf_getelf.c \ - dwarf_getpubnames.c dwarf_getabbrev.c dwarf_tag.c \ - dwarf_error.c dwarf_nextcu.c dwarf_diename.c dwarf_offdie.c \ - dwarf_attr.c dwarf_formstring.c dwarf_abbrev_hash.c \ - dwarf_child.c dwarf_haschildren.c dwarf_formaddr.c \ - dwarf_formudata.c dwarf_formsdata.c dwarf_lowpc.c \ - dwarf_highpc.c dwarf_formref.c dwarf_siblingof.c \ - dwarf_dieoffset.c dwarf_cuoffset.c dwarf_hasattr.c \ - dwarf_hasform.c dwarf_whatform.c dwarf_whatattr.c \ - dwarf_bytesize.c dwarf_arrayorder.c dwarf_bitsize.c \ - dwarf_bitoffset.c dwarf_srclang.c dwarf_getabbrevtag.c \ - dwarf_getabbrevcode.c dwarf_abbrevhaschildren.c \ - dwarf_getattrcnt.c dwarf_getabbrevattr.c \ - dwarf_getsrclines.c dwarf_getsrc_die.c \ - dwarf_linesrc.c dwarf_lineno.c dwarf_lineaddr.c \ - dwarf_linecol.c dwarf_linebeginstatement.c \ - dwarf_lineendsequence.c dwarf_lineblock.c \ - dwarf_lineprologueend.c dwarf_lineepiloguebegin.c \ - dwarf_onesrcline.c dwarf_formblock.c \ - dwarf_getsrcfiles.c dwarf_filesrc.c \ - dwarf_getloclist.c dwarf_getstring.c dwarf_offabbrev.c \ - dwarf_getaranges.c dwarf_onearange.c dwarf_getarangeinfo.c \ - dwarf_getarange_addr.c dwarf_getattrs.c dwarf_formflag.c \ - dwarf_getmacros.c \ - libdw_findcu.c libdw_form.c libdw_alloc.c - -@MUDFLAP_FALSE@libdw_pic_a_SOURCES = -@MUDFLAP_FALSE@am_libdw_pic_a_OBJECTS = $(libdw_a_SOURCES:.c=.os) -@MUDFLAP_FALSE@libdw_so_SOURCES = -noinst_HEADERS = libdwP.h memory-access.h dwarf_abbrev_hash.h -EXTRA_DIST = libdw.map -CLEANFILES = $(am_libdw_pic_a_OBJECTS) -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits libdw/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits libdw/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -install-libLIBRARIES: $(lib_LIBRARIES) - @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - f=$(am__strip_dir) \ - echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ - $(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ - else :; fi; \ - done - @$(POST_INSTALL) - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - p=$(am__strip_dir) \ - echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \ - $(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \ - else :; fi; \ - done - -uninstall-libLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - p=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \ - rm -f "$(DESTDIR)$(libdir)/$$p"; \ - done - -clean-libLIBRARIES: - -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libdw.a: $(libdw_a_OBJECTS) $(libdw_a_DEPENDENCIES) - -rm -f libdw.a - $(libdw_a_AR) libdw.a $(libdw_a_OBJECTS) $(libdw_a_LIBADD) - $(RANLIB) libdw.a -libdw_pic.a: $(libdw_pic_a_OBJECTS) $(libdw_pic_a_DEPENDENCIES) - -rm -f libdw_pic.a - $(libdw_pic_a_AR) libdw_pic.a $(libdw_pic_a_OBJECTS) $(libdw_pic_a_LIBADD) - $(RANLIB) libdw_pic.a - -clean-noinstPROGRAMS: - -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) -@MUDFLAP_TRUE@libdw.so$(EXEEXT): $(libdw_so_OBJECTS) $(libdw_so_DEPENDENCIES) -@MUDFLAP_TRUE@ @rm -f libdw.so$(EXEEXT) -@MUDFLAP_TRUE@ $(LINK) $(libdw_so_LDFLAGS) $(libdw_so_OBJECTS) $(libdw_so_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_abbrev_hash.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_abbrevhaschildren.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_arrayorder.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_attr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_begin.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_begin_elf.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_bitoffset.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_bitsize.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_bytesize.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_child.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_cuoffset.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_diename.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_dieoffset.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_end.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_error.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_filesrc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_formaddr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_formblock.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_formflag.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_formref.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_formsdata.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_formstring.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_formudata.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getabbrev.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getabbrevattr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getabbrevcode.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getabbrevtag.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getarange_addr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getarangeinfo.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getaranges.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getattrcnt.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getattrs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getelf.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getloclist.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getmacros.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getpubnames.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getsrc_die.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getsrcfiles.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getsrclines.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_getstring.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_hasattr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_haschildren.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_hasform.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_highpc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_lineaddr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_linebeginstatement.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_lineblock.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_linecol.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_lineendsequence.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_lineepiloguebegin.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_lineno.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_lineprologueend.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_linesrc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_lowpc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_nextcu.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_offabbrev.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_offdie.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_onearange.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_onesrcline.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_siblingof.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_srclang.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_tag.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_whatattr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_whatform.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdw_alloc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdw_findcu.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdw_form.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` -uninstall-info-am: -install-euincludeHEADERS: $(euinclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(euincludedir)" || $(mkdir_p) "$(DESTDIR)$(euincludedir)" - @list='$(euinclude_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(euincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(euincludedir)/$$f'"; \ - $(euincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(euincludedir)/$$f"; \ - done - -uninstall-euincludeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(euinclude_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(euincludedir)/$$f'"; \ - rm -f "$(DESTDIR)$(euincludedir)/$$f"; \ - done -install-includeHEADERS: $(include_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(includedir)" || $(mkdir_p) "$(DESTDIR)$(includedir)" - @list='$(include_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \ - $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \ - done - -uninstall-includeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(include_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \ - rm -f "$(DESTDIR)$(includedir)/$$f"; \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(euincludedir)" "$(DESTDIR)$(includedir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ - done -@MUDFLAP_TRUE@install: install-am -install-exec: install-exec-am -install-data: install-data-am -@MUDFLAP_TRUE@uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libLIBRARIES clean-noinstLIBRARIES \ - clean-noinstPROGRAMS mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-euincludeHEADERS install-includeHEADERS - -install-exec-am: install-libLIBRARIES - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-euincludeHEADERS uninstall-includeHEADERS \ - uninstall-info-am uninstall-libLIBRARIES - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libLIBRARIES clean-noinstLIBRARIES clean-noinstPROGRAMS \ - ctags distclean distclean-compile distclean-generic \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am \ - install-euincludeHEADERS install-exec install-exec-am \ - install-includeHEADERS install-info install-info-am \ - install-libLIBRARIES install-man install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-euincludeHEADERS \ - uninstall-includeHEADERS uninstall-info-am \ - uninstall-libLIBRARIES - -@MUDFLAP_FALSE@libdw.so: libdw_pic.a $(srcdir)/libdw.map -@MUDFLAP_FALSE@ $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ -@MUDFLAP_FALSE@ -Wl,--version-script,$(srcdir)/libdw.map,--no-undefined \ -@MUDFLAP_FALSE@ -Wl,--soname,$@.$(VERSION),-z,defs \ -@MUDFLAP_FALSE@ ../libelf/libelf.so -@MUDFLAP_FALSE@ ln -fs $@ $@.$(VERSION) - -@MUDFLAP_FALSE@%.os: %.c %.o -@MUDFLAP_FALSE@ if $(COMPILE) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \ -@MUDFLAP_FALSE@ -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \ -@MUDFLAP_FALSE@ then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \ -@MUDFLAP_FALSE@ rm -f "$(DEPDIR)/$*.Tpo"; \ -@MUDFLAP_FALSE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ -@MUDFLAP_FALSE@ fi - -@MUDFLAP_FALSE@install: install-am libdw.so -@MUDFLAP_FALSE@ $(mkinstalldirs) $(DESTDIR)$(libdir) -@MUDFLAP_FALSE@ $(INSTALL_PROGRAM) libdw.so $(DESTDIR)$(libdir)/libdw-$(PACKAGE_VERSION).so -@MUDFLAP_FALSE@ ln -fs libdw-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/libdw.so.$(VERSION) -@MUDFLAP_FALSE@ ln -fs libdw.so.$(VERSION) $(DESTDIR)$(libdir)/libdw.so - -@MUDFLAP_FALSE@uninstall: uninstall-am -@MUDFLAP_FALSE@ rm -f $(DESTDIR)$(libdir)/libdw-$(PACKAGE_VERSION).so -@MUDFLAP_FALSE@ rm -f $(DESTDIR)$(libdir)/libdw.so.$(VERSION) -@MUDFLAP_FALSE@ rm -f $(DESTDIR)$(libdir)/libdw.so -@MUDFLAP_FALSE@ rmdir --ignore-fail-on-non-empty $(DESTDIR)$(includedir)/elfutils -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/libdw/dwarf.h b/libdw/dwarf.h deleted file mode 100644 index 69be35a7..00000000 --- a/libdw/dwarf.h +++ /dev/null @@ -1,554 +0,0 @@ -/* This file defines standard DWARF types, structures, and macros. - Copyright (C) 2000, 2002 Red Hat, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef _DWARF_H -#define _DWARF_H 1 - -/* DWARF tags. */ -enum - { - DW_TAG_array_type = 0x01, - DW_TAG_class_type = 0x02, - DW_TAG_entry_point = 0x03, - DW_TAG_enumeration_type = 0x04, - DW_TAG_formal_parameter = 0x05, - DW_TAG_imported_declaration = 0x08, - DW_TAG_label = 0x0a, - DW_TAG_lexical_block = 0x0b, - DW_TAG_member = 0x0d, - DW_TAG_pointer_type = 0x0f, - DW_TAG_reference_type = 0x10, - DW_TAG_compile_unit = 0x11, - DW_TAG_string_type = 0x12, - DW_TAG_structure_type = 0x13, - DW_TAG_subroutine_type = 0x15, - DW_TAG_typedef = 0x16, - DW_TAG_union_type = 0x17, - DW_TAG_unspecified_parameters = 0x18, - DW_TAG_variant = 0x19, - DW_TAG_common_block = 0x1a, - DW_TAG_common_inclusion = 0x1b, - DW_TAG_inheritance = 0x1c, - DW_TAG_inlined_subroutine = 0x1d, - DW_TAG_module = 0x1e, - DW_TAG_ptr_to_member_type = 0x1f, - DW_TAG_set_type = 0x20, - DW_TAG_subrange_type = 0x21, - DW_TAG_with_stmt = 0x22, - DW_TAG_access_declaration = 0x23, - DW_TAG_base_type = 0x24, - DW_TAG_catch_block = 0x25, - DW_TAG_const_type = 0x26, - DW_TAG_constant = 0x27, - DW_TAG_enumerator = 0x28, - DW_TAG_file_type = 0x29, - DW_TAG_friend = 0x2a, - DW_TAG_namelist = 0x2b, - DW_TAG_namelist_item = 0x2c, - DW_TAG_packed_type = 0x2d, - DW_TAG_subprogram = 0x2e, - DW_TAG_template_type_param = 0x2f, - DW_TAG_template_value_param = 0x30, - DW_TAG_thrown_type = 0x31, - DW_TAG_try_block = 0x32, - DW_TAG_variant_part = 0x33, - DW_TAG_variable = 0x34, - DW_TAG_volatile_type = 0x35, - DW_TAG_lo_user = 0x4080, - DW_TAG_MIPS_loop = 0x4081, - DW_TAG_format_label = 0x4101, - DW_TAG_function_template = 0x4102, - DW_TAG_class_template = 0x4103, - DW_TAG_hi_user = 0xffff - }; - - -/* Children determination encodings. */ -enum - { - DW_CHILDREN_no = 0, - DW_CHILDREN_yes = 1 - }; - - -/* DWARF attributes encodings. */ -enum - { - DW_AT_sibling = 0x01, - DW_AT_location = 0x02, - DW_AT_name = 0x03, - DW_AT_ordering = 0x09, - DW_AT_subscr_data = 0x0a, - DW_AT_byte_size = 0x0b, - DW_AT_bit_offset = 0x0c, - DW_AT_bit_size = 0x0d, - DW_AT_element_list = 0x0f, - DW_AT_stmt_list = 0x10, - DW_AT_low_pc = 0x11, - DW_AT_high_pc = 0x12, - DW_AT_language = 0x13, - DW_AT_member = 0x14, - DW_AT_discr = 0x15, - DW_AT_discr_value = 0x16, - DW_AT_visibility = 0x17, - DW_AT_import = 0x18, - DW_AT_string_length = 0x19, - DW_AT_common_reference = 0x1a, - DW_AT_comp_dir = 0x1b, - DW_AT_const_value = 0x1c, - DW_AT_containing_type = 0x1d, - DW_AT_default_value = 0x1e, - DW_AT_inline = 0x20, - DW_AT_is_optional = 0x21, - DW_AT_lower_bound = 0x22, - DW_AT_producer = 0x25, - DW_AT_prototyped = 0x27, - DW_AT_return_addr = 0x2a, - DW_AT_start_scope = 0x2c, - DW_AT_stride_size = 0x2e, - DW_AT_upper_bound = 0x2f, - DW_AT_abstract_origin = 0x31, - DW_AT_accessibility = 0x32, - DW_AT_address_class = 0x33, - DW_AT_artificial = 0x34, - DW_AT_base_types = 0x35, - DW_AT_calling_convention = 0x36, - DW_AT_count = 0x37, - DW_AT_data_member_location = 0x38, - DW_AT_decl_column = 0x39, - DW_AT_decl_file = 0x3a, - DW_AT_decl_line = 0x3b, - DW_AT_declaration = 0x3c, - DW_AT_discr_list = 0x3d, - DW_AT_encoding = 0x3e, - DW_AT_external = 0x3f, - DW_AT_frame_base = 0x40, - DW_AT_friend = 0x41, - DW_AT_identifier_case = 0x42, - DW_AT_macro_info = 0x43, - DW_AT_namelist_items = 0x44, - DW_AT_priority = 0x45, - DW_AT_segment = 0x46, - DW_AT_specification = 0x47, - DW_AT_static_link = 0x48, - DW_AT_type = 0x49, - DW_AT_use_location = 0x4a, - DW_AT_variable_parameter = 0x4b, - DW_AT_virtuality = 0x4c, - DW_AT_vtable_elem_location = 0x4d, - DW_AT_lo_user = 0x2000, - DW_AT_MIPS_fde = 0x2001, - DW_AT_MIPS_loop_begin = 0x2002, - DW_AT_MIPS_tail_loop_begin = 0x2003, - DW_AT_MIPS_epilog_begin = 0x2004, - DW_AT_MIPS_loop_unroll_factor = 0x2005, - DW_AT_MIPS_software_pipeline_depth = 0x2006, - DW_AT_MIPS_linkage_name = 0x2007, - DW_AT_MIPS_stride = 0x2008, - DW_AT_MIPS_abstract_name = 0x2009, - DW_AT_MIPS_clone_origin = 0x200a, - DW_AT_MIPS_has_inlines = 0x200b, - DW_AT_MIPS_stride_byte = 0x200c, - DW_AT_MIPS_stride_elem = 0x200d, - DW_AT_MIPS_ptr_dopetype = 0x200e, - DW_AT_MIPS_allocatable_dopetype = 0x200f, - DW_AT_MIPS_assumed_shape_dopetype = 0x2010, - DW_AT_MIPS_assumed_size = 0x2011, - DW_AT_sf_names = 0x2101, - DW_AT_src_info = 0x2102, - DW_AT_mac_info = 0x2103, - DW_AT_src_coords = 0x2104, - DW_AT_body_begin = 0x2105, - DW_AT_body_end = 0x2106, - DW_AT_hi_user = 0x3fff - }; - - -/* DWARF form encodings. */ -enum - { - DW_FORM_addr = 0x01, - DW_FORM_block2 = 0x03, - DW_FORM_block4 = 0x04, - DW_FORM_data2 = 0x05, - DW_FORM_data4 = 0x06, - DW_FORM_data8 = 0x07, - DW_FORM_string = 0x08, - DW_FORM_block = 0x09, - DW_FORM_block1 = 0x0a, - DW_FORM_data1 = 0x0b, - DW_FORM_flag = 0x0c, - DW_FORM_sdata = 0x0d, - DW_FORM_strp = 0x0e, - DW_FORM_udata = 0x0f, - DW_FORM_ref_addr = 0x10, - DW_FORM_ref1 = 0x11, - DW_FORM_ref2 = 0x12, - DW_FORM_ref4 = 0x13, - DW_FORM_ref8 = 0x14, - DW_FORM_ref_udata = 0x15, - DW_FORM_indirect = 0x16 - }; - - -/* DWARF location operation encodings. */ -enum - { - DW_OP_addr = 0x03, /* Constant address. */ - DW_OP_deref = 0x06, - DW_OP_const1u = 0x08, /* Unsigned 1-byte constant. */ - DW_OP_const1s = 0x09, /* Signed 1-byte constant. */ - DW_OP_const2u = 0x0a, /* Unsigned 2-byte constant. */ - DW_OP_const2s = 0x0b, /* Signed 2-byte constant. */ - DW_OP_const4u = 0x0c, /* Unsigned 4-byte constant. */ - DW_OP_const4s = 0x0d, /* Signed 4-byte constant. */ - DW_OP_const8u = 0x0e, /* Unsigned 8-byte constant. */ - DW_OP_const8s = 0x0f, /* Signed 8-byte constant. */ - DW_OP_constu = 0x10, /* Unsigned LEB128 constant. */ - DW_OP_consts = 0x11, /* Signed LEB128 constant. */ - DW_OP_dup = 0x12, - DW_OP_drop = 0x13, - DW_OP_over = 0x14, - DW_OP_pick = 0x15, /* 1-byte stack index. */ - DW_OP_swap = 0x16, - DW_OP_rot = 0x17, - DW_OP_xderef = 0x18, - DW_OP_abs = 0x19, - DW_OP_and = 0x1a, - DW_OP_div = 0x1b, - DW_OP_minus = 0x1c, - DW_OP_mod = 0x1d, - DW_OP_mul = 0x1e, - DW_OP_neg = 0x1f, - DW_OP_not = 0x20, - DW_OP_or = 0x21, - DW_OP_plus = 0x22, - DW_OP_plus_uconst = 0x23, /* Unsigned LEB128 addend. */ - DW_OP_shl = 0x24, - DW_OP_shr = 0x25, - DW_OP_shra = 0x26, - DW_OP_xor = 0x27, - DW_OP_bra = 0x28, /* Signed 2-byte constant. */ - DW_OP_eq = 0x29, - DW_OP_ge = 0x2a, - DW_OP_gt = 0x2b, - DW_OP_le = 0x2c, - DW_OP_lt = 0x2d, - DW_OP_ne = 0x2e, - DW_OP_skip = 0x2f, /* Signed 2-byte constant. */ - DW_OP_lit0 = 0x30, /* Literal 0. */ - DW_OP_lit1 = 0x31, /* Literal 1. */ - DW_OP_lit2 = 0x32, /* Literal 2. */ - DW_OP_lit3 = 0x33, /* Literal 3. */ - DW_OP_lit4 = 0x34, /* Literal 4. */ - DW_OP_lit5 = 0x35, /* Literal 5. */ - DW_OP_lit6 = 0x36, /* Literal 6. */ - DW_OP_lit7 = 0x37, /* Literal 7. */ - DW_OP_lit8 = 0x38, /* Literal 8. */ - DW_OP_lit9 = 0x39, /* Literal 9. */ - DW_OP_lit10 = 0x3a, /* Literal 10. */ - DW_OP_lit11 = 0x3b, /* Literal 11. */ - DW_OP_lit12 = 0x3c, /* Literal 12. */ - DW_OP_lit13 = 0x3d, /* Literal 13. */ - DW_OP_lit14 = 0x3e, /* Literal 14. */ - DW_OP_lit15 = 0x3f, /* Literal 15. */ - DW_OP_lit16 = 0x40, /* Literal 16. */ - DW_OP_lit17 = 0x41, /* Literal 17. */ - DW_OP_lit18 = 0x42, /* Literal 18. */ - DW_OP_lit19 = 0x43, /* Literal 19. */ - DW_OP_lit20 = 0x44, /* Literal 20. */ - DW_OP_lit21 = 0x45, /* Literal 21. */ - DW_OP_lit22 = 0x46, /* Literal 22. */ - DW_OP_lit23 = 0x47, /* Literal 23. */ - DW_OP_lit24 = 0x48, /* Literal 24. */ - DW_OP_lit25 = 0x49, /* Literal 25. */ - DW_OP_lit26 = 0x4a, /* Literal 26. */ - DW_OP_lit27 = 0x4b, /* Literal 27. */ - DW_OP_lit28 = 0x4c, /* Literal 28. */ - DW_OP_lit29 = 0x4d, /* Literal 29. */ - DW_OP_lit30 = 0x4e, /* Literal 30. */ - DW_OP_lit31 = 0x4f, /* Literal 31. */ - DW_OP_reg0 = 0x50, /* Register 0. */ - DW_OP_reg1 = 0x51, /* Register 1. */ - DW_OP_reg2 = 0x52, /* Register 2. */ - DW_OP_reg3 = 0x53, /* Register 3. */ - DW_OP_reg4 = 0x54, /* Register 4. */ - DW_OP_reg5 = 0x55, /* Register 5. */ - DW_OP_reg6 = 0x56, /* Register 6. */ - DW_OP_reg7 = 0x57, /* Register 7. */ - DW_OP_reg8 = 0x58, /* Register 8. */ - DW_OP_reg9 = 0x59, /* Register 9. */ - DW_OP_reg10 = 0x5a, /* Register 10. */ - DW_OP_reg11 = 0x5b, /* Register 11. */ - DW_OP_reg12 = 0x5c, /* Register 12. */ - DW_OP_reg13 = 0x5d, /* Register 13. */ - DW_OP_reg14 = 0x5e, /* Register 14. */ - DW_OP_reg15 = 0x5f, /* Register 15. */ - DW_OP_reg16 = 0x60, /* Register 16. */ - DW_OP_reg17 = 0x61, /* Register 17. */ - DW_OP_reg18 = 0x62, /* Register 18. */ - DW_OP_reg19 = 0x63, /* Register 19. */ - DW_OP_reg20 = 0x64, /* Register 20. */ - DW_OP_reg21 = 0x65, /* Register 21. */ - DW_OP_reg22 = 0x66, /* Register 22. */ - DW_OP_reg23 = 0x67, /* Register 24. */ - DW_OP_reg24 = 0x68, /* Register 24. */ - DW_OP_reg25 = 0x69, /* Register 25. */ - DW_OP_reg26 = 0x6a, /* Register 26. */ - DW_OP_reg27 = 0x6b, /* Register 27. */ - DW_OP_reg28 = 0x6c, /* Register 28. */ - DW_OP_reg29 = 0x6d, /* Register 29. */ - DW_OP_reg30 = 0x6e, /* Register 30. */ - DW_OP_reg31 = 0x6f, /* Register 31. */ - DW_OP_breg0 = 0x70, /* Base register 0. */ - DW_OP_breg1 = 0x71, /* Base register 1. */ - DW_OP_breg2 = 0x72, /* Base register 2. */ - DW_OP_breg3 = 0x73, /* Base register 3. */ - DW_OP_breg4 = 0x74, /* Base register 4. */ - DW_OP_breg5 = 0x75, /* Base register 5. */ - DW_OP_breg6 = 0x76, /* Base register 6. */ - DW_OP_breg7 = 0x77, /* Base register 7. */ - DW_OP_breg8 = 0x78, /* Base register 8. */ - DW_OP_breg9 = 0x79, /* Base register 9. */ - DW_OP_breg10 = 0x7a, /* Base register 10. */ - DW_OP_breg11 = 0x7b, /* Base register 11. */ - DW_OP_breg12 = 0x7c, /* Base register 12. */ - DW_OP_breg13 = 0x7d, /* Base register 13. */ - DW_OP_breg14 = 0x7e, /* Base register 14. */ - DW_OP_breg15 = 0x7f, /* Base register 15. */ - DW_OP_breg16 = 0x80, /* Base register 16. */ - DW_OP_breg17 = 0x81, /* Base register 17. */ - DW_OP_breg18 = 0x82, /* Base register 18. */ - DW_OP_breg19 = 0x83, /* Base register 19. */ - DW_OP_breg20 = 0x84, /* Base register 20. */ - DW_OP_breg21 = 0x85, /* Base register 21. */ - DW_OP_breg22 = 0x86, /* Base register 22. */ - DW_OP_breg23 = 0x87, /* Base register 23. */ - DW_OP_breg24 = 0x88, /* Base register 24. */ - DW_OP_breg25 = 0x89, /* Base register 25. */ - DW_OP_breg26 = 0x8a, /* Base register 26. */ - DW_OP_breg27 = 0x8b, /* Base register 27. */ - DW_OP_breg28 = 0x8c, /* Base register 28. */ - DW_OP_breg29 = 0x8d, /* Base register 29. */ - DW_OP_breg30 = 0x8e, /* Base register 30. */ - DW_OP_breg31 = 0x8f, /* Base register 31. */ - DW_OP_regx = 0x90, /* Unsigned LEB128 register. */ - DW_OP_fbreg = 0x91, /* Signed LEB128 register. */ - DW_OP_bregx = 0x92, /* ULEB128 register followed by SLEB128 off. */ - DW_OP_piece = 0x93, /* ULEB128 size of piece addressed. */ - DW_OP_deref_size = 0x94, /* 1-byte size of data retrieved. */ - DW_OP_xderef_size = 0x95, /* 1-byte size of data retrieved. */ - DW_OP_nop = 0x96, - DW_OP_push_object_address = 0x97, - DW_OP_call2 = 0x98, - DW_OP_call4 = 0x99, - DW_OP_call_ref = 0x9a, - - DW_OP_lo_user = 0xe0, /* Implementation-defined range start. */ - DW_OP_hi_user = 0xff /* Implementation-defined range end. */ - }; - - -/* DWARF base type encodings. */ -enum - { - DW_ATE_void = 0x0, - DW_ATE_address = 0x1, - DW_ATE_boolean = 0x2, - DW_ATE_complex_float = 0x3, - DW_ATE_float = 0x4, - DW_ATE_signed = 0x5, - DW_ATE_signed_char = 0x6, - DW_ATE_unsigned = 0x7, - DW_ATE_unsigned_char = 0x8, - - DW_ATE_lo_user = 0x80, - DW_ATE_hi_user = 0xff - }; - - -/* DWARF accessibility encodings. */ -enum - { - DW_ACCESS_public = 1, - DW_ACCESS_protected = 2, - DW_ACCESS_private = 3 - }; - - -/* DWARF visibility encodings. */ -enum - { - DW_VIS_local = 1, - DW_VIS_exported = 2, - DW_VIS_qualified = 3 - }; - - -/* DWARF virtuality encodings. */ -enum - { - DW_VIRTUALITY_none = 0, - DW_VIRTUALITY_virtual = 1, - DW_VIRTUALITY_pure_virtual = 2 - }; - - -/* DWARF language encodings. */ -enum - { - DW_LANG_C89 = 0x0001, - DW_LANG_C = 0x0002, - DW_LANG_Ada83 = 0x0003, - DW_LANG_C_plus_plus = 0x0004, - DW_LANG_Cobol74 = 0x0005, - DW_LANG_Cobol85 = 0x0006, - DW_LANG_Fortran77 = 0x0007, - DW_LANG_Fortran90 = 0x0008, - DW_LANG_Pascal83 = 0x0009, - DW_LANG_Modula2 = 0x000a, - DW_LANG_Java = 0x000b, - DW_LANG_C99 = 0x000c, - DW_LANG_Ada95 = 0x000d, - DW_LANG_Fortran95 = 0x000e, - DW_LANG_PL1 = 0x000f, - DW_LANG_lo_user = 0x8000, - DW_LANG_Mips_Assembler = 0x8001, - DW_LANG_hi_user = 0xffff - }; - - -/* DWARF identifier case encodings. */ -enum - { - DW_ID_case_sensitive = 0, - DW_ID_up_case = 1, - DW_ID_down_case = 2, - DW_ID_case_insensitive = 3 - }; - - -/* DWARF calling conventions encodings. */ -enum - { - DW_CC_normal = 0x1, - DW_CC_program = 0x2, - DW_CC_nocall = 0x3, - DW_CC_lo_user = 0x40, - DW_CC_hi_user = 0xff - }; - - -/* DWARF inline encodings. */ -enum - { - DW_INL_not_inlined = 0, - DW_INL_inlined = 1, - DW_INL_declared_not_inlined = 2, - DW_INL_declared_inlined = 3 - }; - - -/* DWARF ordering encodings. */ -enum - { - DW_ORD_row_major = 0, - DW_ORD_col_major = 1 - }; - - -/* DWARF discriminant descriptor encodings. */ -enum - { - DW_DSC_label = 0, - DW_DSC_range = 1 - }; - - -/* DWARF standard opcode encodings. */ -enum - { - DW_LNS_copy = 1, - DW_LNS_advance_pc = 2, - DW_LNS_advance_line = 3, - DW_LNS_set_file = 4, - DW_LNS_set_column = 5, - DW_LNS_negate_stmt = 6, - DW_LNS_set_basic_block = 7, - DW_LNS_const_add_pc = 8, - DW_LNS_fixed_advance_pc = 9, - DW_LNS_set_prologue_end = 10, - DW_LNS_set_epilog_begin = 11 - }; - - -/* DWARF extended opcide encodings. */ -enum - { - DW_LNE_end_sequence = 1, - DW_LNE_set_address = 2, - DW_LNE_define_file = 3 - }; - - -/* DWARF macinfo type encodings. */ -enum - { - DW_MACINFO_define = 1, - DW_MACINFO_undef = 2, - DW_MACINFO_start_file = 3, - DW_MACINFO_end_file = 4, - DW_MACINFO_vendor_ext = 255 - }; - - -/* DWARF call frame instruction encodings. */ -enum - { - DW_CFA_advance_loc = 0x40, - DW_CFA_offset = 0x80, - DW_CFA_restore = 0xc0, - DW_CFA_extended = 0, - - DW_CFA_nop = 0x00, - DW_CFA_set_loc = 0x01, - DW_CFA_advance_loc1 = 0x02, - DW_CFA_advance_loc2 = 0x03, - DW_CFA_advance_loc4 = 0x04, - DW_CFA_offset_extended = 0x05, - DW_CFA_restore_extended = 0x06, - DW_CFA_undefined = 0x07, - DW_CFA_same_value = 0x08, - DW_CFA_register = 0x09, - DW_CFA_remember_state = 0x0a, - DW_CFA_restore_state = 0x0b, - DW_CFA_def_cfa = 0x0c, - DW_CFA_def_cfa_register = 0x0d, - DW_CFA_def_cfa_offset = 0x0e, - DW_CFA_def_cfa_expression = 0x0f, - DW_CFA_expression = 0x10, - DW_CFA_offset_extended_sf = 0x11, - DW_CFA_def_cfa_sf = 0x12, - DW_CFA_def_cfa_offset_sf = 0x13, - DW_CFA_low_user = 0x1c, - DW_CFA_MIPS_advance_loc8 = 0x1d, - DW_CFA_GNU_window_save = 0x2d, - DW_CFA_GNU_args_size = 0x2e, - DW_CFA_high_user = 0x3f - }; - - -/* DWARF XXX. */ -#define DW_ADDR_none 0 - -#endif /* dwarf.h */ diff --git a/libdw/dwarf_abbrev_hash.c b/libdw/dwarf_abbrev_hash.c deleted file mode 100644 index 009e757f..00000000 --- a/libdw/dwarf_abbrev_hash.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Implementation of hash table for DWARF .debug_abbrev section content. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define NO_UNDEF -#include "libdwP.h" - -#define next_prime __libdwarf_next_prime -extern size_t next_prime (size_t) attribute_hidden; - -#include <dynamicsizehash.c> - -#undef next_prime -#define next_prime attribute_hidden __libdwarf_next_prime -#include "../lib/next_prime.c" diff --git a/libdw/dwarf_abbrev_hash.h b/libdw/dwarf_abbrev_hash.h deleted file mode 100644 index ef3cc48b..00000000 --- a/libdw/dwarf_abbrev_hash.h +++ /dev/null @@ -1,24 +0,0 @@ -/* Hash table for DWARF .debug_abbrev section content. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef _DWARF_ABBREV_HASH_H -#define _DWARF_ABBREV_HASH_H 1 - -#define NAME Dwarf_Abbrev_Hash -#define TYPE Dwarf_Abbrev * -#define COMPARE(a, b) (0) - -#include <dynamicsizehash.h> - -#endif /* dwarf_abbrev_hash.h */ diff --git a/libdw/dwarf_abbrevhaschildren.c b/libdw/dwarf_abbrevhaschildren.c deleted file mode 100644 index 2261b2f3..00000000 --- a/libdw/dwarf_abbrevhaschildren.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Return true if abbreviation is children flag set. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <dwarf.h> -#include "libdwP.h" - - -int -dwarf_abbrevhaschildren (abbrev) - Dwarf_Abbrev *abbrev; -{ - return abbrev == NULL ? -1 : abbrev->has_children; -} diff --git a/libdw/dwarf_arrayorder.c b/libdw/dwarf_arrayorder.c deleted file mode 100644 index 072e70db..00000000 --- a/libdw/dwarf_arrayorder.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Return array order attribute of DIE. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include "libdwP.h" - - -int -dwarf_arrayorder (die) - Dwarf_Die *die; -{ - Dwarf_Attribute attr_mem; - Dwarf_Word value; - - return dwarf_formudata (dwarf_attr (die, DW_AT_ordering, &attr_mem), - &value) == 0 ? (int) value : -1; -} diff --git a/libdw/dwarf_attr.c b/libdw/dwarf_attr.c deleted file mode 100644 index a09f11ac..00000000 --- a/libdw/dwarf_attr.c +++ /dev/null @@ -1,39 +0,0 @@ -/* Return specific DWARF attribute of a DIE. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include "libdwP.h" - - -Dwarf_Attribute * -dwarf_attr (die, search_name, result) - Dwarf_Die *die; - unsigned int search_name; - Dwarf_Attribute *result; -{ - if (die == NULL) - return NULL; - - /* Search for the attribute with the given name. */ - result->valp = __libdw_find_attr (die, search_name, &result->code, - &result->form); - /* Always fill in the CU information. */ - result->cu = die->cu; - - return result->code == search_name ? result : NULL; -} diff --git a/libdw/dwarf_begin.c b/libdw/dwarf_begin.c deleted file mode 100644 index a2ffa1c6..00000000 --- a/libdw/dwarf_begin.c +++ /dev/null @@ -1,85 +0,0 @@ -/* Create descriptor from file descriptor for processing file. - Copyright (C) 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <errno.h> -#include <stddef.h> -#include <sys/stat.h> - -#include <libdwP.h> - - -Dwarf * -dwarf_begin (fd, cmd) - int fd; - Dwarf_Cmd cmd; -{ - Elf *elf; - Elf_Cmd elfcmd; - Dwarf *result = NULL; - - switch (cmd) - { - case DWARF_C_READ: - elfcmd = ELF_C_READ_MMAP; - break; - case DWARF_C_WRITE: - elfcmd = ELF_C_WRITE; - break; - case DWARF_C_RDWR: - elfcmd = ELF_C_RDWR; - break; - default: - /* No valid mode. */ - __libdw_seterrno (DWARF_E_INVALID_CMD); - return NULL; - } - - /* We have to call `elf_version' here since the user might have not - done it or initialized libelf with a different version. This - would break libdwarf since we are using the ELF data structures - in a certain way. */ - elf_version (EV_CURRENT); - - /* Get an ELF descriptor. */ - elf = elf_begin (fd, elfcmd, NULL); - if (elf == NULL) - { - /* Test why the `elf_begin" call failed. */ - struct stat64 st; - - if (fstat64 (fd, &st) == 0 && ! S_ISREG (st.st_mode)) - __libdw_seterrno (DWARF_E_NO_REGFILE); - else if (errno == EBADF) - __libdw_seterrno (DWARF_E_INVALID_FILE); - else - __libdw_seterrno (DWARF_E_IO_ERROR); - } - else - { - /* Do the real work now that we have an ELF descriptor. */ - result = dwarf_begin_elf (elf, cmd, NULL); - - /* If this failed, free the resources. */ - if (result == NULL) - elf_end (elf); - else - result->free_elf = true; - } - - return result; -} diff --git a/libdw/dwarf_begin_elf.c b/libdw/dwarf_begin_elf.c deleted file mode 100644 index a9aa197c..00000000 --- a/libdw/dwarf_begin_elf.c +++ /dev/null @@ -1,251 +0,0 @@ -/* Create descriptor from ELF descriptor for processing file. - Copyright (C) 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdbool.h> -#include <stddef.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <sys/stat.h> - -#include "libdwP.h" - - -/* Section names. */ -static const char dwarf_scnnames[IDX_last][17] = -{ - [IDX_debug_info] = ".debug_info", - [IDX_debug_abbrev] = ".debug_abbrev", - [IDX_debug_aranges] = ".debug_aranges", - [IDX_debug_line] = ".debug_line", - [IDX_debug_frame] = ".debug_frame", - [IDX_eh_frame] = ".eh_frame", - [IDX_debug_loc] = ".debug_loc", - [IDX_debug_pubnames] = ".debug_pubnames", - [IDX_debug_str] = ".debug_str", - [IDX_debug_funcnames] = ".debug_funcnames", - [IDX_debug_typenames] = ".debug_typenames", - [IDX_debug_varnames] = ".debug_varnames", - [IDX_debug_weaknames] = ".debug_weaknames", - [IDX_debug_macinfo] = ".debug_macinfo" -}; -#define ndwarf_scnnames (sizeof (dwarf_scnnames) / sizeof (dwarf_scnnames[0])) - - -static void -check_section (Dwarf *result, GElf_Ehdr *ehdr, Elf_Scn *scn, bool inscngrp) -{ - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - - /* Get the section header data. */ - shdr = gelf_getshdr (scn, &shdr_mem); - if (shdr == NULL) - /* This should never happen. If it does something is - wrong in the libelf library. */ - abort (); - - - /* Make sure the section is part of a section group only iff we - really need it. If we are looking for the global (= non-section - group debug info) we have to ignore all the info in section - groups. If we are looking into a section group we cannot look at - a section which isn't part of the section group. */ - if (! inscngrp && (shdr->sh_flags & SHF_GROUP) != 0) - /* Ignore the section. */ - return; - - - /* We recognize the DWARF section by their names. This is not very - safe and stable but the best we can do. */ - const char *scnname = elf_strptr (result->elf, ehdr->e_shstrndx, - shdr->sh_name); - if (scnname == NULL) - { - /* The section name must be valid. Otherwise is the ELF file - invalid. */ - __libdw_seterrno (DWARF_E_INVALID_ELF); - free (result); - return; - } - - - /* Recognize the various sections. Most names start with .debug_. */ - size_t cnt; - for (cnt = 0; cnt < ndwarf_scnnames; ++cnt) - if (strcmp (scnname, dwarf_scnnames[cnt]) == 0) - { - /* Found it. Remember where the data is. */ - if (unlikely (result->sectiondata[cnt] != NULL)) - /* A section appears twice. That's bad. We ignore the section. */ - break; - - /* Get the section data. */ - Elf_Data *data = elf_getdata (scn, NULL); - if (data != NULL && data->d_size != 0) - /* Yep, there is actually data available. */ - result->sectiondata[cnt] = data; - - break; - } -} - - -/* Check whether all the necessary DWARF information is available. */ -static Dwarf * -valid_p (Dwarf *result) -{ - /* We looked at all the sections. Now determine whether all the - sections with debugging information we need are there. - - XXX Which sections are absolutely necessary? Add tests if - necessary. For now we require only .debug_info. Hopefully this - is correct. */ - if (unlikely (result->sectiondata[IDX_debug_info] == NULL)) - { - __libdw_seterrno (DWARF_E_NO_DWARF); - result = NULL; - } - - return result; -} - - -static Dwarf * -global_read (Dwarf *result, Elf *elf, GElf_Ehdr *ehdr, Dwarf_Cmd cmd) -{ - Elf_Scn *scn = NULL; - - while ((scn = elf_nextscn (elf, scn)) != NULL) - check_section (result, ehdr, scn, false); - - return valid_p (result); -} - - -static Dwarf * -scngrp_read (Dwarf *result, Elf *elf, GElf_Ehdr *ehdr, Dwarf_Cmd cmd, - Elf_Scn *scngrp) -{ - /* SCNGRP is the section descriptor for a section group which might - contain debug sections. */ - Elf_Data *data = elf_getdata (scngrp, NULL); - if (data == NULL) - { - /* We cannot read the section content. Fail! */ - free (result); - return NULL; - } - - /* The content of the section is a number of 32-bit words which - represent section indices. The first word is a flag word. */ - Elf32_Word *scnidx = (Elf32_Word *) data->d_buf; - size_t cnt; - for (cnt = 1; cnt * sizeof (Elf32_Word) <= data->d_size; ++cnt) - { - Elf_Scn *scn = elf_getscn (elf, scnidx[cnt]); - if (scn == NULL) - { - /* A section group refers to a non-existing section. Should - never happen. */ - __libdw_seterrno (DWARF_E_INVALID_ELF); - free (result); - return NULL; - } - - check_section (result, ehdr, scn, true); - } - - return valid_p (result); -} - - -Dwarf * -dwarf_begin_elf (elf, cmd, scngrp) - Elf *elf; - Dwarf_Cmd cmd; - Elf_Scn *scngrp; -{ - GElf_Ehdr *ehdr; - GElf_Ehdr ehdr_mem; - - /* Get the ELF header of the file. We need various pieces of - information from it. */ - ehdr = gelf_getehdr (elf, &ehdr_mem); - if (ehdr == NULL) - { - if (elf_kind (elf) != ELF_K_ELF) - __libdw_seterrno (DWARF_E_NOELF); - else - __libdw_seterrno (DWARF_E_GETEHDR_ERROR); - - return NULL; - } - - - /* Default memory allocation size. */ - size_t mem_default_size = sysconf (_SC_PAGESIZE) - 4 * sizeof (void *); - - /* Allocate the data structure. */ - Dwarf *result = (Dwarf *) calloc (1, sizeof (Dwarf) + mem_default_size); - if (result == NULL) - { - __libdw_seterrno (DWARF_E_NOMEM); - return NULL; - } - - /* Fill in some values. */ - if ((BYTE_ORDER == LITTLE_ENDIAN && ehdr->e_ident[EI_DATA] == ELFDATA2MSB) - || (BYTE_ORDER == BIG_ENDIAN && ehdr->e_ident[EI_DATA] == ELFDATA2LSB)) - result->other_byte_order = true; - - result->elf = elf; - - /* Initialize the memory handling. */ - result->mem_default_size = mem_default_size; - result->oom_handler = __libdw_oom; - result->mem_tail = (struct libdw_memblock *) (result + 1); - result->mem_tail->size = (result->mem_default_size - - offsetof (struct libdw_memblock, mem)); - result->mem_tail->remaining = result->mem_tail->size; - result->mem_tail->prev = NULL; - - - if (cmd == DWARF_C_READ || cmd == DWARF_C_RDWR) - { - /* If the caller provides a section group we get the DWARF - sections only from this setion group. Otherwise we search - for the first section with the required name. Further - sections with the name are ignored. The DWARF specification - does not really say this is allowed. */ - if (scngrp == NULL) - return global_read (result, elf, ehdr, cmd); - else - return scngrp_read (result, elf, ehdr, cmd, scngrp); - } - else if (cmd == DWARF_C_WRITE) - { - __libdw_seterrno (DWARF_E_UNIMPL); - free (result); - return NULL; - } - - __libdw_seterrno (DWARF_E_INVALID_CMD); - free (result); - return NULL; -} diff --git a/libdw/dwarf_bitoffset.c b/libdw/dwarf_bitoffset.c deleted file mode 100644 index 6addbd72..00000000 --- a/libdw/dwarf_bitoffset.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Return bit offset attribute of DIE. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include "libdwP.h" - - -int -dwarf_bitoffset (die) - Dwarf_Die *die; -{ - Dwarf_Attribute attr_mem; - Dwarf_Word value; - - return dwarf_formudata (dwarf_attr (die, DW_AT_bit_offset, &attr_mem), - &value) == 0 ? (int) value : -1; -} diff --git a/libdw/dwarf_bitsize.c b/libdw/dwarf_bitsize.c deleted file mode 100644 index 93688243..00000000 --- a/libdw/dwarf_bitsize.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Return bit size attribute of DIE. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include "libdwP.h" - - -int -dwarf_bitsize (die) - Dwarf_Die *die; -{ - Dwarf_Attribute attr_mem; - Dwarf_Word value; - - return dwarf_formudata (dwarf_attr (die, DW_AT_bit_size, &attr_mem), - &value) == 0 ? (int) value : -1; -} diff --git a/libdw/dwarf_bytesize.c b/libdw/dwarf_bytesize.c deleted file mode 100644 index 8374676d..00000000 --- a/libdw/dwarf_bytesize.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Return byte size attribute of DIE. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include "libdwP.h" - - -int -dwarf_bytesize (die) - Dwarf_Die *die; -{ - Dwarf_Attribute attr_mem; - Dwarf_Word value; - - return dwarf_formudata (dwarf_attr (die, DW_AT_byte_size, &attr_mem), - &value) == 0 ? (int) value : -1; -} diff --git a/libdw/dwarf_child.c b/libdw/dwarf_child.c deleted file mode 100644 index 0ccac099..00000000 --- a/libdw/dwarf_child.c +++ /dev/null @@ -1,158 +0,0 @@ -/* Return vhild of current DIE. - Copyright (C) 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libdwP.h" -#include <string.h> - -/* Some arbitrary value not conflicting with any existing code. */ -#define INVALID 0xffffe444 - - -unsigned char * -internal_function_def -__libdw_find_attr (Dwarf_Die *die, unsigned int search_name, - unsigned int *codep, unsigned int *formp) -{ - Dwarf *dbg = die->cu->dbg; - unsigned char *readp = (unsigned char *) die->addr; - - /* First we have to get the abbreviation code so that we can decode - the data in the DIE. */ - unsigned int abbrev_code; - get_uleb128 (abbrev_code, readp); - - /* Find the abbreviation entry. */ - Dwarf_Abbrev *abbrevp = die->abbrev; - if (abbrevp == NULL) - { - abbrevp = __libdw_findabbrev (die->cu, abbrev_code); - die->abbrev = abbrevp ?: (Dwarf_Abbrev *) -1l; - } - if (unlikely (die->abbrev == (Dwarf_Abbrev *) -1l)) - { - __libdw_seterrno (DWARF_E_INVALID_DWARF); - return NULL; - } - - /* Search the name attribute. */ - unsigned char *const endp - = ((unsigned char *) dbg->sectiondata[IDX_debug_abbrev]->d_buf - + dbg->sectiondata[IDX_debug_abbrev]->d_size); - - unsigned char *attrp = die->abbrev->attrp; - while (1) - { - /* Are we still in bounds? This test needs to be refined. */ - if (unlikely (attrp + 1 >= endp)) - { - __libdw_seterrno (DWARF_E_INVALID_DWARF); - return NULL; - } - - /* Get attribute name and form. - - XXX We don't check whether this reads beyond the end of the - section. */ - unsigned int attr_name; - get_uleb128 (attr_name, attrp); - unsigned int attr_form; - get_uleb128 (attr_form, attrp); - - /* We can stop if we found the attribute with value zero. */ - if (attr_name == 0 && attr_form == 0) - break; - - /* Is this the name attribute? */ - if (attr_name == search_name && search_name != INVALID) - { - if (codep != NULL) - *codep = attr_name; - if (formp != NULL) - *formp = attr_form; - - return readp; - } - - /* Skip over the rest of this attribute (if there is any). */ - if (attr_form != 0) - { - size_t len = __libdw_form_val_len (dbg, die->cu, attr_form, readp); - - if (unlikely (len == (size_t) -1l)) - { - readp = NULL; - break; - } - - // XXX We need better boundary checks. - readp += len; - } - } - - // XXX Do we need other values? - if (codep != NULL) - *codep = INVALID; - if (formp != NULL) - *formp = INVALID; - - return readp; -} - - -int -dwarf_child (die, result) - Dwarf_Die *die; - Dwarf_Die *result; -{ - /* Ignore previous errors. */ - if (die == NULL) - return -1; - - /* Skip past the last attribute. */ - void *addr = NULL; - - /* If we already know there are no children do not search. */ - if (die->abbrev != (Dwarf_Abbrev *) -1 - && (die->abbrev == NULL || die->abbrev->has_children)) - addr = __libdw_find_attr (die, INVALID, NULL, NULL); - if (die->abbrev == (Dwarf_Abbrev *) -1l) - return -1; - - /* Make sure the DIE really has children. */ - if (! die->abbrev->has_children) - /* There cannot be any children. */ - return 1; - - if (addr == NULL) - return -1; - - /* RESULT can be the same as DIE. So preserve what we need. */ - struct Dwarf_CU *cu = die->cu; - - /* Clear the entire DIE structure. This signals we have not yet - determined any of the information. */ - memset (result, '\0', sizeof (Dwarf_Die)); - - /* We have the address. */ - result->addr = addr; - - /* Same CU as the parent. */ - result->cu = cu; - - return 0; -} diff --git a/libdw/dwarf_cuoffset.c b/libdw/dwarf_cuoffset.c deleted file mode 100644 index f3adfa83..00000000 --- a/libdw/dwarf_cuoffset.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Return offset of DIE in CU. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include "libdwP.h" - - -Dwarf_Off -dwarf_cuoffset (die) - Dwarf_Die *die; -{ - return (die == NULL - ? (Dwarf_Off) -1l - : (die->addr - - die->cu->dbg->sectiondata[IDX_debug_info]->d_buf - - die->cu->start)); -} diff --git a/libdw/dwarf_diename.c b/libdw/dwarf_diename.c deleted file mode 100644 index 78555dc3..00000000 --- a/libdw/dwarf_diename.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Return string in name attribute of DIE. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include "libdwP.h" - - -const char * -dwarf_diename (die) - Dwarf_Die *die; -{ - Dwarf_Attribute attr_mem; - - return dwarf_formstring (dwarf_attr (die, DW_AT_name, &attr_mem)); -} diff --git a/libdw/dwarf_dieoffset.c b/libdw/dwarf_dieoffset.c deleted file mode 100644 index 2657c223..00000000 --- a/libdw/dwarf_dieoffset.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Return offset of DIE. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include "libdwP.h" - - -Dwarf_Off -dwarf_dieoffset (die) - Dwarf_Die *die; -{ - return (die == NULL - ? -1l - : die->addr - die->cu->dbg->sectiondata[IDX_debug_info]->d_buf); -} diff --git a/libdw/dwarf_end.c b/libdw/dwarf_end.c deleted file mode 100644 index 0745d717..00000000 --- a/libdw/dwarf_end.c +++ /dev/null @@ -1,75 +0,0 @@ -/* Release debugging handling context. - Copyright (C) 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <search.h> -#include <stdlib.h> - -#include "libdwP.h" - - - -static void -noop_free (void *arg) -{ -} - - -static void -cu_free (void *arg) -{ - struct Dwarf_CU *p = (struct Dwarf_CU *) arg; - - Dwarf_Abbrev_Hash_free (&p->abbrev_hash); - - tdestroy (p->locs, noop_free); -} - - -int -dwarf_end (dwarf) - Dwarf *dwarf; -{ - if (dwarf != NULL) - { - /* The search tree for the CUs. NB: the CU data itself is - allocated separately, but the abbreviation hash tables need - to be handled. */ - tdestroy (dwarf->cu_tree, cu_free); - - struct libdw_memblock *memp = dwarf->mem_tail; - /* The first block is allocated together with the Dwarf object. */ - while (memp->prev != NULL) - { - struct libdw_memblock *prevp = memp->prev; - free (memp); - memp = prevp; - } - - /* Free the pubnames helper structure. */ - free (dwarf->pubnames_sets); - - /* Free the ELF descriptor if necessary. */ - if (dwarf->free_elf) - elf_end (dwarf->elf); - - /* Free the context descriptor. */ - free (dwarf); - } - - return 0; -} diff --git a/libdw/dwarf_error.c b/libdw/dwarf_error.c deleted file mode 100644 index fe8966ee..00000000 --- a/libdw/dwarf_error.c +++ /dev/null @@ -1,177 +0,0 @@ -/* Retrieve ELF descriptor used for DWARF access. - Copyright (C) 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <stddef.h> - -#include "libdwP.h" - - -#ifdef USE_TLS -/* The error number. */ -static int global_error; -#else -/* This is the key for the thread specific memory. */ -static tls_key_t key; - -/* The error number. Used in non-threaded programs. */ -static int global_error; -static bool threaded; -/* We need to initialize the thread-specific data. */ -once_define (static, once); - -/* The initialization and destruction functions. */ -static void init (void); -static void free_key_mem (void *mem); -#endif /* TLS */ - - -int -dwarf_errno (void) -{ - int result; - -#ifndef USE_TLS - /* If we have not yet initialized the buffer do it now. */ - once_execute (once, init); - - if (threaded) - { - /* We do not allocate memory for the data. It is only a word. - We can store it in place of the pointer. */ - result = (intptr_t) getspecific (key); - - setspecific (key, (void *) (intptr_t) DWARF_E_NOERROR); - return result; - } -#endif /* TLS */ - - result = global_error; - global_error = DWARF_E_NOERROR; - return result; -} - - -/* XXX For now we use string pointers. Once the table stablelizes - make it more DSO-friendly. */ -static const char *errmsgs[] = - { - [DWARF_E_NOERROR] = N_("no error"), - [DWARF_E_UNKNOWN_ERROR] = N_("unknown error"), - [DWARF_E_INVALID_ACCESS] = N_("invalid access"), - [DWARF_E_NO_REGFILE] = N_("no regular file"), - [DWARF_E_IO_ERROR] = N_("I/O error"), - [DWARF_E_INVALID_ELF] = N_("invalid ELF file"), - [DWARF_E_NO_DWARF] = N_("no DWARF information"), - [DWARF_E_NOELF] = N_("no ELF file"), - [DWARF_E_GETEHDR_ERROR] = N_("cannot get ELF header"), - [DWARF_E_NOMEM] = N_("out of memory"), - [DWARF_E_UNIMPL] = N_("not implemented"), - [DWARF_E_INVALID_CMD] = N_("invalid command"), - [DWARF_E_INVALID_VERSION] = N_("invalid version"), - [DWARF_E_INVALID_FILE] = N_("invalid file"), - [DWARF_E_NO_ENTRY] = N_("no entries found"), - [DWARF_E_INVALID_DWARF] = N_("invalid DWARF"), - [DWARF_E_NO_STRING] = N_("no string data"), - [DWARF_E_NO_ADDR] = N_("no address value"), - [DWARF_E_NO_CONSTANT] = N_("no constant value"), - [DWARF_E_NO_REFERENCE] = N_("no reference value"), - [DWARF_E_INVALID_REFERENCE] = N_("invalid reference value"), - [DWARF_E_NO_DEBUG_LINE] = N_(".debug_line section missing"), - [DWARF_E_INVALID_DEBUG_LINE] = N_("invalid .debug_line section"), - [DWARF_E_TOO_BIG] = N_("debug information too big"), - [DWARF_E_VERSION] = N_("invalid DWARF version"), - [DWARF_E_INVALID_DIR_IDX] = N_("invalid directory index"), - [DWARF_E_ADDR_OUTOFRANGE] = N_("address out of range"), - [DWARF_E_NO_LOCLIST] = N_("no location list value"), - [DWARF_E_NO_BLOCK] = N_("no block data"), - [DWARF_E_INVALID_LINE_IDX] = N_("invalid line index"), - [DWARF_E_INVALID_ARANGE_IDX] = N_("invalid address range index"), - [DWARF_E_NO_MATCH] = N_("no matching address range"), - [DWARF_E_NO_FLAG] = N_("no flag value"), - }; -#define nerrmsgs (sizeof (errmsgs) / sizeof (errmsgs[0])) - - -void -__libdw_seterrno (value) - int value; -{ -#ifndef USE_TLS - /* If we have not yet initialized the buffer do it now. */ - once_execute (once, init); - - if (threaded) - /* We do not allocate memory for the data. It is only a word. - We can store it in place of the pointer. */ - setspecific (key, (void *) (intptr_t) value); -#endif /* TLS */ - - global_error = (value >= 0 && value < (int) nerrmsgs - ? value : DWARF_E_UNKNOWN_ERROR); -} - - -const char * -dwarf_errmsg (error) - int error; -{ - int last_error; - -#ifndef USE_TLS - /* If we have not yet initialized the buffer do it now. */ - once_execute (once, init); - - if ((error == 0 || error == -1) && threaded) - /* We do not allocate memory for the data. It is only a word. - We can store it in place of the pointer. */ - last_error = (intptr_t) getspecific (key); - else -#endif /* TLS */ - last_error = global_error; - - if (error == 0) - return last_error != 0 ? _(errmsgs[last_error]) : NULL; - else if (error < -1 || error >= (int) nerrmsgs) - return _(errmsgs[DWARF_E_UNKNOWN_ERROR]); - - return _(errmsgs[error == -1 ? last_error : error]); -} - - -#ifndef USE_TLS -/* Free the thread specific data, this is done if a thread terminates. */ -static void -free_key_mem (void *mem) -{ - setspecific (key, NULL); -} - - -/* Initialize the key for the global variable. */ -static void -init (void) -{ - // XXX Screw you, gcc4, the unused function attribute does not work. - __asm ("" :: "r" (free_key_mem)); - - if (key_create (&key, free_key_mem) == 0) - /* Creating the key succeeded. */ - threaded = true; -} -#endif /* TLS */ diff --git a/libdw/dwarf_filesrc.c b/libdw/dwarf_filesrc.c deleted file mode 100644 index 770c004b..00000000 --- a/libdw/dwarf_filesrc.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Find source file information. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libdwP.h" - - -const char * -dwarf_filesrc (Dwarf_Files *file, size_t idx, Dwarf_Word *mtime, - Dwarf_Word *length) -{ - if (file == NULL || idx >= file->nfiles) - return NULL; - - if (mtime != NULL) - *mtime = file->info[idx].mtime; - - if (length != NULL) - *length = file->info[idx].length; - - return file->info[idx].name; -} diff --git a/libdw/dwarf_formaddr.c b/libdw/dwarf_formaddr.c deleted file mode 100644 index 4e8cdb0b..00000000 --- a/libdw/dwarf_formaddr.c +++ /dev/null @@ -1,43 +0,0 @@ -/* Return address represented by attribute. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include "libdwP.h" - - -int -dwarf_formaddr (attr, return_addr) - Dwarf_Attribute *attr; - Dwarf_Addr *return_addr; -{ - if (attr == NULL) - return -1; - - if (unlikely (attr->form != DW_FORM_addr)) - { - __libdw_seterrno (DWARF_E_NO_ADDR); - return -1; - } - - if (attr->cu->address_size == 8) - *return_addr = read_8ubyte_unaligned (attr->cu->dbg, attr->valp); - else - *return_addr = read_4ubyte_unaligned (attr->cu->dbg, attr->valp); - - return 0; -} diff --git a/libdw/dwarf_formblock.c b/libdw/dwarf_formblock.c deleted file mode 100644 index 08566829..00000000 --- a/libdw/dwarf_formblock.c +++ /dev/null @@ -1,73 +0,0 @@ -/* Return block represented by attribute. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include "libdwP.h" - - -int -dwarf_formblock (attr, return_block) - Dwarf_Attribute *attr; - Dwarf_Block *return_block; -{ - if (attr == NULL) - return -1; - - unsigned int u128; - unsigned char *datap; - - switch (attr->form) - { - case DW_FORM_block1: - return_block->length = *(uint8_t *) attr->valp; - return_block->data = attr->valp + 1; - break; - - case DW_FORM_block2: - return_block->length = read_2ubyte_unaligned (attr->cu->dbg, attr->valp); - return_block->data = attr->valp + 2; - break; - - case DW_FORM_block4: - return_block->length = read_4ubyte_unaligned (attr->cu->dbg, attr->valp); - return_block->data = attr->valp + 4; - break; - - case DW_FORM_block: - datap = attr->valp; - get_uleb128 (u128, datap); - return_block->length = u128; - return_block->data = datap; - break; - - default: - __libdw_seterrno (DWARF_E_NO_BLOCK); - return -1; - } - - if (return_block->data + return_block->length - > ((unsigned char *) attr->cu->dbg->sectiondata[IDX_debug_info]->d_buf - + attr->cu->dbg->sectiondata[IDX_debug_info]->d_size)) - { - /* Block does not fit. */ - __libdw_seterrno (DWARF_E_INVALID_DWARF); - return -1; - } - - return 0; -} diff --git a/libdw/dwarf_formflag.c b/libdw/dwarf_formflag.c deleted file mode 100644 index ac344019..00000000 --- a/libdw/dwarf_formflag.c +++ /dev/null @@ -1,40 +0,0 @@ -/* Return flag represented by attribute. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include "libdwP.h" - - -int -dwarf_formflag (attr, return_bool) - Dwarf_Attribute *attr; - bool *return_bool; -{ - if (attr == NULL) - return -1; - - if (unlikely (attr->form != DW_FORM_flag)) - { - __libdw_seterrno (DWARF_E_NO_FLAG); - return -1; - } - - *return_bool = *attr->valp != 0; - - return 0; -} diff --git a/libdw/dwarf_formref.c b/libdw/dwarf_formref.c deleted file mode 100644 index d6b1f0f6..00000000 --- a/libdw/dwarf_formref.c +++ /dev/null @@ -1,68 +0,0 @@ -/* Return reference offset represented by attribute. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include "libdwP.h" - - -int -dwarf_formref (attr, return_offset) - Dwarf_Attribute *attr; - Dwarf_Off *return_offset; -{ - if (attr == NULL) - return -1; - - unsigned int u128; - unsigned char *datap; - - switch (attr->form) - { - case DW_FORM_ref1: - *return_offset = *attr->valp; - break; - - case DW_FORM_ref2: - *return_offset = read_2ubyte_unaligned (attr->cu->dbg, attr->valp); - break; - - case DW_FORM_ref4: - *return_offset = read_4ubyte_unaligned (attr->cu->dbg, attr->valp); - break; - - case DW_FORM_ref8: - *return_offset = read_8ubyte_unaligned (attr->cu->dbg, attr->valp); - break; - - case DW_FORM_ref_udata: - datap = attr->valp; - get_uleb128 (u128, datap); - *return_offset = u128; - break; - - case DW_FORM_ref_addr: - __libdw_seterrno (DWARF_E_INVALID_REFERENCE); - return -1; - - default: - __libdw_seterrno (DWARF_E_NO_REFERENCE); - return -1; - } - - return 0; -} diff --git a/libdw/dwarf_formsdata.c b/libdw/dwarf_formsdata.c deleted file mode 100644 index ad845102..00000000 --- a/libdw/dwarf_formsdata.c +++ /dev/null @@ -1,70 +0,0 @@ -/* Return signed constant represented by attribute. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include "libdwP.h" - - -int -dwarf_formsdata (attr, return_sval) - Dwarf_Attribute *attr; - Dwarf_Sword *return_sval; -{ - if (attr == NULL) - return -1; - - unsigned int u128; - unsigned char *datap; - - switch (attr->form) - { - case DW_FORM_data1: - *return_sval = *attr->valp; - break; - - case DW_FORM_data2: - *return_sval = read_2ubyte_unaligned (attr->cu->dbg, attr->valp); - break; - - case DW_FORM_data4: - *return_sval = read_4ubyte_unaligned (attr->cu->dbg, attr->valp); - break; - - case DW_FORM_data8: - *return_sval = read_8ubyte_unaligned (attr->cu->dbg, attr->valp); - break; - - case DW_FORM_sdata: - datap = attr->valp; - get_sleb128 (u128, datap); - *return_sval = u128; - break; - - case DW_FORM_udata: - datap = attr->valp; - get_uleb128 (u128, datap); - *return_sval = u128; - break; - - default: - __libdw_seterrno (DWARF_E_NO_CONSTANT); - return -1; - } - - return 0; -} diff --git a/libdw/dwarf_formstring.c b/libdw/dwarf_formstring.c deleted file mode 100644 index c4e59d78..00000000 --- a/libdw/dwarf_formstring.c +++ /dev/null @@ -1,57 +0,0 @@ -/* Return string associated with given attribute. - Copyright (C) 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include "libdwP.h" - - -const char * -dwarf_formstring (attrp) - Dwarf_Attribute *attrp; -{ - /* Ignore earlier errors. */ - if (attrp == NULL) - return NULL; - - /* We found it. Now determine where the string is stored. */ - if (attrp->form == DW_FORM_string) - /* A simple inlined string. */ - return (const char *) attrp->valp; - - Dwarf *dbg = attrp->cu->dbg; - - if (unlikely (attrp->form != DW_FORM_strp) - || dbg->sectiondata[IDX_debug_str] == NULL) - { - invalid_error: - __libdw_seterrno (DWARF_E_NO_STRING); - return NULL; - } - - uint64_t off; - // XXX We need better boundary checks. - if (attrp->cu->offset_size == 8) - off = read_8ubyte_unaligned (dbg, attrp->valp); - else - off = read_4ubyte_unaligned (dbg, attrp->valp); - - if (off >= dbg->sectiondata[IDX_debug_str]->d_size) - goto invalid_error; - - return (const char *) dbg->sectiondata[IDX_debug_str]->d_buf + off; -} diff --git a/libdw/dwarf_formudata.c b/libdw/dwarf_formudata.c deleted file mode 100644 index 66b8c2a3..00000000 --- a/libdw/dwarf_formudata.c +++ /dev/null @@ -1,70 +0,0 @@ -/* Return unsigned constant represented by attribute. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include "libdwP.h" - - -int -dwarf_formudata (attr, return_uval) - Dwarf_Attribute *attr; - Dwarf_Word *return_uval; -{ - if (attr == NULL) - return -1; - - unsigned int u128; - unsigned char *datap; - - switch (attr->form) - { - case DW_FORM_data1: - *return_uval = *attr->valp; - break; - - case DW_FORM_data2: - *return_uval = read_2ubyte_unaligned (attr->cu->dbg, attr->valp); - break; - - case DW_FORM_data4: - *return_uval = read_4ubyte_unaligned (attr->cu->dbg, attr->valp); - break; - - case DW_FORM_data8: - *return_uval = read_8ubyte_unaligned (attr->cu->dbg, attr->valp); - break; - - case DW_FORM_sdata: - datap = attr->valp; - get_sleb128 (u128, datap); - *return_uval = u128; - break; - - case DW_FORM_udata: - datap = attr->valp; - get_uleb128 (u128, datap); - *return_uval = u128; - break; - - default: - __libdw_seterrno (DWARF_E_NO_CONSTANT); - return -1; - } - - return 0; -} diff --git a/libdw/dwarf_getabbrev.c b/libdw/dwarf_getabbrev.c deleted file mode 100644 index 0021e222..00000000 --- a/libdw/dwarf_getabbrev.c +++ /dev/null @@ -1,127 +0,0 @@ -/* Get abbreviation at given offset. - Copyright (C) 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <dwarf.h> -#include "libdwP.h" - - -Dwarf_Abbrev * -internal_function_def -__libdw_getabbrev (dbg, cu, offset, lengthp, result) - Dwarf *dbg; - struct Dwarf_CU *cu; - Dwarf_Off offset; - size_t *lengthp; - Dwarf_Abbrev *result; -{ - /* Don't fail if there is not .debug_abbrev section. */ - if (dbg->sectiondata[IDX_debug_abbrev] == NULL) - return NULL; - - unsigned char *abbrevp - = (unsigned char *) dbg->sectiondata[IDX_debug_abbrev]->d_buf + offset; - if (*abbrevp == '\0') - /* We are past the last entry. */ - return NULL; - - /* 7.5.3 Abbreviations Tables - - [...] Each declaration begins with an unsigned LEB128 number - representing the abbreviation code itself. [...] The - abbreviation code is followed by another unsigned LEB128 - number that encodes the entry's tag. [...] - - [...] Following the tag encoding is a 1-byte value that - determines whether a debugging information entry using this - abbreviation has child entries or not. [...] - - [...] Finally, the child encoding is followed by a series of - attribute specifications. Each attribute specification - consists of two parts. The first part is an unsigned LEB128 - number representing the attribute's name. The second part is - an unsigned LEB128 number representing the attribute's form. */ - unsigned char *start_abbrevp = abbrevp; - unsigned int code; - get_uleb128 (code, abbrevp); - - /* Check whether this code is already in the hash table. */ - bool foundit = false; - Dwarf_Abbrev *abb = NULL; - if (cu == NULL - || (abb = Dwarf_Abbrev_Hash_find (&cu->abbrev_hash, code, NULL)) == NULL) - { - if (result == NULL) - abb = libdw_typed_alloc (dbg, Dwarf_Abbrev); - else - abb = result; - } - else - { - foundit = true; - - assert (abb->offset == offset); - - /* If the caller doesn't need the length we are done. */ - if (lengthp == NULL) - goto out; - } - - /* If there is already a value in the hash table we are going to - overwrite its content. This must not be a problem, since the - content better be the same. */ - abb->code = code; - get_uleb128 (abb->tag, abbrevp); - abb->has_children = *abbrevp++ == DW_CHILDREN_yes; - abb->attrp = abbrevp; - abb->offset = offset; - - /* Skip over all the attributes and count them while doing so. */ - abb->attrcnt = 0; - unsigned int attrname; - unsigned int attrform; - do - { - get_uleb128 (attrname, abbrevp); - get_uleb128 (attrform, abbrevp); - } - while (attrname != 0 && attrform != 0 && ++abb->attrcnt); - - /* Return the length to the caller if she asked for it. */ - if (lengthp != NULL) - *lengthp = abbrevp - start_abbrevp; - - /* Add the entry to the hash table. */ - if (cu != NULL && ! foundit) - (void) Dwarf_Abbrev_Hash_insert (&cu->abbrev_hash, abb->code, abb); - - out: - return abb; -} - - -Dwarf_Abbrev * -dwarf_getabbrev (die, offset, lengthp) - Dwarf_Die *die; - Dwarf_Off offset; - size_t *lengthp; -{ - return __libdw_getabbrev (die->cu->dbg, die->cu, - die->cu->orig_abbrev_offset + offset, lengthp, - NULL); -} diff --git a/libdw/dwarf_getabbrevattr.c b/libdw/dwarf_getabbrevattr.c deleted file mode 100644 index d9337aac..00000000 --- a/libdw/dwarf_getabbrevattr.c +++ /dev/null @@ -1,64 +0,0 @@ -/* Get specific attribute of abbreviation. - Copyright (C) 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <dwarf.h> -#include "libdwP.h" - - -int -dwarf_getabbrevattr (abbrev, idx, namep, formp, offsetp) - Dwarf_Abbrev *abbrev; - size_t idx; - unsigned int *namep; - unsigned int *formp; - Dwarf_Off *offsetp; -{ - if (abbrev == NULL) - return -1; - - size_t cnt = 0; - unsigned char *attrp = abbrev->attrp; - unsigned char *start_attrp; - unsigned int name; - unsigned int form; - - do - { - start_attrp = attrp; - - /* Attribute code and form are encoded as ULEB128 values. */ - get_uleb128 (name, attrp); - get_uleb128 (form, attrp); - - /* If both values are zero the index is out of range. */ - if (name == 0 && form == 0) - return -1; - } - while (cnt++ < idx); - - /* Store the result if requested. */ - if (namep != NULL) - *namep = name; - if (formp != NULL) - *formp = form; - if (offsetp != NULL) - *offsetp = (start_attrp - abbrev->attrp) + abbrev->offset; - - return 0; -} diff --git a/libdw/dwarf_getabbrevcode.c b/libdw/dwarf_getabbrevcode.c deleted file mode 100644 index ef3dac46..00000000 --- a/libdw/dwarf_getabbrevcode.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Get abbreviation code. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <dwarf.h> -#include "libdwP.h" - - -unsigned int -dwarf_getabbrevcode (abbrev) - Dwarf_Abbrev *abbrev; -{ - return abbrev == NULL ? 0 : abbrev->code; -} diff --git a/libdw/dwarf_getabbrevtag.c b/libdw/dwarf_getabbrevtag.c deleted file mode 100644 index 4707fdd1..00000000 --- a/libdw/dwarf_getabbrevtag.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Get abbreviation tag. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <dwarf.h> -#include "libdwP.h" - - -unsigned int -dwarf_getabbrevtag (abbrev) - Dwarf_Abbrev *abbrev; -{ - return abbrev == NULL ? 0 : abbrev->tag; -} diff --git a/libdw/dwarf_getarange_addr.c b/libdw/dwarf_getarange_addr.c deleted file mode 100644 index df143d02..00000000 --- a/libdw/dwarf_getarange_addr.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Get address range which includes given address. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libdwP.h> - - -Dwarf_Arange * -dwarf_getarange_addr (aranges, addr) - Dwarf_Aranges *aranges; - Dwarf_Addr addr; -{ - if (aranges == NULL) - return NULL; - - for (size_t cnt = 0; cnt < aranges->naranges; ++cnt) - if (aranges->info[cnt].addr <= addr - && addr < aranges->info[cnt].addr + aranges->info[cnt].length) - return &aranges->info[cnt]; - - __libdw_seterrno (DWARF_E_NO_MATCH); - return NULL; -} diff --git a/libdw/dwarf_getarangeinfo.c b/libdw/dwarf_getarangeinfo.c deleted file mode 100644 index b96c6316..00000000 --- a/libdw/dwarf_getarangeinfo.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Return list address ranges. - Copyright (C) 2000, 2001, 2002, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libdwP.h> - - -int -dwarf_getarangeinfo (Dwarf_Arange *arange, Dwarf_Addr *addrp, - Dwarf_Word *lengthp, Dwarf_Off *offsetp) -{ - if (arange == NULL) - return -1; - - if (addrp != NULL) - *addrp = arange->addr; - if (lengthp != NULL) - *lengthp = arange->length; - if (offsetp != NULL) - *offsetp = arange->offset; - - return 0; -} diff --git a/libdw/dwarf_getaranges.c b/libdw/dwarf_getaranges.c deleted file mode 100644 index 754baeca..00000000 --- a/libdw/dwarf_getaranges.c +++ /dev/null @@ -1,184 +0,0 @@ -/* Return list address ranges. - Copyright (C) 2000, 2001, 2002, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdlib.h> - -#include <libdwP.h> - - -struct arangelist -{ - Dwarf_Arange arange; - struct arangelist *next; -}; - - -int -dwarf_getaranges (dbg, aranges, naranges) - Dwarf *dbg; - Dwarf_Aranges **aranges; - size_t *naranges; -{ - if (dbg == NULL) - return -1; - - if (dbg->aranges != NULL) - { - *aranges = dbg->aranges; - if (naranges != NULL) - *naranges = dbg->aranges->naranges; - return 0; - } - - if (dbg->sectiondata[IDX_debug_aranges]->d_buf == NULL) - return -1; - - struct arangelist *arangelist = NULL; - unsigned int narangelist = 0; - - const char *readp - = (const char *) dbg->sectiondata[IDX_debug_aranges]->d_buf; - const char *readendp = readp + dbg->sectiondata[IDX_debug_aranges]->d_size; - - while (readp < readendp) - { - const char *hdrstart = readp; - - /* Each entry starts with a header: - - 1. A 4-byte or 12-byte length containing the length of the - set of entries for this compilation unit, not including the - length field itself. [...] - - 2. A 2-byte version identifier containing the value 2 for - DWARF Version 2.1. - - 3. A 4-byte or 8-byte offset into the .debug_info section. [...] - - 4. A 1-byte unsigned integer containing the size in bytes of - an address (or the offset portion of an address for segmented - addressing) on the target system. - - 5. A 1-byte unsigned integer containing the size in bytes of - a segment descriptor on the target system. */ - Dwarf_Word length = read_4ubyte_unaligned_inc (dbg, readp); - unsigned int length_bytes = 4; - if (length == 0xffffffff) - { - length = read_8ubyte_unaligned_inc (dbg, readp); - length_bytes = 8; - } - - unsigned int version = read_2ubyte_unaligned_inc (dbg, readp); - if (version != 2) - { - invalid: - __libdw_seterrno (DWARF_E_INVALID_DWARF); - return -1; - } - - Dwarf_Word offset; - if (length_bytes == 4) - offset = read_4ubyte_unaligned_inc (dbg, readp); - else - offset = read_8ubyte_unaligned_inc (dbg, readp); - - unsigned int address_size = *readp++; - if (address_size != 4 && address_size != 8) - goto invalid; - - /* Ignore the segment size value. */ - // XXX Really? - (void) *readp++; - - /* Round the address to the next multiple of 2*address_size. */ - readp += ((2 * address_size - ((readp - hdrstart) % (2 * address_size))) - % (2 * address_size)); - - //arange_info->offset = offset; - - while (1) - { - Dwarf_Word range_address; - Dwarf_Word range_length; - - if (address_size == 4) - { - range_address = read_4ubyte_unaligned_inc (dbg, readp); - range_length = read_4ubyte_unaligned_inc (dbg, readp); - } - else - { - range_address = read_8ubyte_unaligned_inc (dbg, readp); - range_length = read_8ubyte_unaligned_inc (dbg, readp); - } - - /* Two zero values mark the end. */ - if (range_address == 0 && range_length == 0) - break; - - struct arangelist *new_arange = - (struct arangelist *) alloca (sizeof (struct arangelist)); - - new_arange->arange.addr = range_address; - new_arange->arange.length = range_length; - - /* We store the actual CU DIE offset, not the CU header offset. */ - const char *cu_header = (dbg->sectiondata[IDX_debug_info]->d_buf - + offset); - unsigned int offset_size; - if (read_4ubyte_unaligned_noncvt (cu_header) == 0xffffffff) - offset_size = 8; - else - offset_size = 4; - new_arange->arange.offset = offset + 3 * offset_size - 4 + 3; - - new_arange->next = arangelist; - arangelist = new_arange; - ++narangelist; - } - } - - if (narangelist == 0) - { - if (naranges != NULL) - *naranges = 0; - *aranges = NULL; - return 0; - } - - /* Allocate the array for the result. */ - if (naranges != NULL) - *naranges = narangelist; - *aranges = libdw_alloc (dbg, Dwarf_Aranges, - sizeof (Dwarf_Aranges) - + narangelist * sizeof (Dwarf_Arange), 1); - - (*aranges)->dbg = dbg; - (*aranges)->naranges = narangelist; - - while (narangelist-- > 0) - { - (*aranges)->info[narangelist] = arangelist->arange; - arangelist = arangelist->next; - } - - dbg->aranges = *aranges; - - return 0; -} diff --git a/libdw/dwarf_getattrcnt.c b/libdw/dwarf_getattrcnt.c deleted file mode 100644 index 0758e030..00000000 --- a/libdw/dwarf_getattrcnt.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Get number of attributes of abbreviation. - Copyright (C) 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libdwP.h" - - -int -dwarf_getattrcnt (abbrev, attrcntp) - Dwarf_Abbrev *abbrev; - size_t *attrcntp; -{ - if (abbrev == NULL) - return -1; - - *attrcntp = abbrev->attrcnt; - - return 0; -} diff --git a/libdw/dwarf_getattrs.c b/libdw/dwarf_getattrs.c deleted file mode 100644 index 4ead80cc..00000000 --- a/libdw/dwarf_getattrs.c +++ /dev/null @@ -1,94 +0,0 @@ -/* Get attributes of the DIE. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libdwP.h" - - -ptrdiff_t -dwarf_getattrs (Dwarf_Die *die, int (*callback) (Dwarf_Attribute *, void *), - void *arg, ptrdiff_t offset) -{ - if (die == NULL) - return -1l; - - unsigned char *die_addr = die->addr; - - /* Get the abbreviation code. */ - unsigned int u128; - get_uleb128 (u128, die_addr); - - if (die->abbrev == NULL) - /* Find the abbreviation. */ - die->abbrev = __libdw_findabbrev (die->cu, u128); - - if (die->abbrev == (Dwarf_Abbrev *) -1l) - { - __libdw_seterrno (DWARF_E_INVALID_DWARF); - return -1l; - } - - /* This is where the attributes start. */ - unsigned char *attrp = die->abbrev->attrp + offset; - - /* Go over the list of attributes. */ - Dwarf *dbg = die->cu->dbg; - while (1) - { - /* Are we still in bounds? */ - if (unlikely (attrp - >= ((unsigned char *) dbg->sectiondata[IDX_debug_abbrev]->d_buf - + dbg->sectiondata[IDX_debug_abbrev]->d_size))) - { - __libdw_seterrno (DWARF_E_INVALID_DWARF); - return -1; - } - - /* Get attribute name and form. */ - Dwarf_Attribute attr; - // XXX Fix bound checks - get_uleb128 (attr.code, attrp); - get_uleb128 (attr.form, attrp); - - /* We can stop if we found the attribute with value zero. */ - if (attr.code == 0 && attr.form == 0) - return 0; - - /* Fill in the rest. */ - attr.valp = die_addr; - attr.cu = die->cu; - - /* Now call the callback function. */ - if (callback (&attr, arg) != DWARF_CB_OK) - return attrp - die->abbrev->attrp; - - /* Skip over the rest of this attribute (if there is any). */ - if (attr.form != 0) - { - size_t len = __libdw_form_val_len (dbg, die->cu, attr.form, - die_addr); - - if (unlikely (len == (size_t) -1l)) - /* Something wrong with the file. */ - return -1l; - - // XXX We need better boundary checks. - die_addr += len; - } - } - /* NOTREACHED */ -} diff --git a/libdw/dwarf_getelf.c b/libdw/dwarf_getelf.c deleted file mode 100644 index 1e2a06aa..00000000 --- a/libdw/dwarf_getelf.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Retrieve ELF descriptor used for DWARF access. - Copyright (C) 2002, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stddef.h> - -#include "libdwP.h" - - -Elf * -dwarf_get_elf (dwarf) - Dwarf *dwarf; -{ - if (dwarf == NULL) - /* Some error occurred before. */ - return NULL; - - return dwarf->elf; -} diff --git a/libdw/dwarf_getloclist.c b/libdw/dwarf_getloclist.c deleted file mode 100644 index 6339a8c8..00000000 --- a/libdw/dwarf_getloclist.c +++ /dev/null @@ -1,296 +0,0 @@ -/* Return location expression list. - Copyright (C) 2000, 2001, 2002, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include <search.h> -#include <stdlib.h> - -#include <libdwP.h> - - -struct loclist -{ - uint8_t atom; - Dwarf_Word number; - Dwarf_Word number2; - Dwarf_Word offset; - struct loclist *next; -}; - - -static int -loc_compare (const void *p1, const void *p2) -{ - const struct loc_s *l1 = (const struct loc_s *) p1; - const struct loc_s *l2 = (const struct loc_s *) p2; - - if ((uintptr_t) l1->addr < (uintptr_t) l2->addr) - return -1; - if ((uintptr_t) l1->addr > (uintptr_t) l2->addr) - return 1; - - return 0; -} - - -int -dwarf_getloclist (attr, llbuf, listlen) - Dwarf_Attribute *attr; - Dwarf_Loc **llbuf; - size_t *listlen; -{ - /* Must by one of the attribute listed below. */ - if (attr->code != DW_AT_location - && attr->code != DW_AT_data_member_location - && attr->code != DW_AT_vtable_elem_location - && attr->code != DW_AT_string_length - && attr->code != DW_AT_use_location - && attr->code != DW_AT_return_addr) - { - __libdw_seterrno (DWARF_E_NO_LOCLIST); - return -1; - } - - struct Dwarf_CU *cu = attr->cu; - Dwarf *dbg = cu->dbg; - - /* Must have the form data4 or data8 which act as an offset. */ - Dwarf_Block block; - if (dwarf_formblock (attr, &block) != 0) - return -1; - - /* Check whether we already looked at this list. */ - struct loc_s fake = { .addr = block.data }; - struct loc_s **found = tfind (&fake, &cu->locs, loc_compare); - if (found != NULL) - { - /* We already saw it. */ - *llbuf = (*found)->loc; - *listlen = (*found)->nloc; - - return 0; - } - - unsigned char *data = block.data; - unsigned char *const end_data = data + block.length; - - struct loclist *loclist = NULL; - unsigned int n = 0; - /* Decode the opcodes. It is possible in some situations to have a - block of size zero. */ - while (data < end_data) - { - struct loclist *newloc; - newloc = (struct loclist *) alloca (sizeof (struct loclist)); - newloc->number = 0; - newloc->number2 = 0; - newloc->offset = data - block.data; - newloc->next = loclist; - loclist = newloc; - ++n; - - switch ((newloc->atom = *data++)) - { - case DW_OP_addr: - /* Address, depends on address size of CU. */ - if (cu->address_size == 4) - { - if (unlikely (data + 4 > end_data)) - { - invalid: - __libdw_seterrno (DWARF_E_INVALID_DWARF); - return -1; - } - - newloc->number = read_4ubyte_unaligned_inc (dbg, data); - } - else - { - if (unlikely (data + 8 > end_data)) - goto invalid; - - newloc->number = read_8ubyte_unaligned_inc (dbg, data); - } - break; - - case DW_OP_deref: - case DW_OP_dup: - case DW_OP_drop: - case DW_OP_over: - case DW_OP_swap: - case DW_OP_rot: - case DW_OP_xderef: - case DW_OP_abs: - case DW_OP_and: - case DW_OP_div: - case DW_OP_minus: - case DW_OP_mod: - case DW_OP_mul: - case DW_OP_neg: - case DW_OP_not: - case DW_OP_or: - case DW_OP_plus: - case DW_OP_shl: - case DW_OP_shr: - case DW_OP_shra: - case DW_OP_xor: - case DW_OP_eq: - case DW_OP_ge: - case DW_OP_gt: - case DW_OP_le: - case DW_OP_lt: - case DW_OP_ne: - case DW_OP_lit0 ... DW_OP_lit31: - case DW_OP_reg0 ... DW_OP_reg31: - case DW_OP_nop: - case DW_OP_push_object_address: - case DW_OP_call_ref: - /* No operand. */ - break; - - case DW_OP_const1u: - case DW_OP_pick: - case DW_OP_deref_size: - case DW_OP_xderef_size: - if (unlikely (data >= end_data)) - goto invalid; - - newloc->number = *data++; - break; - - case DW_OP_const1s: - if (unlikely (data >= end_data)) - goto invalid; - - newloc->number = *((int8_t *) data); - ++data; - break; - - case DW_OP_const2u: - if (unlikely (data + 2 > end_data)) - goto invalid; - - newloc->number = read_2ubyte_unaligned_inc (dbg, data); - break; - - case DW_OP_const2s: - case DW_OP_skip: - case DW_OP_bra: - case DW_OP_call2: - if (unlikely (data + 2 > end_data)) - goto invalid; - - newloc->number = read_2sbyte_unaligned_inc (dbg, data); - break; - - case DW_OP_const4u: - if (unlikely (data + 4 > end_data)) - goto invalid; - - newloc->number = read_4ubyte_unaligned_inc (dbg, data); - break; - - case DW_OP_const4s: - case DW_OP_call4: - if (unlikely (data + 4 > end_data)) - goto invalid; - - newloc->number = read_4sbyte_unaligned_inc (dbg, data); - break; - - case DW_OP_const8u: - if (unlikely (data + 8 > end_data)) - goto invalid; - - newloc->number = read_8ubyte_unaligned_inc (dbg, data); - break; - - case DW_OP_const8s: - if (unlikely (data + 8 > end_data)) - goto invalid; - - newloc->number = read_8sbyte_unaligned_inc (dbg, data); - break; - - case DW_OP_constu: - case DW_OP_plus_uconst: - case DW_OP_regx: - case DW_OP_piece: - /* XXX Check size. */ - get_uleb128 (newloc->number, data); - break; - - case DW_OP_consts: - case DW_OP_breg0 ... DW_OP_breg31: - case DW_OP_fbreg: - /* XXX Check size. */ - get_sleb128 (newloc->number, data); - break; - - case DW_OP_bregx: - /* XXX Check size. */ - get_uleb128 (newloc->number, data); - get_sleb128 (newloc->number2, data); - break; - - default: - goto invalid; - } - } - - if (unlikely (n == 0)) - { - /* This is not allowed. - - XXX Is it? */ - goto invalid; - } - - /* Allocate the array. */ - Dwarf_Loc *result = libdw_alloc (dbg, Dwarf_Loc, sizeof (Dwarf_Loc), n); - - /* Store the result. */ - *llbuf = result; - *listlen = n; - - do - { - /* We populate the array from the back since the list is - backwards. */ - --n; - result[n].atom = loclist->atom; - result[n].number = loclist->number; - result[n].number2 = loclist->number2; - result[n].offset = loclist->offset; - - loclist = loclist->next; - } - while (n > 0); - - /* Insert a record in the search tree so that we can find it again - later. */ - struct loc_s *newp = libdw_alloc (dbg, struct loc_s, sizeof (struct loc_s), - 1); - newp->addr = block.data; - newp->loc = result; - newp->nloc = *listlen; - (void) tsearch (newp, &cu->locs, loc_compare); - - /* We did it. */ - return 0; -} diff --git a/libdw/dwarf_getmacros.c b/libdw/dwarf_getmacros.c deleted file mode 100644 index f6f933aa..00000000 --- a/libdw/dwarf_getmacros.c +++ /dev/null @@ -1,114 +0,0 @@ -/* Get public symbol information. - Copyright (C) 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include <string.h> - -#include <libdwP.h> - - -ptrdiff_t -dwarf_getmacros (die, callback, arg, offset) - Dwarf_Die *die; - int (*callback) (Dwarf_Macro *, void *); - void *arg; - ptrdiff_t offset; -{ - /* Get the appropriate attribute. */ - Dwarf_Attribute attr; - if (dwarf_attr (die, DW_AT_macro_info, &attr) == NULL) - return -1; - - /* Offset into the .debug_macinfo section. */ - Dwarf_Word macoff; - if (dwarf_formudata (&attr, &macoff) != 0) - return -1; - - const unsigned char *readp - = die->cu->dbg->sectiondata[IDX_debug_macinfo]->d_buf + offset; - const unsigned char *readendp - = readp + die->cu->dbg->sectiondata[IDX_debug_macinfo]->d_size; - - if (readp == readendp) - return 0; - - if (*readp != DW_MACINFO_start_file) - goto invalid; - - while (readp < readendp) - { - unsigned int opcode = *readp++; - unsigned int u128; - unsigned int u128_2 = 0; - const char *str = NULL; - const unsigned char *endp; - - switch (opcode) - { - case DW_MACINFO_define: - case DW_MACINFO_undef: - case DW_MACINFO_vendor_ext: - /* For the first two opcodes the parameters are - line, string - For the latter - number, string. - We can treat these cases together. */ - get_uleb128 (u128, readp); - - endp = memchr (readp, '\0', readendp - readp); - if (endp == NULL) - goto invalid; - - str = (char *) readp; - readp = endp + 1; - break; - - case DW_MACINFO_start_file: - /* The two parameters are line and file index. */ - get_uleb128 (u128, readp); - get_uleb128 (u128_2, readp); - break; - - case DW_MACINFO_end_file: - /* Nothing more to do. */ - return 0; - - default: - goto invalid; - } - - Dwarf_Macro mac; - mac.opcode = opcode; - mac.param1 = u128; - if (str == NULL) - mac.param2.u = u128_2; - else - mac.param2.s = str; - - if (callback (&mac, arg) != DWARF_CB_OK) - return (readp - - ((unsigned char *) die->cu->dbg->sectiondata[IDX_debug_macinfo]->d_buf - + offset)); - } - - /* If we come here the termination of the data for the CU is not - present. */ - invalid: - __libdw_seterrno (DWARF_E_INVALID_DWARF); - return -1; -} diff --git a/libdw/dwarf_getpubnames.c b/libdw/dwarf_getpubnames.c deleted file mode 100644 index c3cb5e2e..00000000 --- a/libdw/dwarf_getpubnames.c +++ /dev/null @@ -1,205 +0,0 @@ -/* Get public symbol information. - Copyright (C) 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <stdlib.h> -#include <string.h> -#include <sys/param.h> - -#include <libdwP.h> - - -static int -get_offsets (Dwarf *dbg) -{ - size_t allocated = 0; - size_t cnt = 0; - struct pubnames_s *mem = NULL; - const size_t entsize = sizeof (struct pubnames_s); - unsigned char *const startp = dbg->sectiondata[IDX_debug_pubnames]->d_buf; - unsigned char *readp = startp; - unsigned char *endp = readp + dbg->sectiondata[IDX_debug_pubnames]->d_size; - - while (readp + 14 < endp) - { - /* If necessary, allocate more entries. */ - if (cnt >= allocated) - { - allocated = MAX (10, 2 * allocated); - struct pubnames_s *newmem - = (struct pubnames_s *) realloc (mem, allocated * entsize); - if (newmem == NULL) - { - __libdw_seterrno (DWARF_E_NOMEM); - err_return: - free (mem); - return -1; - } - - mem = newmem; - } - - /* Read the set header. */ - int len_bytes = 4; - Dwarf_Off len = read_4ubyte_unaligned_inc (dbg, readp); - if (len == 0xffffffff) - { - len = read_8ubyte_unaligned_inc (dbg, readp); - len_bytes = 8; - } - - /* Now we know the offset of the first offset/name pair. */ - mem[cnt].set_start = readp + 2 + 2 * len_bytes - startp; - mem[cnt].address_len = len_bytes; - if (mem[cnt].set_start >= dbg->sectiondata[IDX_debug_pubnames]->d_size) - /* Something wrong, the first entry is beyond the end of - the section. */ - break; - - /* Read the version. It better be two for now. */ - uint16_t version = read_2ubyte_unaligned (dbg, readp); - if (version != 2) - { - __libdw_seterrno (DWARF_E_INVALID_VERSION); - goto err_return; - } - - /* Get the CU offset. */ - if (len_bytes == 4) - mem[cnt].cu_offset = read_4ubyte_unaligned (dbg, readp + 2); - else - mem[cnt].cu_offset = read_8ubyte_unaligned (dbg, readp + 2); - - /* Determine the size of the CU header. */ - assert (dbg->sectiondata[IDX_debug_info] != NULL); - assert (dbg->sectiondata[IDX_debug_info]->d_buf != NULL); - assert (mem[cnt].cu_offset + 3 - < dbg->sectiondata[IDX_debug_info]->d_size); - unsigned char *infop - = ((unsigned char *) dbg->sectiondata[IDX_debug_info]->d_buf - + mem[cnt].cu_offset); - if (read_4ubyte_unaligned_noncvt (infop) == 0xffffffff) - mem[cnt].cu_header_size = 23; - else - mem[cnt].cu_header_size = 11; - - ++cnt; - - /* Advance to the next set. */ - readp += len; - } - - if (mem == NULL) - { - __libdw_seterrno (DWARF_E_NO_ENTRY); - return -1; - } - - dbg->pubnames_sets = (struct pubnames_s *) realloc (mem, cnt * entsize); - dbg->pubnames_nsets = cnt; - - return 0; -} - - -ptrdiff_t -dwarf_getpubnames (dbg, callback, arg, offset) - Dwarf *dbg; - int (*callback) (Dwarf *, Dwarf_Global *, void *); - void *arg; - ptrdiff_t offset; -{ - if (dbg == NULL) - return -1l; - - /* Make sure it is a valid offset. */ - if (unlikely (dbg->sectiondata[IDX_debug_pubnames] == NULL - || offset >= dbg->sectiondata[IDX_debug_pubnames]->d_size)) - /* No (more) entry. */ - return 0; - - /* If necessary read the set information. */ - if (dbg->pubnames_nsets == 0 && get_offsets (dbg) != 0) - return -1l; - - /* Find the place where to start. */ - size_t cnt; - if (offset == 0) - { - cnt = 0; - offset = dbg->pubnames_sets[0].set_start; - } - else - { - for (cnt = 0; cnt + 1 < dbg->pubnames_nsets; ++cnt) - if (offset >= dbg->pubnames_sets[cnt].set_start) - { - assert (offset < dbg->pubnames_sets[cnt + 1].set_start); - break; - } - assert (cnt + 1 < dbg->pubnames_nsets); - } - - unsigned char *startp - = (unsigned char *) dbg->sectiondata[IDX_debug_pubnames]->d_buf; - unsigned char *readp = startp + offset; - while (1) - { - Dwarf_Global gl; - - gl.cu_offset = (dbg->pubnames_sets[cnt].cu_offset - + dbg->pubnames_sets[cnt].cu_header_size); - - while (1) - { - /* READP points to the next offset/name pair. */ - if (dbg->pubnames_sets[cnt].address_len == 4) - gl.die_offset = read_4ubyte_unaligned_inc (dbg, readp); - else - gl.die_offset = read_8ubyte_unaligned_inc (dbg, readp); - - /* If the offset is zero we reached the end of the set. */ - if (gl.die_offset == 0) - break; - - /* Add the CU offset. */ - gl.die_offset += dbg->pubnames_sets[cnt].cu_offset; - - gl.name = (char *) readp; - readp = (unsigned char *) rawmemchr (gl.name, '\0') + 1; - - /* We found name and DIE offset. Report it. */ - if (callback (dbg, &gl, arg) != DWARF_CB_OK) - { - /* The user wants us to stop. Return the offset of the - next entry. */ - return readp - startp; - } - } - - if (++cnt == dbg->pubnames_nsets) - /* This was the last set. */ - break; - - startp = (unsigned char *) dbg->sectiondata[IDX_debug_pubnames]->d_buf; - readp = startp + dbg->pubnames_sets[cnt].set_start; - } - - /* We are done. No more entries. */ - return 0; -} diff --git a/libdw/dwarf_getsrc_die.c b/libdw/dwarf_getsrc_die.c deleted file mode 100644 index 33cbd7b3..00000000 --- a/libdw/dwarf_getsrc_die.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Find line information for address. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libdwP.h" - - -Dwarf_Line * -dwarf_getsrc_die (Dwarf_Die *cudie, Dwarf_Addr addr) -{ - Dwarf_Lines *lines; - size_t nlines; - - if (dwarf_getsrclines (cudie, &lines, &nlines) != 0) - return NULL; - - if (addr >= lines->info[0].addr ) - for (size_t n = 1; n < nlines; ++n) - if (addr < lines->info[n].addr) - return &lines->info[n - 1]; - - __libdw_seterrno (DWARF_E_ADDR_OUTOFRANGE); - return NULL; -} diff --git a/libdw/dwarf_getsrcfiles.c b/libdw/dwarf_getsrcfiles.c deleted file mode 100644 index 1775168d..00000000 --- a/libdw/dwarf_getsrcfiles.c +++ /dev/null @@ -1,58 +0,0 @@ -/* Return source file information of CU. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <dwarf.h> -#include "libdwP.h" - - -int -dwarf_getsrcfiles (Dwarf_Die *cudie, Dwarf_Files **files, size_t *nfiles) -{ - if (unlikely (cudie == NULL || dwarf_tag (cudie) != DW_TAG_compile_unit)) - return -1; - - int res = -1; - - /* Get the information if it is not already known. */ - struct Dwarf_CU *const cu = cudie->cu; - if (cu->lines == NULL) - { - Dwarf_Lines *lines; - size_t nlines; - - /* Let the more generic function do the work. It'll create more - data but that will be needed in an real program anyway. */ - res = dwarf_getsrclines (cudie, &lines, &nlines); - } - else if (cu->files != (void *) -1l) - /* We already have the information. */ - res = 0; - - if (likely (res == 0)) - { - assert (cu->files != NULL && cu->files != (void *) -1l); - *files = cu->files; - if (nfiles != NULL) - *nfiles = cu->files->nfiles; - } - - // XXX Eventually: unlocking here. - - return res; -} diff --git a/libdw/dwarf_getsrclines.c b/libdw/dwarf_getsrclines.c deleted file mode 100644 index a372af2f..00000000 --- a/libdw/dwarf_getsrclines.c +++ /dev/null @@ -1,613 +0,0 @@ -/* Return line number information of CU. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <stdlib.h> -#include <string.h> -#include "dwarf.h" -#include "libdwP.h" - - -struct filelist -{ - Dwarf_Fileinfo info; - struct filelist *next; -}; - -struct linelist -{ - Dwarf_Line line; - struct linelist *next; -}; - - -/* Adds a new line to the matrix. We cannot definte a function because - we want to use alloca. */ -#define NEW_LINE(end_seq) \ - do { \ - /* Add the new line. */ \ - new_line = (struct linelist *) alloca (sizeof (struct linelist)); \ - \ - /* Set the line information. */ \ - new_line->line.addr = address; \ - new_line->line.file = file; \ - new_line->line.line = line; \ - new_line->line.column = column; \ - new_line->line.is_stmt = is_stmt; \ - new_line->line.basic_block = basic_block; \ - new_line->line.end_sequence = end_seq; \ - new_line->line.prologue_end = prologue_end; \ - new_line->line.epilogue_begin = epilogue_begin; \ - \ - new_line->next = linelist; \ - linelist = new_line; \ - ++nlinelist; \ - } while (0) - - -int -dwarf_getsrclines (Dwarf_Die *cudie, Dwarf_Lines **lines, size_t *nlines) -{ - if (unlikely (cudie == NULL || dwarf_tag (cudie) != DW_TAG_compile_unit)) - return -1; - - int res = -1; - - /* Get the information if it is not already known. */ - struct Dwarf_CU *const cu = cudie->cu; - if (cu->lines == NULL) - { - /* Failsafe mode: no data found. */ - cu->lines = (void *) -1l; - cu->files = (void *) -1l; - - /* The die must have a statement list associated. */ - Dwarf_Attribute stmt_list_mem; - Dwarf_Attribute *stmt_list = dwarf_attr (cudie, DW_AT_stmt_list, - &stmt_list_mem); - - /* Get the offset into the .debug_line section. NB: this call - also checks whether the previous dwarf_attr call failed. */ - Dwarf_Word offset; - if (dwarf_formudata (stmt_list, &offset) != 0) - goto out; - - Dwarf *dbg = cu->dbg; - if (dbg->sectiondata[IDX_debug_line] == NULL) - { - __libdw_seterrno (DWARF_E_NO_DEBUG_LINE); - goto out; - } - uint8_t *linep = dbg->sectiondata[IDX_debug_line]->d_buf + offset; - uint8_t *lineendp = (dbg->sectiondata[IDX_debug_line]->d_buf - + dbg->sectiondata[IDX_debug_line]->d_size); - - /* Get the compilation directory. */ - Dwarf_Attribute compdir_attr_mem; - Dwarf_Attribute *compdir_attr = dwarf_attr (cudie, DW_AT_comp_dir, - &compdir_attr_mem); - const char *comp_dir = dwarf_formstring (compdir_attr); - - if (unlikely (linep + 4 > lineendp)) - { - invalid_data: - __libdw_seterrno (DWARF_E_INVALID_DEBUG_LINE); - goto out; - } - Dwarf_Word unit_length = read_4ubyte_unaligned_inc (dbg, linep); - unsigned int length = 4; - if (unlikely (unit_length == 0xffffffff)) - { - if (unlikely (linep + 8 > lineendp)) - goto invalid_data; - unit_length = read_8ubyte_unaligned_inc (dbg, linep); - length = 8; - } - - /* Check whether we have enough room in the section. */ - if (unit_length < 2 + length + 5 * 1 - || unlikely (linep + unit_length > lineendp)) - goto invalid_data; - lineendp = linep + unit_length; - - /* The next element of the header is the version identifier. */ - uint_fast16_t version = read_2ubyte_unaligned_inc (dbg, linep); - if (unlikely (version != DWARF_VERSION)) - { - __libdw_seterrno (DWARF_E_VERSION); - goto out; - } - - /* Next comes the header length. */ - Dwarf_Word header_length; - if (length == 4) - header_length = read_4ubyte_unaligned_inc (dbg, linep); - else - header_length = read_8ubyte_unaligned_inc (dbg, linep); - unsigned char *header_start = linep; - - /* Next the minimum instruction length. */ - uint_fast8_t minimum_instr_len = *linep++; - - /* Then the flag determining the default value of the is_stmt - register. */ - uint_fast8_t default_is_stmt = *linep++; - - /* Now the line base. */ - int_fast8_t line_base = *((int_fast8_t *) linep); - ++linep; - - /* And the line range. */ - uint_fast8_t line_range = *linep++; - - /* The opcode base. */ - uint_fast8_t opcode_base = *linep++; - - /* Remember array with the standard opcode length (-1 to account for - the opcode with value zero not being mentioned). */ - uint8_t *standard_opcode_lengths = linep - 1; - linep += opcode_base - 1; - if (unlikely (linep >= lineendp)) - goto invalid_data; - - /* First comes the list of directories. Add the compilation - directory first since the index zero is used for it. */ - struct dirlist - { - const char *dir; - size_t len; - struct dirlist *next; - } comp_dir_elem = - { - .dir = comp_dir, - .len = comp_dir ? strlen (comp_dir) : 0, - .next = NULL - }; - struct dirlist *dirlist = &comp_dir_elem; - unsigned int ndirlist = 1; - - // XXX Directly construct array to conserve memory? - while (*linep != 0) - { - struct dirlist *new_dir = - (struct dirlist *) alloca (sizeof (*new_dir)); - - new_dir->dir = (char *) linep; - uint8_t *endp = memchr (linep, '\0', lineendp - linep); - if (endp == NULL) - goto invalid_data; - new_dir->len = endp - linep; - new_dir->next = dirlist; - dirlist = new_dir; - ++ndirlist; - linep = endp + 1; - } - /* Skip the final NUL byte. */ - ++linep; - - /* Rearrange the list in array form. */ - struct dirlist **dirarray - = (struct dirlist **) alloca (ndirlist * sizeof (*dirarray)); - while (ndirlist-- > 0) - { - dirarray[ndirlist] = dirlist; - dirlist = dirlist->next; - } - - /* Now read the files. */ - struct filelist null_file = - { - .info = - { - .name = "???", - .mtime = 0, - .length = 0 - }, - .next = NULL - }; - struct filelist *filelist = &null_file; - unsigned int nfilelist = 1; - - if (unlikely (linep >= lineendp)) - goto invalid_data; - while (*linep != 0) - { - struct filelist *new_file = - (struct filelist *) alloca (sizeof (*new_file)); - - /* First comes the file name. */ - char *fname = (char *) linep; - uint8_t *endp = memchr (fname, '\0', lineendp - linep); - if (endp == NULL) - goto invalid_data; - size_t fnamelen = endp - (uint8_t *) fname; - linep = endp + 1; - - /* Then the index. */ - Dwarf_Word diridx; - get_uleb128 (diridx, linep); - if (unlikely (diridx >= ndirlist)) - { - __libdw_seterrno (DWARF_E_INVALID_DIR_IDX); - goto out; - } - - if (*fname == '/') - /* It's an absolute path. */ - new_file->info.name = fname; - else - { - new_file->info.name = libdw_alloc (dbg, char, 1, - dirarray[diridx]->len + 1 - + fnamelen + 1); - char *cp = new_file->info.name; - - if (dirarray[diridx]->dir != NULL) - { - /* This value could be NULL in case the DW_AT_comp_dir - was not present. We cannot do much in this case. - The easiest thing is to convert the path in an - absolute path. */ - cp = stpcpy (cp, dirarray[diridx]->dir); - } - *cp++ = '/'; - strcpy (cp, fname); - assert (strlen (new_file->info.name) - < dirarray[diridx]->len + 1 + fnamelen + 1); - } - - /* Next comes the modification time. */ - get_uleb128 (new_file->info.mtime, linep); - - /* Finally the length of the file. */ - get_uleb128 (new_file->info.length, linep); - - new_file->next = filelist; - filelist = new_file; - ++nfilelist; - } - /* Skip the final NUL byte. */ - ++linep; - - /* Consistency check. */ - if (unlikely (linep != header_start + header_length)) - { - __libdw_seterrno (DWARF_E_INVALID_DWARF); - goto out; - } - - /* We are about to process the statement program. Initialize the - state machine registers (see 6.2.2 in the v2.1 specification). */ - Dwarf_Word address = 0; - size_t file = 1; - size_t line = 1; - size_t column = 0; - uint_fast8_t is_stmt = default_is_stmt; - int basic_block = 0; - int prologue_end = 0; - int epilogue_begin = 0; - - /* Process the instructions. */ - struct linelist *linelist = NULL; - unsigned int nlinelist = 0; - while (linep < lineendp) - { - struct linelist *new_line; - unsigned int opcode; - unsigned int u128; - int s128; - - /* Read the opcode. */ - opcode = *linep++; - - /* Is this a special opcode? */ - if (likely (opcode >= opcode_base)) - { - /* Yes. Handling this is quite easy since the opcode value - is computed with - - opcode = (desired line increment - line_base) - + (line_range * address advance) + opcode_base - */ - int line_increment = (line_base - + (opcode - opcode_base) % line_range); - unsigned int address_increment = (minimum_instr_len - * ((opcode - opcode_base) - / line_range)); - - /* Perform the increments. */ - line += line_increment; - address += address_increment; - - /* Add a new line with the current state machine values. */ - NEW_LINE (0); - - /* Reset the flags. */ - basic_block = 0; - prologue_end = 0; - epilogue_begin = 0; - } - else if (opcode == 0) - { - /* This an extended opcode. */ - if (unlikely (linep + 2 > lineendp)) - goto invalid_data; - - /* The length. */ - unsigned int len = *linep++; - - if (unlikely (linep + len > lineendp)) - goto invalid_data; - - /* The sub-opcode. */ - opcode = *linep++; - - switch (opcode) - { - case DW_LNE_end_sequence: - /* Add a new line with the current state machine values. - The is the end of the sequence. */ - NEW_LINE (1); - - /* Reset the registers. */ - address = 0; - file = 1; - line = 1; - column = 0; - is_stmt = default_is_stmt; - basic_block = 0; - prologue_end = 0; - epilogue_begin = 0; - break; - - case DW_LNE_set_address: - /* The value is an address. The size is defined as - apporiate for the target machine. We use the - address size field from the CU header. */ - if (cu->address_size == 4) - address = read_4ubyte_unaligned_inc (dbg, linep); - else - address = read_8ubyte_unaligned_inc (dbg, linep); - break; - - case DW_LNE_define_file: - { - char *fname = (char *) linep; - uint8_t *endp = memchr (linep, '\0', lineendp - linep); - if (endp == NULL) - goto invalid_data; - size_t fnamelen = endp - linep; - linep = endp + 1; - - unsigned int diridx; - get_uleb128 (diridx, linep); - Dwarf_Word mtime; - get_uleb128 (mtime, linep); - Dwarf_Word filelength; - get_uleb128 (filelength, linep); - - struct filelist *new_file = - (struct filelist *) alloca (sizeof (*new_file)); - if (fname[0] == '/') - new_file->info.name = fname; - else - { - new_file->info.name = - libdw_alloc (dbg, char, 1, (dirarray[diridx]->len + 1 - + fnamelen + 1)); - char *cp = new_file->info.name; - - if (dirarray[diridx]->dir != NULL) - /* This value could be NULL in case the - DW_AT_comp_dir was not present. We - cannot do much in this case. The easiest - thing is to convert the path in an - absolute path. */ - cp = stpcpy (cp, dirarray[diridx]->dir); - *cp++ = '/'; - strcpy (cp, fname); - } - - new_file->info.mtime = mtime; - new_file->info.length = filelength; - new_file->next = filelist; - filelist = new_file; - ++nfilelist; - } - break; - - default: - /* Unknown, ignore it. */ - linep += len - 1; - break; - } - } - else if (opcode <= DW_LNS_set_epilog_begin) - { - /* This is a known standard opcode. */ - switch (opcode) - { - case DW_LNS_copy: - /* Takes no argument. */ - if (unlikely (standard_opcode_lengths[opcode] != 0)) - goto invalid_data; - - /* Add a new line with the current state machine values. */ - NEW_LINE (0); - - /* Reset the flags. */ - basic_block = 0; - /* XXX Whether the following two lines are necessary is - unclear. I guess the current v2.1 specification has - a bug in that it says clearing these two registers is - not necessary. */ - prologue_end = 0; - epilogue_begin = 0; - break; - - case DW_LNS_advance_pc: - /* Takes one uleb128 parameter which is added to the - address. */ - if (unlikely (standard_opcode_lengths[opcode] != 1)) - goto invalid_data; - - get_uleb128 (u128, linep); - address += minimum_instr_len * u128; - break; - - case DW_LNS_advance_line: - /* Takes one sleb128 parameter which is added to the - line. */ - if (unlikely (standard_opcode_lengths[opcode] != 1)) - goto invalid_data; - - get_sleb128 (s128, linep); - line += s128; - break; - - case DW_LNS_set_file: - /* Takes one uleb128 parameter which is stored in file. */ - if (unlikely (standard_opcode_lengths[opcode] != 1)) - goto invalid_data; - - get_uleb128 (u128, linep); - file = u128; - break; - - case DW_LNS_set_column: - /* Takes one uleb128 parameter which is stored in column. */ - if (unlikely (standard_opcode_lengths[opcode] != 1)) - goto invalid_data; - - get_uleb128 (u128, linep); - column = u128; - break; - - case DW_LNS_negate_stmt: - /* Takes no argument. */ - if (unlikely (standard_opcode_lengths[opcode] != 0)) - goto invalid_data; - - is_stmt = 1 - is_stmt; - break; - - case DW_LNS_set_basic_block: - /* Takes no argument. */ - if (unlikely (standard_opcode_lengths[opcode] != 0)) - goto invalid_data; - - basic_block = 1; - break; - - case DW_LNS_const_add_pc: - /* Takes no argument. */ - if (unlikely (standard_opcode_lengths[opcode] != 0)) - goto invalid_data; - - address += (minimum_instr_len - * ((255 - opcode_base) / line_range)); - break; - - case DW_LNS_fixed_advance_pc: - /* Takes one 16 bit parameter which is added to the - address. */ - if (unlikely (standard_opcode_lengths[opcode] != 1)) - goto invalid_data; - - address += read_2ubyte_unaligned_inc (dbg, linep); - break; - - case DW_LNS_set_prologue_end: - /* Takes no argument. */ - if (unlikely (standard_opcode_lengths[opcode] != 0)) - goto invalid_data; - - prologue_end = 1; - break; - - case DW_LNS_set_epilog_begin: - /* Takes no argument. */ - if (unlikely (standard_opcode_lengths[opcode] != 0)) - goto invalid_data; - - epilogue_begin = 1; - break; - } - } - else - { - /* This is a new opcode the generator but not we know about. - Read the parameters associated with it but then discard - everything. Read all the parameters for this opcode. */ - for (int n = standard_opcode_lengths[opcode]; n > 0; --n) - get_uleb128 (u128, linep); - - /* Next round, ignore this opcode. */ - continue; - } - } - - /* Put all the files in an array. */ - Dwarf_Files *files = libdw_alloc (dbg, Dwarf_Files, - sizeof (Dwarf_Files) - + nfilelist * sizeof (Dwarf_Fileinfo), - 1); - files->nfiles = nfilelist; - while (nfilelist-- > 0) - { - files->info[nfilelist] = filelist->info; - filelist = filelist->next; - } - assert (filelist == NULL); - - /* Remember the debugging descriptor. */ - files->dbg = dbg; - - /* Make the file data structure available through the CU. */ - cu->files = files; - - cu->lines = libdw_alloc (dbg, Dwarf_Lines, (sizeof (Dwarf_Lines) - + (sizeof (Dwarf_Line) - * nlinelist)), 1); - cu->lines->nlines = nlinelist; - while (nlinelist-- > 0) - { - cu->lines->info[nlinelist] = linelist->line; - cu->lines->info[nlinelist].files = files; - linelist = linelist->next; - } - assert (linelist == NULL); - - /* Success. */ - res = 0; - } - else if (cu->lines != (void *) -1l) - /* We already have the information. */ - res = 0; - - if (likely (res == 0)) - { - *lines = cu->lines; - *nlines = cu->lines->nlines; - } - out: - - // XXX Eventually: unlocking here. - - return res; -} diff --git a/libdw/dwarf_getstring.c b/libdw/dwarf_getstring.c deleted file mode 100644 index e4abe8cb..00000000 --- a/libdw/dwarf_getstring.c +++ /dev/null @@ -1,51 +0,0 @@ -/* Get string. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <string.h> -#include "libdwP.h" - - -const char * -dwarf_getstring (dbg, offset, lenp) - Dwarf *dbg; - Dwarf_Off offset; - size_t *lenp; -{ - if (dbg == NULL) - return NULL; - - if (dbg->sectiondata[IDX_debug_str] == NULL - || offset >= dbg->sectiondata[IDX_debug_str]->d_size) - { - no_string: - __libdw_seterrno (DWARF_E_NO_STRING); - return NULL; - } - - const char *result = ((const char *) dbg->sectiondata[IDX_debug_str]->d_buf - + offset); - const char *endp = memchr (result, '\0', - dbg->sectiondata[IDX_debug_str]->d_size - offset); - if (endp == NULL) - goto no_string; - - if (lenp != NULL) - *lenp = endp - result; - - return result; -} diff --git a/libdw/dwarf_hasattr.c b/libdw/dwarf_hasattr.c deleted file mode 100644 index 15ad8daa..00000000 --- a/libdw/dwarf_hasattr.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Check whether given DIE has specific attribute. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include "libdwP.h" - - -int -dwarf_hasattr (die, search_name) - Dwarf_Die *die; - unsigned int search_name; -{ - if (die == NULL) - return 0; - - /* Search for the attribute with the given name. */ - unsigned int code; - (void) __libdw_find_attr (die, search_name, &code, NULL); - - return code == search_name; -} diff --git a/libdw/dwarf_haschildren.c b/libdw/dwarf_haschildren.c deleted file mode 100644 index 2a9fe5ff..00000000 --- a/libdw/dwarf_haschildren.c +++ /dev/null @@ -1,48 +0,0 @@ -/* Return string associated with given attribute. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libdwP.h" -#include <string.h> - - -int -dwarf_haschildren (die) - Dwarf_Die *die; -{ - /* Find the abbreviation entry. */ - Dwarf_Abbrev *abbrevp = die->abbrev; - if (abbrevp != (Dwarf_Abbrev *) -1l) - { - unsigned char *readp = (unsigned char *) die->addr; - - /* First we have to get the abbreviation code so that we can decode - the data in the DIE. */ - unsigned int abbrev_code; - get_uleb128 (abbrev_code, readp); - - abbrevp = __libdw_findabbrev (die->cu, abbrev_code); - die->abbrev = abbrevp ?: (Dwarf_Abbrev *) -1l; - } - if (unlikely (die->abbrev == (Dwarf_Abbrev *) -1l)) - { - __libdw_seterrno (DWARF_E_INVALID_DWARF); - return 0; - } - - return die->abbrev->has_children; -} diff --git a/libdw/dwarf_hasform.c b/libdw/dwarf_hasform.c deleted file mode 100644 index 392b1f13..00000000 --- a/libdw/dwarf_hasform.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Check whether given attribute has specific form. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include "libdwP.h" - - -int -dwarf_hasform (attr, search_form) - Dwarf_Attribute *attr; - unsigned int search_form; -{ - if (attr == NULL) - return 0; - - return attr->form == search_form; -} diff --git a/libdw/dwarf_highpc.c b/libdw/dwarf_highpc.c deleted file mode 100644 index 019cf141..00000000 --- a/libdw/dwarf_highpc.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Return high PC attribute of DIE. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include "libdwP.h" - - -int -dwarf_highpc (die, return_addr) - Dwarf_Die *die; - Dwarf_Addr *return_addr; -{ - Dwarf_Attribute attr_mem; - - return dwarf_formaddr (dwarf_attr (die, DW_AT_high_pc, &attr_mem), - return_addr); -} diff --git a/libdw/dwarf_lineaddr.c b/libdw/dwarf_lineaddr.c deleted file mode 100644 index ddfc01ba..00000000 --- a/libdw/dwarf_lineaddr.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Return line address. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libdwP.h" - - -int -dwarf_lineaddr (Dwarf_Line *line, Dwarf_Addr *addrp) -{ - if (line == NULL) - return -1; - - *addrp = line->addr; - - return 0; -} diff --git a/libdw/dwarf_linebeginstatement.c b/libdw/dwarf_linebeginstatement.c deleted file mode 100644 index d974d8f4..00000000 --- a/libdw/dwarf_linebeginstatement.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Return true if record is for beginning of a statement. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libdwP.h" - - -int -dwarf_linebeginstatement (Dwarf_Line *line, bool *flagp) -{ - if (line == NULL) - return -1; - - *flagp = line->is_stmt; - - return 0; -} diff --git a/libdw/dwarf_lineblock.c b/libdw/dwarf_lineblock.c deleted file mode 100644 index a6b8e0c2..00000000 --- a/libdw/dwarf_lineblock.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Return true if record is for beginning of a basic block. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libdwP.h" - - -int -dwarf_lineblock (Dwarf_Line *line, bool *flagp) -{ - if (line == NULL) - return -1; - - *flagp = line->basic_block; - - return 0; -} diff --git a/libdw/dwarf_linecol.c b/libdw/dwarf_linecol.c deleted file mode 100644 index 2430d372..00000000 --- a/libdw/dwarf_linecol.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Return column in line. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libdwP.h" - - -int -dwarf_linecol (Dwarf_Line *line, int *colp) -{ - if (line == NULL) - return -1; - - *colp = line->column; - - return 0; -} diff --git a/libdw/dwarf_lineendsequence.c b/libdw/dwarf_lineendsequence.c deleted file mode 100644 index c49fabe2..00000000 --- a/libdw/dwarf_lineendsequence.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Return true if record is for end of sequence. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libdwP.h" - - -int -dwarf_lineendsequence (Dwarf_Line *line, bool *flagp) -{ - if (line == NULL) - return -1; - - *flagp = line->end_sequence; - - return 0; -} diff --git a/libdw/dwarf_lineepiloguebegin.c b/libdw/dwarf_lineepiloguebegin.c deleted file mode 100644 index ee4f5bb7..00000000 --- a/libdw/dwarf_lineepiloguebegin.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Return true if record is for beginning of epilogue. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libdwP.h" - - -int -dwarf_lineepiloguebegin (Dwarf_Line *line, bool *flagp) -{ - if (line == NULL) - return -1; - - *flagp = line->epilogue_begin; - - return 0; -} diff --git a/libdw/dwarf_lineno.c b/libdw/dwarf_lineno.c deleted file mode 100644 index 5ad24067..00000000 --- a/libdw/dwarf_lineno.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Return line number. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libdwP.h" - - -int -dwarf_lineno (Dwarf_Line *line, int *linep) -{ - if (line == NULL) - return -1; - - *linep = line->line; - - return 0; -} diff --git a/libdw/dwarf_lineprologueend.c b/libdw/dwarf_lineprologueend.c deleted file mode 100644 index e869025c..00000000 --- a/libdw/dwarf_lineprologueend.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Return true if record is for end of prologue. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libdwP.h" - - -int -dwarf_lineprologueend (Dwarf_Line *line, bool *flagp) -{ - if (line == NULL) - return -1; - - *flagp = line->prologue_end; - - return 0; -} diff --git a/libdw/dwarf_linesrc.c b/libdw/dwarf_linesrc.c deleted file mode 100644 index 0aca1d6f..00000000 --- a/libdw/dwarf_linesrc.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Find line information for address. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libdwP.h" - - -const char * -dwarf_linesrc (Dwarf_Line *line, Dwarf_Word *mtime, Dwarf_Word *length) -{ - if (line == NULL) - return NULL; - - if (line->file >= line->files->nfiles) - { - __libdw_seterrno (DWARF_E_INVALID_DWARF); - return NULL; - } - - if (mtime != NULL) - *mtime = line->files->info[line->file].mtime; - - if (length != NULL) - *length = line->files->info[line->file].length; - - return line->files->info[line->file].name; -} diff --git a/libdw/dwarf_lowpc.c b/libdw/dwarf_lowpc.c deleted file mode 100644 index 95d29120..00000000 --- a/libdw/dwarf_lowpc.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Return low PC attribute of DIE. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include "libdwP.h" - - -int -dwarf_lowpc (die, return_addr) - Dwarf_Die *die; - Dwarf_Addr *return_addr; -{ - Dwarf_Attribute attr_mem; - - return dwarf_formaddr (dwarf_attr (die, DW_AT_low_pc, &attr_mem), - return_addr); -} diff --git a/libdw/dwarf_nextcu.c b/libdw/dwarf_nextcu.c deleted file mode 100644 index e674a66e..00000000 --- a/libdw/dwarf_nextcu.c +++ /dev/null @@ -1,131 +0,0 @@ -/* Advance to next CU header. - Copyright (C) 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libdwP.h> - - -int -dwarf_nextcu (dwarf, off, next_off, header_sizep, abbrev_offsetp, - address_sizep, offset_sizep) - Dwarf *dwarf; - Dwarf_Off off; - Dwarf_Off *next_off; - size_t *header_sizep; - Dwarf_Off *abbrev_offsetp; - uint8_t *address_sizep; - uint8_t *offset_sizep; -{ - /* Maybe there has been an error before. */ - if (dwarf == NULL) - return -1; - - /* If we reached the end before don't do anything. */ - if (off == (Dwarf_Off) -1l - /* Make sure there is enough space in the .debug_info section - for at least the initial word. We cannot test the rest since - we don't know yet whether this is a 64-bit object or not. */ - || unlikely (off + 4 >= dwarf->sectiondata[IDX_debug_info]->d_size)) - { - *next_off = (Dwarf_Off) -1l; - return 1; - } - - /* This points into the .debug_info section to the beginning of the - CU entry. */ - char *bytes = (char *) dwarf->sectiondata[IDX_debug_info]->d_buf + off; - - /* The format of the CU header is described in dwarf2p1 7.5.1: - - 1. A 4-byte or 12-byte unsigned integer representing the length - of the .debug_info contribution for that compilation unit, not - including the length field itself. In the 32-bit DWARF format, - this is a 4-byte unsigned integer (which must be less than - 0xffffff00); in the 64-bit DWARF format, this consists of the - 4-byte value 0xffffffff followed by an 8-byte unsigned integer - that gives the actual length (see Section 7.4). - - 2. A 2-byte unsigned integer representing the version of the - DWARF information for that compilation unit. For DWARF Version - 2.1, the value in this field is 2. - - 3. A 4-byte or 8-byte unsigned offset into the .debug_abbrev - section. This offset associates the compilation unit with a - particular set of debugging information entry abbreviations. In - the 32-bit DWARF format, this is a 4-byte unsigned length; in - the 64-bit DWARF format, this is an 8-byte unsigned length (see - Section 7.4). - - 4. A 1-byte unsigned integer representing the size in bytes of - an address on the target architecture. If the system uses - segmented addressing, this value represents the size of the - offset portion of an address. */ - uint64_t length = read_4ubyte_unaligned_inc (dwarf, bytes); - size_t offset_size = 4; - if (length == 0xffffffffu) - offset_size = 8; - - /* Now we know how large the header is. Note the trick in the - computation. If the offset_size is 4 the '- 4' term undoes the - '2 *'. If offset_size is 8 this term computes the size of the - escape value plus the 8 byte offset. */ - if (unlikely (off + 2 * offset_size - 4 + sizeof (uint16_t) - + offset_size + sizeof (uint8_t) - >= dwarf->sectiondata[IDX_debug_info]->d_size)) - { - *next_off = -1; - return 1; - } - - if (length == 0xffffffffu) - /* This is a 64-bit DWARF format. */ - length = read_8ubyte_unaligned_inc (dwarf, bytes); - - /* Read the version stamp. Always a 16-bit value. - XXX Do we need the value? */ - read_2ubyte_unaligned_inc (dwarf, bytes); - - /* Get offset in .debug_abbrev. Note that the size of the entry - depends on whether this is a 32-bit or 64-bit DWARF definition. */ - uint64_t abbrev_offset; - if (offset_size == 4) - abbrev_offset = read_4ubyte_unaligned_inc (dwarf, bytes); - else - abbrev_offset = read_8ubyte_unaligned_inc (dwarf, bytes); - if (abbrev_offsetp != NULL) - *abbrev_offsetp = abbrev_offset; - - /* The address size. Always an 8-bit value. */ - uint8_t address_size = *bytes++; - if (address_sizep != NULL) - *address_sizep = address_size; - - /* Store the offset size. */ - if (offset_sizep != NULL) - *offset_sizep = offset_size; - - /* Store the header length. */ - if (header_sizep != NULL) - *header_sizep = (bytes - - ((char *) dwarf->sectiondata[IDX_debug_info]->d_buf - + off)); - - /* See above for an explanation of the trick in this formula. */ - *next_off = off + 2 * offset_size - 4 + length; - - return 0; -} diff --git a/libdw/dwarf_offabbrev.c b/libdw/dwarf_offabbrev.c deleted file mode 100644 index 17978fbc..00000000 --- a/libdw/dwarf_offabbrev.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Get abbreviation at given offset. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libdwP.h" - - -int -dwarf_offabbrev (Dwarf *dbg, Dwarf_Off offset, size_t *lengthp, - Dwarf_Abbrev *abbrevp) -{ - if (dbg == NULL) - return -1; - - return __libdw_getabbrev (dbg, NULL, offset, lengthp, abbrevp) == NULL; -} diff --git a/libdw/dwarf_offdie.c b/libdw/dwarf_offdie.c deleted file mode 100644 index 6ef5595c..00000000 --- a/libdw/dwarf_offdie.c +++ /dev/null @@ -1,54 +0,0 @@ -/* Return DIE at given offset. - Copyright (C) 2002, 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <string.h> -#include "libdwP.h" - - -Dwarf_Die * -dwarf_offdie (dbg, offset, result) - Dwarf *dbg; - Dwarf_Off offset; - Dwarf_Die *result; -{ - if (dbg == NULL) - return NULL; - - if (offset >= dbg->sectiondata[IDX_debug_info]->d_size) - { - __libdw_seterrno (DWARF_E_INVALID_DWARF); - return NULL; - } - - /* Clear the entire DIE structure. This signals we have not yet - determined any of the information. */ - memset (result, '\0', sizeof (Dwarf_Die)); - - result->addr = (char *) dbg->sectiondata[IDX_debug_info]->d_buf + offset; - - /* Get the CU. */ - result->cu = __libdw_findcu (dbg, offset); - if (result->cu == NULL) - { - /* This should never happen. The input file is malformed. */ - __libdw_seterrno (DWARF_E_INVALID_DWARF); - result = NULL; - } - - return result; -} diff --git a/libdw/dwarf_onearange.c b/libdw/dwarf_onearange.c deleted file mode 100644 index 0c372526..00000000 --- a/libdw/dwarf_onearange.c +++ /dev/null @@ -1,35 +0,0 @@ -/* Return one of the address range entries. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libdwP.h" - - -Dwarf_Arange * -dwarf_onearange (Dwarf_Aranges *aranges, size_t idx) -{ - if (aranges == NULL) - return NULL; - - if (idx >= aranges->naranges) - { - __libdw_seterrno (DWARF_E_INVALID_ARANGE_IDX); - return NULL; - } - - return &aranges->info[idx]; -} diff --git a/libdw/dwarf_onesrcline.c b/libdw/dwarf_onesrcline.c deleted file mode 100644 index 9234ef9a..00000000 --- a/libdw/dwarf_onesrcline.c +++ /dev/null @@ -1,35 +0,0 @@ -/* Return one of the sources lines of a CU. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libdwP.h" - - -Dwarf_Line * -dwarf_onesrcline (Dwarf_Lines *lines, size_t idx) -{ - if (lines == NULL) - return NULL; - - if (idx >= lines->nlines) - { - __libdw_seterrno (DWARF_E_INVALID_LINE_IDX); - return NULL; - } - - return &lines->info[idx]; -} diff --git a/libdw/dwarf_siblingof.c b/libdw/dwarf_siblingof.c deleted file mode 100644 index 90081c64..00000000 --- a/libdw/dwarf_siblingof.c +++ /dev/null @@ -1,104 +0,0 @@ -/* Return sibling of given DIE. - Copyright (C) 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libdwP.h" -#include <dwarf.h> -#include <string.h> - - -int -dwarf_siblingof (die, result) - Dwarf_Die *die; - Dwarf_Die *result; -{ - /* Ignore previous errors. */ - if (die == NULL) - return -1; - - unsigned int level = 0; - - /* Copy of the current DIE. */ - Dwarf_Die this_die = *die; - /* Temporary attributes we create. */ - Dwarf_Attribute sibattr; - /* Copy of the CU in the request. */ - sibattr.cu = this_die.cu; - /* That's the address we start looking. */ - unsigned char *addr = this_die.addr; - - /* Search for the beginning of the next die on this level. We - must not return the dies for children of the given die. */ - do - { - /* Find the end of the DIE or the sibling attribute. */ - addr = __libdw_find_attr (&this_die, DW_AT_sibling, &sibattr.code, - &sibattr.form); - if (sibattr.code == DW_AT_sibling) - { - Dwarf_Off offset; - sibattr.valp = addr; - if (dwarf_formref (&sibattr, &offset) != 0) - /* Something went wrong. */ - return -1; - - /* Compute the next address. */ - addr = ((unsigned char *) - sibattr.cu->dbg->sectiondata[IDX_debug_info]->d_buf - + sibattr.cu->start + offset); - } - else if (unlikely (addr == NULL) - || unlikely (this_die.abbrev == (Dwarf_Abbrev *) -1l)) - return -1; - else if (this_die.abbrev->has_children) - /* This abbreviation has children. */ - ++level; - - /* Check that we are not yet at the end. */ - while (*addr == '\0') - { - if (level-- == 0) - /* No more sibling at all. */ - return 1; - - ++addr; - } - - /* Initialize the 'current DIE'. */ - this_die.addr = addr; - this_die.abbrev = NULL; - } - while (level > 0); - - /* Maybe we reached the end of the CU. */ - if (addr - >= ((unsigned char *) sibattr.cu->dbg->sectiondata[IDX_debug_info]->d_buf - + sibattr.cu->end)) - return 1; - - /* Clear the entire DIE structure. This signals we have not yet - determined any of the information. */ - memset (result, '\0', sizeof (Dwarf_Die)); - - /* We have the address. */ - result->addr = addr; - - /* Same CU as the parent. */ - result->cu = sibattr.cu; - - return 0; -} diff --git a/libdw/dwarf_srclang.c b/libdw/dwarf_srclang.c deleted file mode 100644 index fc256321..00000000 --- a/libdw/dwarf_srclang.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Return source language attribute of DIE. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include "libdwP.h" - - -int -dwarf_srclang (die) - Dwarf_Die *die; -{ - Dwarf_Attribute attr_mem; - Dwarf_Word value; - - return dwarf_formudata (dwarf_attr (die, DW_AT_language, &attr_mem), - &value) == 0 ? (int) value : -1; -} diff --git a/libdw/dwarf_tag.c b/libdw/dwarf_tag.c deleted file mode 100644 index 23814cbc..00000000 --- a/libdw/dwarf_tag.c +++ /dev/null @@ -1,81 +0,0 @@ -/* Return tag of given DIE. - Copyright (C) 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libdwP.h" - - -Dwarf_Abbrev * -internal_function_def -__libdw_findabbrev (struct Dwarf_CU *cu, unsigned int code) -{ - Dwarf_Abbrev *abb; - - /* See whether the entry is already in the hash table. */ - abb = Dwarf_Abbrev_Hash_find (&cu->abbrev_hash, code, NULL); - if (abb == NULL) - while (cu->last_abbrev_offset != (size_t) -1l) - { - size_t length; - - /* Find the next entry. It gets automatically added to the - hash table. */ - abb = __libdw_getabbrev (cu->dbg, cu, cu->last_abbrev_offset, &length, - NULL); - if (abb == NULL) - { - /* Make sure we do not try to search for it again. */ - cu->last_abbrev_offset = (size_t) -1l; - abb = (void *) -1l; - break; - } - - cu->last_abbrev_offset += length; - - /* Is this the code we are looking for? */ - if (abb->code == code) - break; - } - - return abb; -} - - -int -dwarf_tag (die) - Dwarf_Die *die; -{ - /* Do we already know the abbreviation? */ - if (die->abbrev == NULL) - { - /* Get the abbreviation code. */ - unsigned int u128; - unsigned char *addr = die->addr; - get_uleb128 (u128, addr); - - /* Find the abbreviation. */ - die->abbrev = __libdw_findabbrev (die->cu, u128); - } - - if (die->abbrev == (Dwarf_Abbrev *) -1l) - { - __libdw_seterrno (DWARF_E_INVALID_DWARF); - return DW_TAG_invalid; - } - - return die->abbrev->tag; -} diff --git a/libdw/dwarf_whatattr.c b/libdw/dwarf_whatattr.c deleted file mode 100644 index ad5d868f..00000000 --- a/libdw/dwarf_whatattr.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Return attribute code of given attribute. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include "libdwP.h" - - -unsigned int -dwarf_whatattr (attr) - Dwarf_Attribute *attr; -{ - return attr == NULL ? 0 : attr->code; -} diff --git a/libdw/dwarf_whatform.c b/libdw/dwarf_whatform.c deleted file mode 100644 index 99da1c97..00000000 --- a/libdw/dwarf_whatform.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Return form code of given attribute. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include "libdwP.h" - - -unsigned int -dwarf_whatform (attr) - Dwarf_Attribute *attr; -{ - return attr == NULL ? 0 : attr->form; -} diff --git a/libdw/libdw.h b/libdw/libdw.h deleted file mode 100644 index eee986ff..00000000 --- a/libdw/libdw.h +++ /dev/null @@ -1,453 +0,0 @@ -/* Interfaces for libdw. - Copyright (C) 2002, 2004 Red Hat, Inc. - Contributed by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef _LIBDW_H -#define _LIBDW_H 1 - -#include <gelf.h> -#include <stdbool.h> -#include <stddef.h> - - -#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) -# define __nonnull_attribute__(...) __attribute__ ((__nonnull__ (__VA_ARGS__))) -#else -# define __nonnull_attribute__(args...) -#endif - - -/* Mode for the session. */ -typedef enum - { - DWARF_C_READ, /* Read .. */ - DWARF_C_RDWR, /* Read and write .. */ - DWARF_C_WRITE, /* Write .. */ - } -Dwarf_Cmd; - - -/* Callback results. */ -enum -{ - DWARF_CB_OK = 0, - DWARF_CB_ABORT -}; - - -/* Error values. */ -enum - { - DW_TAG_invalid = 0 -#define DW_TAG_invalid DW_TAG_invalid - }; - - -/* Type for offset in DWARF file. */ -typedef GElf_Off Dwarf_Off; - -/* Type for address in DWARF file. */ -typedef GElf_Addr Dwarf_Addr; - -/* Integer types. Big enough to hold any numeric value. */ -typedef GElf_Xword Dwarf_Word; -typedef GElf_Sxword Dwarf_Sword; -/* For the times we know we do not need that much. */ -typedef GElf_Half Dwarf_Half; - - -/* DWARF abbreviation record. */ -typedef struct Dwarf_Abbrev Dwarf_Abbrev; - -/* Source code line information for CU. */ -typedef struct Dwarf_Lines_s Dwarf_Lines; - -/* One source code line information. */ -typedef struct Dwarf_Line_s Dwarf_Line; - -/* Source file information. */ -typedef struct Dwarf_Files_s Dwarf_Files; - -/* One address range record. */ -typedef struct Dwarf_Arange_s Dwarf_Arange; - -/* Address ranges of a file. */ -typedef struct Dwarf_Aranges_s Dwarf_Aranges; - -/* CU representation. */ -struct Dwarf_CU; - -/* Attribute representation. */ -typedef struct -{ - unsigned int code; - unsigned int form; - unsigned char *valp; - struct Dwarf_CU *cu; -} Dwarf_Attribute; - - -/* Data block representation. */ -typedef struct -{ - Dwarf_Word length; - unsigned char *data; -} Dwarf_Block; - - -/* Macro information. */ -typedef struct -{ - unsigned int opcode; - Dwarf_Word param1; - union - { - Dwarf_Word u; - const char *s; - } param2; -} Dwarf_Macro; - - -/* DIE information. */ -typedef struct -{ - /* The offset can be computed from the address. */ - void *addr; - struct Dwarf_CU *cu; - Dwarf_Abbrev *abbrev; - // XXX We'll see what other information will be needed. -} Dwarf_Die; - -/* Returned to show the last DIE has be returned. */ -#define DWARF_END_DIE ((Dwarf_Die *) -1l) - - -/* Global symbol information. */ -typedef struct -{ - Dwarf_Off cu_offset; - Dwarf_Off die_offset; - const char *name; -} Dwarf_Global; - - -// XXX It remains to be seen whether the next two need to be exported. -/* Location record. */ -typedef struct -{ - uint8_t atom; /* Operation */ - Dwarf_Word number; /* Operand */ - Dwarf_Word number2; /* Possible second operand */ - Dwarf_Word offset; /* Offset in location expression */ -} Dwarf_Loc; - - -/* Handle for debug sessions. */ -typedef struct Dwarf Dwarf; - - -/* Out-Of-Memory handler. */ -typedef void (*__attribute__ ((noreturn)) Dwarf_OOM) (void); - - -/* Create a handle for a new debug session. */ -extern Dwarf *dwarf_begin (int fildes, Dwarf_Cmd cmd); - -/* Create a handle for a new debug session for an ELF file. */ -extern Dwarf *dwarf_begin_elf (Elf *elf, Dwarf_Cmd cmd, Elf_Scn *scngrp); - -/* Retrieve ELF descriptor used for DWARF access. */ -extern Elf *dwarf_getelf (Dwarf *dwarf); - -/* Release debugging handling context. */ -extern int dwarf_end (Dwarf *dwarf); - - -/* Get the data block for the .debug_info section. */ -extern Elf_Data *dwarf_getscn_info (Dwarf *dwarf); - -/* Read the header for the DWARF CU header. */ -extern int dwarf_nextcu (Dwarf *dwarf, Dwarf_Off off, Dwarf_Off *next_off, - size_t *header_sizep, Dwarf_Off *abbrev_offsetp, - uint8_t *address_sizep, uint8_t *offset_sizep) - __nonnull_attribute__ (3); - - -/* Return DIE at given offset. */ -extern Dwarf_Die *dwarf_offdie (Dwarf *dbg, Dwarf_Off offset, - Dwarf_Die *result) __nonnull_attribute__ (3); - -/* Return offset of DIE. */ -extern Dwarf_Off dwarf_dieoffset (Dwarf_Die *die); - -/* Return offset of DIE in CU. */ -extern Dwarf_Off dwarf_cuoffset (Dwarf_Die *die); - -/* Return vhild of current DIE. */ -extern int dwarf_child (Dwarf_Die *die, Dwarf_Die *result) - __nonnull_attribute__ (2); - -/* Return sibling of given DIE. */ -extern int dwarf_siblingof (Dwarf_Die *die, Dwarf_Die *result) - __nonnull_attribute__ (2); - -/* Check whether the DIE has children. */ -extern int dwarf_haschildren (Dwarf_Die *die); - -/* Get attributes of the DIE. */ -extern ptrdiff_t dwarf_getattrs (Dwarf_Die *die, - int (*callback) (Dwarf_Attribute *, void *), - void *arg, ptrdiff_t offset); - -/* Return tag of given DIE. */ -extern int dwarf_tag (Dwarf_Die *die); - - -/* Return specific attribute of DIE. */ -extern Dwarf_Attribute *dwarf_attr (Dwarf_Die *die, unsigned int search_name, - Dwarf_Attribute *result) - __nonnull_attribute__ (3); - -/* Check whether given DIE has specific attribute. */ -extern int dwarf_hasattr (Dwarf_Die *die, unsigned int search_name); - - -/* Check whether given attribute has specific form. */ -extern int dwarf_hasform (Dwarf_Attribute *attr, unsigned int search_form); - -/* Return attribute code of given attribute. */ -extern unsigned int dwarf_whatattr (Dwarf_Attribute *attr); - -/* Return form code of given attribute. */ -extern unsigned int dwarf_whatform (Dwarf_Attribute *attr); - - -/* Return string associated with given attribute. */ -extern const char *dwarf_formstring (Dwarf_Attribute *attrp); - -/* Return unsigned constant represented by attribute. */ -extern int dwarf_formudata (Dwarf_Attribute *attr, Dwarf_Word *return_uval) - __nonnull_attribute__ (2); - -/* Return signed constant represented by attribute. */ -extern int dwarf_formsdata (Dwarf_Attribute *attr, Dwarf_Sword *return_uval) - __nonnull_attribute__ (2); - -/* Return address represented by attribute. */ -extern int dwarf_formaddr (Dwarf_Attribute *attr, Dwarf_Addr *return_addr) - __nonnull_attribute__ (2); - -/* Return reference offset represented by attribute. */ -extern int dwarf_formref (Dwarf_Attribute *attr, Dwarf_Off *return_offset) - __nonnull_attribute__ (2); - -/* Return block represented by attribute. */ -extern int dwarf_formblock (Dwarf_Attribute *attr, Dwarf_Block *return_block) - __nonnull_attribute__ (2); - -/* Return flag represented by attribute. */ -extern int dwarf_formflag (Dwarf_Attribute *attr, bool *return_bool) - __nonnull_attribute__ (2); - - -/* Simplified attribute value access functions. */ - -/* Return string in name attribute of DIE. */ -extern const char *dwarf_diename (Dwarf_Die *die); - -/* Return high PC attribute of DIE. */ -extern int dwarf_highpc (Dwarf_Die *die, Dwarf_Addr *return_addr) - __nonnull_attribute__ (2); - -/* Return low PC attribute of DIE. */ -extern int dwarf_lowpc (Dwarf_Die *die, Dwarf_Addr *return_addr) - __nonnull_attribute__ (2); - -/* Return byte size attribute of DIE. */ -extern int dwarf_bytesize (Dwarf_Die *die); - -/* Return bit size attribute of DIE. */ -extern int dwarf_bitsize (Dwarf_Die *die); - -/* Return bit offset attribute of DIE. */ -extern int dwarf_bitoffset (Dwarf_Die *die); - -/* Return array order attribute of DIE. */ -extern int dwarf_arrayorder (Dwarf_Die *die); - -/* Return source language attribute of DIE. */ -extern int dwarf_srclang (Dwarf_Die *die); - - -/* Get abbreviation at given offset for given DIE. */ -extern Dwarf_Abbrev *dwarf_getabbrev (Dwarf_Die *die, Dwarf_Off offset, - size_t *lengthp); - -/* Get abbreviation at given offset in .debug_abbrev section. */ -extern int dwarf_offabbrev (Dwarf *dbg, Dwarf_Off offset, size_t *lengthp, - Dwarf_Abbrev *abbrevp) - __nonnull_attribute__ (4); - -/* Get abbreviation code. */ -extern unsigned int dwarf_getabbrevcode (Dwarf_Abbrev *abbrev); - -/* Get abbreviation tag. */ -extern unsigned int dwarf_getabbrevtag (Dwarf_Abbrev *abbrev); - -/* Return true if abbreviation is children flag set. */ -extern int dwarf_abbrevhaschildren (Dwarf_Abbrev *abbrev); - -/* Get number of attributes of abbreviation. */ -extern int dwarf_getattrcnt (Dwarf_Abbrev *abbrev, size_t *attrcntp) - __nonnull_attribute__ (2); - -/* Get specific attribute of abbreviation. */ -extern int dwarf_getabbrevattr (Dwarf_Abbrev *abbrev, size_t idx, - unsigned int *namep, unsigned int *formp, - Dwarf_Off *offset); - - -/* Get string from-debug_str section. */ -extern const char *dwarf_getstring (Dwarf *dbg, Dwarf_Off offset, - size_t *lenp); - - -/* Get public symbol information. */ -extern ptrdiff_t dwarf_getpubnames (Dwarf *dbg, - int (*callback) (Dwarf *, Dwarf_Global *, - void *), - void *arg, ptrdiff_t offset) - __nonnull_attribute__ (2); - - -/* Get source file information for CU. */ -extern int dwarf_getsrclines (Dwarf_Die *cudie, Dwarf_Lines **lines, - size_t *nlines) __nonnull_attribute__ (2, 3); - -/* Return one of the source lines of the CU. */ -extern Dwarf_Line *dwarf_onesrcline (Dwarf_Lines *lines, size_t idx); - -/* Get the file source files used in the CU. */ -extern int dwarf_getsrcfiles (Dwarf_Die *cudie, Dwarf_Files **files, - size_t *nfiles) - __nonnull_attribute__ (2); - - -/* Get source for address in CU. */ -extern Dwarf_Line *dwarf_getsrc_die (Dwarf_Die *cudie, Dwarf_Addr addr); - -/* Return line address. */ -extern int dwarf_lineaddr (Dwarf_Line *line, Dwarf_Addr *addrp); - -/* Return line number. */ -extern int dwarf_lineno (Dwarf_Line *line, int *linep) - __nonnull_attribute__ (2); - -/* Return column in line. */ -extern int dwarf_linecol (Dwarf_Line *line, int *colp) - __nonnull_attribute__ (2); - -/* Return true if record is for beginning of a statement. */ -extern int dwarf_linebeginstatement (Dwarf_Line *line, bool *flagp) - __nonnull_attribute__ (2); - -/* Return true if record is for end of sequence. */ -extern int dwarf_lineendsequence (Dwarf_Line *line, bool *flagp) - __nonnull_attribute__ (2); - -/* Return true if record is for beginning of a basic block. */ -extern int dwarf_lineblock (Dwarf_Line *line, bool *flagp) - __nonnull_attribute__ (2); - -/* Return true if record is for end of prologue. */ -extern int dwarf_lineprologueend (Dwarf_Line *line, bool *flagp) - __nonnull_attribute__ (2); - -/* Return true if record is for beginning of epilogue. */ -extern int dwarf_lineepiloguebegin (Dwarf_Line *line, bool *flagp) - __nonnull_attribute__ (2); - - -/* Find line information for address. */ -extern const char *dwarf_linesrc (Dwarf_Line *line, - Dwarf_Word *mtime, Dwarf_Word *length); - -/* Return file information. */ -extern const char *dwarf_filesrc (Dwarf_Files *file, size_t idx, - Dwarf_Word *mtime, Dwarf_Word *length); - - -/* Return location expression list. */ -extern int dwarf_getloclist (Dwarf_Attribute *attr, Dwarf_Loc **llbuf, - size_t *listlen) __nonnull_attribute__ (2, 3); - - - -/* Return list address ranges. */ -extern int dwarf_getaranges (Dwarf *dbg, Dwarf_Aranges **aranges, - size_t *naranges) - __nonnull_attribute__ (2); - -/* Return one of the address range entries. */ -extern Dwarf_Arange *dwarf_onearange (Dwarf_Aranges *aranges, size_t idx); - -/* Return information in address range record. */ -extern int dwarf_getarangeinfo (Dwarf_Arange *arange, Dwarf_Addr *addrp, - Dwarf_Word *lengthp, Dwarf_Off *offsetp); - -/* Get address range which includes given address. */ -extern Dwarf_Arange *dwarf_getarange_addr (Dwarf_Aranges *aranges, - Dwarf_Addr addr); - - -/* Call callback function for each of the macro information entry for - the CU. */ -extern ptrdiff_t dwarf_getmacros (Dwarf_Die *cudie, - int (*callback) (Dwarf_Macro *, void *), - void *arg, ptrdiff_t offset) - __nonnull_attribute__ (2); - - -/* Return error code of last failing function call. This value is kept - separately for each thread. */ -extern int dwarf_errno (void); - -/* Return error string for ERROR. If ERROR is zero, return error string - for most recent error or NULL is none occurred. If ERROR is -1 the - behaviour is similar to the last case except that not NULL but a legal - string is returned. */ -extern const char *dwarf_errmsg (int err); - - -/* Register new Out-Of-Memory handler. The old handler is returned. */ -extern Dwarf_OOM dwarf_new_oom_handler (Dwarf *dbg, Dwarf_OOM handler); - - -/* Inline optimizations. */ -#ifdef __OPTIMIZE__ -/* Return attribute code of given attribute. */ -extern inline unsigned int -dwarf_whatattr (Dwarf_Attribute *attr) -{ - return attr == NULL ? 0 : attr->code; -} - -/* Return attribute code of given attribute. */ -extern inline unsigned int -dwarf_whatform (Dwarf_Attribute *attr) -{ - return attr == NULL ? 0 : attr->form; -} -#endif /* Optimize. */ - -#endif /* libdw.h */ diff --git a/libdw/libdw.map b/libdw/libdw.map deleted file mode 100644 index e9ae2b9b..00000000 --- a/libdw/libdw.map +++ /dev/null @@ -1,72 +0,0 @@ -ELFUTILS_1.0 { - global: - dwarf_abbrevhaschildren; - dwarf_attr; - dwarf_arrayorder; - dwarf_begin; - dwarf_begin_elf; - dwarf_bitoffset; - dwarf_bitsize; - dwarf_bytesize; - dwarf_child; - dwarf_cuoffset; - dwarf_diename; - dwarf_dieoffset; - dwarf_end; - dwarf_errmsg; - dwarf_errno; - dwarf_filesrc; - dwarf_formaddr; - dwarf_formblock; - dwarf_formflag; - dwarf_formref; - dwarf_formsdata; - dwarf_formstring; - dwarf_formudata; - dwarf_getabbrev; - dwarf_getabbrevattr; - dwarf_getabbrevcode; - dwarf_getabbrevtag; - dwarf_getarange_addr; - dwarf_getarangeinfo; - dwarf_getaranges; - dwarf_getattrcnt; - dwarf_getattrs; - dwarf_getelf; - dwarf_getloclist; - dwarf_getmacros; - dwarf_getpubnames; - dwarf_getscn_info; - dwarf_getsrc_die; - dwarf_getsrcfiles; - dwarf_getsrclines; - dwarf_getstring; - dwarf_hasattr; - dwarf_haschildren; - dwarf_hasform; - dwarf_highpc; - dwarf_lineaddr; - dwarf_linebeginstatement; - dwarf_lineblock; - dwarf_linecol; - dwarf_lineendsequence; - dwarf_lineepiloguebegin; - dwarf_lineno; - dwarf_lineprologueend; - dwarf_linesrc; - dwarf_lowpc; - dwarf_offabbrev; - dwarf_offdie; - dwarf_onearange; - dwarf_onesrcline; - dwarf_nextcu; - dwarf_new_oom_handler; - dwarf_siblingof; - dwarf_srclang; - dwarf_tag; - dwarf_whatattr; - dwarf_whatform; - - local: - *; -}; diff --git a/libdw/libdwP.h b/libdw/libdwP.h deleted file mode 100644 index 892ad513..00000000 --- a/libdw/libdwP.h +++ /dev/null @@ -1,315 +0,0 @@ -/* Internal definitions for libdwarf. - Copyright (C) 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef _LIBDWP_H -#define _LIBDWP_H 1 - -#include <libintl.h> -#include <stdbool.h> - -#include <libdw.h> - - -/* gettext helper macros. */ -#define _(Str) dgettext ("elfutils", Str) - - -/* Version of the DWARF specification we support. */ -#define DWARF_VERSION 2 - -/* Version of the CIE format. */ -#define CIE_VERSION 1 - - -/* Known location lists. */ -struct loc_s -{ - void *addr; - Dwarf_Loc *loc; - size_t nloc; -}; - -/* Valid indeces for the section data. */ -enum - { - IDX_debug_info = 0, - IDX_debug_abbrev, - IDX_debug_aranges, - IDX_debug_line, - IDX_debug_frame, - IDX_eh_frame, - IDX_debug_loc, - IDX_debug_pubnames, - IDX_debug_str, - IDX_debug_funcnames, - IDX_debug_typenames, - IDX_debug_varnames, - IDX_debug_weaknames, - IDX_debug_macinfo, - IDX_last - }; - - -/* Error values. */ -enum -{ - DWARF_E_NOERROR = 0, - DWARF_E_UNKNOWN_ERROR, - DWARF_E_INVALID_ACCESS, - DWARF_E_NO_REGFILE, - DWARF_E_IO_ERROR, - DWARF_E_INVALID_ELF, - DWARF_E_NO_DWARF, - DWARF_E_NOELF, - DWARF_E_GETEHDR_ERROR, - DWARF_E_NOMEM, - DWARF_E_UNIMPL, - DWARF_E_INVALID_CMD, - DWARF_E_INVALID_VERSION, - DWARF_E_INVALID_FILE, - DWARF_E_NO_ENTRY, - DWARF_E_INVALID_DWARF, - DWARF_E_NO_STRING, - DWARF_E_NO_ADDR, - DWARF_E_NO_CONSTANT, - DWARF_E_NO_REFERENCE, - DWARF_E_INVALID_REFERENCE, - DWARF_E_NO_DEBUG_LINE, - DWARF_E_INVALID_DEBUG_LINE, - DWARF_E_TOO_BIG, - DWARF_E_VERSION, - DWARF_E_INVALID_DIR_IDX, - DWARF_E_ADDR_OUTOFRANGE, - DWARF_E_NO_LOCLIST, - DWARF_E_NO_BLOCK, - DWARF_E_INVALID_LINE_IDX, - DWARF_E_INVALID_ARANGE_IDX, - DWARF_E_NO_MATCH, - DWARF_E_NO_FLAG, -}; - - -/* This is the structure representing the debugging state. */ -struct Dwarf -{ - /* The underlying ELF file. */ - Elf *elf; - - /* The section data. */ - Elf_Data *sectiondata[IDX_last]; - - /* True if the file has a byte order different from the host. */ - bool other_byte_order; - - /* If true, we allocated the ELF descriptor ourselves. */ - bool free_elf; - - /* Information for traversing the .debug_pubnames section. This is - an array and separately allocated with malloc. */ - struct pubnames_s - { - Dwarf_Off cu_offset; - Dwarf_Off set_start; - unsigned int cu_header_size; - int address_len; - } *pubnames_sets; - size_t pubnames_nsets; - - /* Search tree for the CUs. */ - void *cu_tree; - Dwarf_Off next_cu_offset; - - /* Address ranges. */ - Dwarf_Aranges *aranges; - - /* Internal memory handling. This is basically a simplified - reimplementation of obstacks. Unfortunately the standard obstack - implementation is not usable in libraries. */ - struct libdw_memblock - { - size_t size; - size_t remaining; - struct libdw_memblock *prev; - char mem[0]; - } *mem_tail; - - /* Default size of allocated memory blocks. */ - size_t mem_default_size; - - /* Registered OOM handler. */ - Dwarf_OOM oom_handler; -}; - - -/* Abbreviation representation. */ -struct Dwarf_Abbrev -{ - unsigned int code; - unsigned int tag; - int has_children; - unsigned int attrcnt; - unsigned char *attrp; - Dwarf_Off offset; -}; - -#include "dwarf_abbrev_hash.h" - - -/* Files in line information records. */ -struct Dwarf_Files_s - { - Dwarf *dbg; - unsigned int nfiles; - struct Dwarf_Fileinfo_s - { - char *name; - Dwarf_Word mtime; - Dwarf_Word length; - } info[0]; - }; -typedef struct Dwarf_Fileinfo_s Dwarf_Fileinfo; - - -/* Representation of a row in the line table. */ -struct Dwarf_Lines_s - { - size_t nlines; - - struct Dwarf_Line_s - { - Dwarf_Addr addr; - unsigned int file; - int line; - unsigned short int column; - unsigned int is_stmt:1; - unsigned int basic_block:1; - unsigned int end_sequence:1; - unsigned int prologue_end:1; - unsigned int epilogue_begin:1; - - Dwarf_Files *files; - } info[0]; - }; - - -/* Representation of address ranges. */ -struct Dwarf_Aranges_s -{ - Dwarf *dbg; - size_t naranges; - - struct Dwarf_Arange_s - { - Dwarf_Addr addr; - Dwarf_Word length; - Dwarf_Off offset; - } info[0]; -}; - - -/* CU representation. */ -struct Dwarf_CU -{ - Dwarf *dbg; - Dwarf_Off start; - Dwarf_Off end; - uint8_t address_size; - uint8_t offset_size; - - /* Hash table for the abbreviations. */ - Dwarf_Abbrev_Hash abbrev_hash; - /* Offset of the first abbreviation. */ - size_t orig_abbrev_offset; - /* Offset past last read abbreviation. */ - size_t last_abbrev_offset; - - /* The srcline information. */ - Dwarf_Lines *lines; - - /* The source file information. */ - Dwarf_Files *files; - - /* Known location lists. */ - void *locs; -}; - - -/* We have to include the file at this point because the inline - functions access internals of the Dwarf structure. */ -#include "memory-access.h" - - -/* Set error value. */ -extern void __libdw_seterrno (int value) internal_function; - - -/* Memory handling, the easy parts. This macro does not do any locking. */ -#define libdw_alloc(dbg, type, tsize, cnt) \ - ({ struct libdw_memblock *_tail = (dbg)->mem_tail; \ - size_t _required = (tsize) * (cnt); \ - type *_result = (type *) (_tail->mem + (_tail->size - _tail->remaining));\ - size_t _padding = ((__alignof (type) \ - - ((uintptr_t) _result & (__alignof (type) - 1))) \ - & (__alignof (type) - 1)); \ - if (unlikely (_tail->remaining < _required + _padding)) \ - { \ - _result = (type *) __libdw_allocate (dbg, _required); \ - _tail = (dbg)->mem_tail; \ - } \ - else \ - { \ - _required += _padding; \ - _result = (type *) ((char *) _result + _padding); \ - } \ - _tail->remaining -= _required; \ - _result; }) - -#define libdw_typed_alloc(dbg, type) \ - libdw_alloc (dbg, type, sizeof (type), 1) - -/* Callback to allocate more. */ -extern void *__libdw_allocate (Dwarf *dbg, size_t minsize) - __attribute__ ((__malloc__)) __nonnull_attribute__ (1); - -/* Default OOM handler. */ -extern void __libdw_oom (void) __attribute ((noreturn, visibility ("hidden"))); - -/* Find CU for given offset. */ -extern struct Dwarf_CU *__libdw_findcu (Dwarf *dbg, Dwarf_Off offset) - __nonnull_attribute__ (1) internal_function; - -/* Return tag of given DIE. */ -extern Dwarf_Abbrev *__libdw_findabbrev (struct Dwarf_CU *cu, - unsigned int code) - __nonnull_attribute__ (1) internal_function; - -/* Get abbreviation at given offset. */ -extern Dwarf_Abbrev *__libdw_getabbrev (Dwarf *dbg, struct Dwarf_CU *cu, - Dwarf_Off offset, size_t *lengthp, - Dwarf_Abbrev *result) - __nonnull_attribute__ (1) internal_function; - -/* Helper functions for form handling. */ -extern size_t __libdw_form_val_len (Dwarf *dbg, struct Dwarf_CU *cu, - unsigned int form, unsigned char *valp) - __nonnull_attribute__ (1, 2, 4) internal_function; - -/* Helper function to locate attribute. */ -extern unsigned char *__libdw_find_attr (Dwarf_Die *die, - unsigned int search_name, - unsigned int *codep, - unsigned int *formp) - __nonnull_attribute__ (1) internal_function; - -#endif /* libdwP.h */ diff --git a/libdw/libdw_alloc.c b/libdw/libdw_alloc.c deleted file mode 100644 index 1c53d366..00000000 --- a/libdw/libdw_alloc.c +++ /dev/null @@ -1,59 +0,0 @@ -/* Memory handling for libdw. - Copyright (C) 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <error.h> -#include <errno.h> -#include <stdlib.h> -#include <sys/param.h> -#include "libdwP.h" - - -void * -__libdw_allocate (Dwarf *dbg, size_t minsize) -{ - size_t size = MAX (dbg->mem_default_size, - 2 * minsize + offsetof (struct libdw_memblock, mem)); - struct libdw_memblock *newp = malloc (size); - if (newp == NULL) - dbg->oom_handler (); - - newp->size = newp->remaining = size - offsetof (struct libdw_memblock, mem); - - newp->prev = dbg->mem_tail; - dbg->mem_tail = newp; - - return newp->mem; -} - - -Dwarf_OOM -dwarf_new_oom_handler (Dwarf *dbg, Dwarf_OOM handler) -{ - Dwarf_OOM old = dbg->oom_handler; - dbg->oom_handler = handler; - return old; -} - - -void -__attribute ((noreturn, visibility ("hidden"))) -__libdw_oom (void) -{ - while (1) - error (EXIT_FAILURE, ENOMEM, "libdw"); -} diff --git a/libdw/libdw_findcu.c b/libdw/libdw_findcu.c deleted file mode 100644 index b8166572..00000000 --- a/libdw/libdw_findcu.c +++ /dev/null @@ -1,109 +0,0 @@ -/* Find CU for given offset. - Copyright (C) 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <search.h> -#include "libdwP.h" - - -static int -findcu_cb (const void *arg1, const void *arg2) -{ - struct Dwarf_CU *cu1 = (struct Dwarf_CU *) arg1; - struct Dwarf_CU *cu2 = (struct Dwarf_CU *) arg2; - - /* Find out which of the two arguments is the search value. It has - end offset 0. */ - if (cu1->end == 0) - { - if (cu1->start < cu2->start) - return -1; - if (cu1->start >= cu2->end) - return 1; - } - else - { - if (cu2->start < cu1->start) - return 1; - if (cu2->start >= cu1->end) - return -1; - } - - return 0; -} - - -struct Dwarf_CU * -__libdw_findcu (dbg, start) - Dwarf *dbg; - Dwarf_Off start; -{ - /* Maybe we already know that CU. */ - struct Dwarf_CU fake = { .start = start, .end = 0 }; - struct Dwarf_CU **found = tfind (&fake, &dbg->cu_tree, findcu_cb); - if (found != NULL) - return *found; - - if (start < dbg->next_cu_offset) - { - __libdw_seterrno (DWARF_E_INVALID_DWARF); - return NULL; - } - - /* No. Then read more CUs. */ - while (1) - { - Dwarf_Off oldoff = dbg->next_cu_offset; - uint8_t address_size; - uint8_t offset_size; - Dwarf_Off abbrev_offset; - - if (dwarf_nextcu (dbg, oldoff, &dbg->next_cu_offset, NULL, - &abbrev_offset, &address_size, &offset_size) != 0) - /* No more entries. */ - return NULL; - - /* Create an entry for this CU. */ - struct Dwarf_CU *newp = libdw_typed_alloc (dbg, struct Dwarf_CU); - - newp->dbg = dbg; - newp->start = oldoff; - newp->end = dbg->next_cu_offset; - newp->address_size = address_size; - newp->offset_size = offset_size; - Dwarf_Abbrev_Hash_init (&newp->abbrev_hash, 41); - newp->orig_abbrev_offset = newp->last_abbrev_offset = abbrev_offset; - newp->lines = NULL; - newp->locs = NULL; - - /* Add the new entry to the search tree. */ - if (tsearch (newp, &dbg->cu_tree, findcu_cb) == NULL) - { - /* Something went wrong. Unfo the operation. */ - dbg->next_cu_offset = oldoff; - __libdw_seterrno (DWARF_E_NOMEM); - return NULL; - } - - /* Is this the one we are looking for? */ - if (start < dbg->next_cu_offset) - // XXX Match exact offset. - return newp; - } - /* NOTREACHED */ -} diff --git a/libdw/libdw_form.c b/libdw/libdw_form.c deleted file mode 100644 index 2543f5a2..00000000 --- a/libdw/libdw_form.c +++ /dev/null @@ -1,112 +0,0 @@ -/* Helper functions for form handling. - Copyright (C) 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> -#include <string.h> - -#include "libdwP.h" - - -size_t -internal_function_def -__libdw_form_val_len (Dwarf *dbg, struct Dwarf_CU *cu, unsigned int form, - unsigned char *valp) -{ - unsigned char *saved; - unsigned int u128; - size_t result; - - switch (form) - { - case DW_FORM_addr: - result = cu->address_size; - break; - - case DW_FORM_strp: - case DW_FORM_ref_addr: - result = cu->offset_size; - break; - - case DW_FORM_block1: - result = *valp + 1; - break; - - case DW_FORM_block2: - result = read_2ubyte_unaligned (dbg, valp) + 2; - break; - - case DW_FORM_block4: - result = read_4ubyte_unaligned (dbg, valp) + 4; - break; - - case DW_FORM_block: - saved = valp; - get_uleb128 (u128, valp); - result = u128 + (valp - saved); - break; - - case DW_FORM_ref1: - case DW_FORM_data1: - case DW_FORM_flag: - result = 1; - break; - - case DW_FORM_data2: - case DW_FORM_ref2: - result = 2; - break; - - case DW_FORM_data4: - case DW_FORM_ref4: - result = 4; - break; - - case DW_FORM_data8: - case DW_FORM_ref8: - result = 8; - break; - - case DW_FORM_string: - result = strlen ((char *) valp) + 1; - break; - - case DW_FORM_sdata: - case DW_FORM_udata: - case DW_FORM_ref_udata: - saved = valp; - get_uleb128 (u128, valp); - result = valp - saved; - break; - - case DW_FORM_indirect: - saved = valp; - get_uleb128 (u128, valp); - // XXX Is this really correct? - result = __libdw_form_val_len (dbg, cu, u128, valp); - if (result != (size_t) -1) - result += valp - saved; - break; - - default: - __libdw_seterrno (DWARF_E_INVALID_DWARF); - result = (size_t) -1l; - break; - } - - return result; -} diff --git a/libdw/memory-access.h b/libdw/memory-access.h deleted file mode 100644 index babe976f..00000000 --- a/libdw/memory-access.h +++ /dev/null @@ -1,238 +0,0 @@ -/* Unaligned memory access functionality. - Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef _MEMORY_ACCESS_H -#define _MEMORY_ACCESS_H 1 - -#include <byteswap.h> -#include <limits.h> -#include <stdint.h> - - -/* Number decoding macros. See 7.6 Variable Length Data. */ -#define get_uleb128(var, addr) \ - do { \ - unsigned char __b = *((const unsigned char *) addr); \ - addr = (__typeof (addr)) (((uintptr_t) (addr)) + 1); \ - var = __b & 0x7f; \ - if (__b & 0x80) \ - { \ - __b = *((const unsigned char *) addr); \ - addr = (__typeof (addr)) (((uintptr_t) (addr)) + 1); \ - var |= (__b & 0x7f) << 7; \ - if (__b & 0x80) \ - { \ - __b = *((const unsigned char *) addr); \ - addr = (__typeof (addr)) (((uintptr_t) (addr)) + 1); \ - var |= (__b & 0x7f) << 14; \ - if (__b & 0x80) \ - { \ - __b = *((const unsigned char *) addr); \ - addr = (__typeof (addr)) (((uintptr_t) (addr)) + 1); \ - var |= (__b & 0x7f) << 21; \ - if (__b & 0x80) \ - /* Other implementation set VALUE to UINT_MAX in this \ - case. So we better do this as well. */ \ - var = UINT_MAX; \ - } \ - } \ - } \ - } while (0) - -/* The signed case is a big more complicated. */ -#define get_sleb128(var, addr) \ - do { \ - unsigned char __b = *((const unsigned char *) addr); \ - addr = (__typeof (addr)) (((uintptr_t) (addr)) + 1); \ - int32_t __res = __b & 0x7f; \ - if ((__b & 0x80) == 0) \ - { \ - if (__b & 0x40) \ - __res |= 0xffffff80; \ - } \ - else \ - { \ - __b = *((const unsigned char *) addr); \ - addr = (__typeof (addr)) (((uintptr_t) (addr)) + 1); \ - __res |= (__b & 0x7f) << 7; \ - if ((__b & 0x80) == 0) \ - { \ - if (__b & 0x40) \ - __res |= 0xffffc000; \ - } \ - else \ - { \ - __b = *((const unsigned char *) addr); \ - addr = (__typeof (addr)) (((uintptr_t) (addr)) + 1); \ - __res |= (__b & 0x7f) << 14; \ - if ((__b & 0x80) == 0) \ - { \ - if (__b & 0x40) \ - __res |= 0xffe00000; \ - } \ - else \ - { \ - __b = *((const unsigned char *) addr); \ - addr = (__typeof (addr)) (((uintptr_t) (addr)) + 1); \ - __res |= (__b & 0x7f) << 21; \ - if ((__b & 0x80) == 0) \ - { \ - if (__b & 0x40) \ - __res |= 0xf0000000; \ - } \ - else \ - /* Other implementation set VALUE to INT_MAX in this \ - case. So we better do this as well. */ \ - __res = INT_MAX; \ - } \ - } \ - } \ - var = __res; \ - } while (0) - - -/* We use simple memory access functions in case the hardware allows it. - The caller has to make sure we don't have alias problems. */ -#if ALLOW_UNALIGNED - -# define read_2ubyte_unaligned(Dbg, Addr) \ - (unlikely ((Dbg)->other_byte_order) \ - ? bswap_16 (*((const uint16_t *) (Addr))) \ - : *((const uint16_t *) (Addr))) -# define read_2sbyte_unaligned(Dbg, Addr) \ - (unlikely ((Dbg)->other_byte_order) \ - ? (int16_t) bswap_16 (*((const int16_t *) (Addr))) \ - : *((const int16_t *) (Addr))) - -# define read_4ubyte_unaligned_noncvt(Addr) \ - *((const uint32_t *) (Addr)) -# define read_4ubyte_unaligned(Dbg, Addr) \ - (unlikely ((Dbg)->other_byte_order) \ - ? bswap_32 (*((const uint32_t *) (Addr))) \ - : *((const uint32_t *) (Addr))) -# define read_4sbyte_unaligned(Dbg, Addr) \ - (unlikely ((Dbg)->other_byte_order) \ - ? (int32_t) bswap_32 (*((const int32_t *) (Addr))) \ - : *((const int32_t *) (Addr))) - -# define read_8ubyte_unaligned(Dbg, Addr) \ - (unlikely ((Dbg)->other_byte_order) \ - ? bswap_64 (*((const uint64_t *) (Addr))) \ - : *((const uint64_t *) (Addr))) -# define read_8sbyte_unaligned(Dbg, Addr) \ - (unlikely ((Dbg)->other_byte_order) \ - ? (int64_t) bswap_64 (*((const int64_t *) (Addr))) \ - : *((const int64_t *) (Addr))) - -#else - -union unaligned - { - void *p; - uint16_t u2; - uint32_t u4; - uint64_t u8; - int16_t s2; - int32_t s4; - int64_t s8; - } __attribute__ ((packed)); - -static inline uint16_t -read_2ubyte_unaligned (Dwarf *dbg, const void *p) -{ - const union unaligned *up = p; - if (dbg->other_byte_order) - return bswap_16 (up->u2); - return up->u2; -} -static inline int16_t -read_2sbyte_unaligned (Dwarf *dbg, const void *p) -{ - const union unaligned *up = p; - if (dbg->other_byte_order) - return (int16_t) bswap_16 (up->u2); - return up->s2; -} - -static inline uint32_t -read_4ubyte_unaligned_noncvt (const void *p) -{ - const union unaligned *up = p; - return up->u4; -} -static inline uint32_t -read_4ubyte_unaligned (Dwarf *dbg, const void *p) -{ - const union unaligned *up = p; - if (dbg->other_byte_order) - return bswap_32 (up->u4); - return up->u4; -} -static inline int32_t -read_4sbyte_unaligned (Dwarf *dbg, const void *p) -{ - const union unaligned *up = p; - if (dbg->other_byte_order) - return (int32_t) bswap_32 (up->u4); - return up->s4; -} - -static inline uint64_t -read_8ubyte_unaligned (Dwarf *dbg, const void *p) -{ - const union unaligned *up = p; - if (dbg->other_byte_order) - return bswap_64 (up->u8); - return up->u8; -} -static inline int64_t -read_8sbyte_unaligned (Dwarf *dbg, const void *p) -{ - const union unaligned *up = p; - if (dbg->other_byte_order) - return (int64_t) bswap_64 (up->u8); - return up->s8; -} - -#endif /* allow unaligned */ - - -#define read_2ubyte_unaligned_inc(Dbg, Addr) \ - ({ uint16_t t_ = read_2ubyte_unaligned (Dbg, Addr); \ - Addr = (__typeof (Addr)) (((uintptr_t) (Addr)) + 2); \ - t_; }) -#define read_2sbyte_unaligned_inc(Dbg, Addr) \ - ({ int16_t t_ = read_2sbyte_unaligned (Dbg, Addr); \ - Addr = (__typeof (Addr)) (((uintptr_t) (Addr)) + 2); \ - t_; }) - -#define read_4ubyte_unaligned_inc(Dbg, Addr) \ - ({ uint32_t t_ = read_4ubyte_unaligned (Dbg, Addr); \ - Addr = (__typeof (Addr)) (((uintptr_t) (Addr)) + 4); \ - t_; }) -#define read_4sbyte_unaligned_inc(Dbg, Addr) \ - ({ int32_t t_ = read_4sbyte_unaligned (Dbg, Addr); \ - Addr = (__typeof (Addr)) (((uintptr_t) (Addr)) + 4); \ - t_; }) - -#define read_8ubyte_unaligned_inc(Dbg, Addr) \ - ({ uint64_t t_ = read_8ubyte_unaligned (Dbg, Addr); \ - Addr = (__typeof (Addr)) (((uintptr_t) (Addr)) + 8); \ - t_; }) -#define read_8sbyte_unaligned_inc(Dbg, Addr) \ - ({ int64_t t_ = read_8sbyte_unaligned (Dbg, Addr); \ - Addr = (__typeof (Addr)) (((uintptr_t) (Addr)) + 8); \ - t_; }) - -#endif /* memory-access.h */ diff --git a/libebl/ChangeLog b/libebl/ChangeLog deleted file mode 100644 index e749c226..00000000 --- a/libebl/ChangeLog +++ /dev/null @@ -1,84 +0,0 @@ -2004-08-16 Ulrich Drepper <drepper@redhat.com> - - * Makefile.am (AM_CFLAGS): Add LIBSTR definition with base name of - the lib directory. - * eblopenbackend.c (openbackend): Use LIBSTR instead of hardcoded - lib in path to ebl modules. - -2004-04-01 Ulrich Drepper <drepper@redhat.com> - - * Makefile.am: Add rules for ppc and ppc64 ebl module. - * ppc_init..c: New file. - * ppc_destr.c: New file. - * ppc_symbol.c: New file. - * libebl_ppc.h: New file. - * libebl_ppc.map: New file. - * ppc64_init..c: New file. - * ppc64_destr.c: New file. - * ppc64_symbol.c: New file. - * libebl_ppc64.h: New file. - * libebl_ppc64.map: New file. - -2004-01-20 Ulrich Drepper <drepper@redhat.com> - - * Makefile.am: Support building with mudflap. - -2004-01-18 Ulrich Drepper <drepper@redhat.com> - - * libeblP.h (_): Use elfutils domain. - -2004-01-16 Ulrich Drepper <drepper@redhat.com> - - * eblsectionname.c: Add support for SHN_BEFORE and SHN_AFTER. - -2004-01-13 Ulrich Drepper <drepper@redhat.com> - - * eblsegmenttypename.c ((ebl_segment_type_name): Add support for - PT_GNU_RELRO. - -2004-01-08 Ulrich Drepper <drepper@redhat.com> - - * libebl.h: Remove last traces of libtool. - -2004-01-05 Ulrich Drepper <drepper@redhat.com> - - * elf-knowledge.h: Move to libelf subdir. - - * Makefile.am (EXTRA_DIST): Remove libebl.map. - * libebl.map: Removed. - -2003-12-08 Ulrich Drepper <drepper@redhat.com> - - * eblsectiontypename.c (ebl_section_type_name): Add support for - SHT_SUNW_move, SHT_CHECKSUM, and SHT_GNU_LIBLIST. - -2003-11-19 Ulrich Drepper <drepper@redhat.com> - - * ia64_symbol.c (ia64_dynamic_tag_name): New function. - * libebl_ia64.h (ia64_dynamic_tag_name): Declare. - * ia64_init.c (ia64_init): Register i164_dynamic_tag_name. - -2003-09-24 Ulrich Drepper <drepper@redhat.com> - - * ia64_init.c (ia64_init): Initialize segment_type_name callback. - * ia64_symbol.c (ia64_segment_type_name): Define. - * libebl_ia64.h (ia64_segment_type_name): Declare. - -2003-09-22 Ulrich Drepper <drepper@redhat.com> - - * Makefile.am (AM_CFLAGS): Add -fpic. - -2003-08-14 Ulrich Drepper <drepper@redhat.com> - - * Makefile.am (install): Remove dependency on libebl.so. - -2003-08-13 Ulrich Drepper <drepper@redhat.com> - - * eblopenbackend.c: Adjust relative path to arch-specific DSOs - assuming the code ends up in the application. Add second dlopen() - try without any path, just the filename. - * Makefile.in: Remove rules to build and install libebl.so. - -2003-08-11 Ulrich Drepper <drepper@redhat.com> - - * Moved to CVS archive. diff --git a/libebl/Makefile b/libebl/Makefile deleted file mode 100644 index a425eb04..00000000 --- a/libebl/Makefile +++ /dev/null @@ -1,787 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# libebl/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - - - -SOURCES = $(libebl_a_SOURCES) $(libebl_alpha_pic_a_SOURCES) $(libebl_arm_pic_a_SOURCES) $(libebl_i386_pic_a_SOURCES) $(libebl_ia64_pic_a_SOURCES) $(libebl_mips_pic_a_SOURCES) $(libebl_ppc64_pic_a_SOURCES) $(libebl_ppc_pic_a_SOURCES) $(libebl_sh_pic_a_SOURCES) $(libebl_sparc_pic_a_SOURCES) $(libebl_x86_64_pic_a_SOURCES) $(libebl_alpha_so_SOURCES) $(libebl_arm_so_SOURCES) $(libebl_i386_so_SOURCES) $(libebl_ia64_so_SOURCES) $(libebl_mips_so_SOURCES) $(libebl_ppc_so_SOURCES) $(libebl_ppc64_so_SOURCES) $(libebl_sh_so_SOURCES) $(libebl_sparc_so_SOURCES) $(libebl_x86_64_so_SOURCES) - -srcdir = . -top_srcdir = .. - -pkgdatadir = $(datadir)/elfutils -pkglibdir = $(libdir)/elfutils -pkgincludedir = $(includedir)/elfutils -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = /usr/bin/install -c -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = i686-pc-linux-gnu -host_triplet = i686-pc-linux-gnu -noinst_PROGRAMS = $(am__EXEEXT_1) -subdir = libebl -DIST_COMMON = $(euinclude_HEADERS) $(noinst_HEADERS) \ - $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(euincludedir)" -libLIBRARIES_INSTALL = $(INSTALL_DATA) -LIBRARIES = $(lib_LIBRARIES) $(noinst_LIBRARIES) -AR = ar -ARFLAGS = cru -libebl_a_AR = $(AR) $(ARFLAGS) -libebl_a_LIBADD = -am__objects_1 = eblopenbackend.$(OBJEXT) eblclosebackend.$(OBJEXT) \ - eblstrtab.$(OBJEXT) eblreloctypename.$(OBJEXT) \ - eblsegmenttypename.$(OBJEXT) eblsectiontypename.$(OBJEXT) \ - eblmachineflagname.$(OBJEXT) eblsymboltypename.$(OBJEXT) \ - ebldynamictagname.$(OBJEXT) eblsectionname.$(OBJEXT) \ - eblobjecttypename.$(OBJEXT) eblsymbolbindingname.$(OBJEXT) \ - eblbackendname.$(OBJEXT) eblshflagscombine.$(OBJEXT) \ - eblwstrtab.$(OBJEXT) eblgstrtab.$(OBJEXT) \ - eblosabiname.$(OBJEXT) eblmachineflagcheck.$(OBJEXT) \ - eblreloctypecheck.$(OBJEXT) eblrelocvaliduse.$(OBJEXT) \ - ebldynamictagcheck.$(OBJEXT) eblcorenotetypename.$(OBJEXT) \ - eblobjnotetypename.$(OBJEXT) eblcorenote.$(OBJEXT) \ - eblobjnote.$(OBJEXT) ebldebugscnp.$(OBJEXT) \ - eblgotpcreloccheck.$(OBJEXT) -am_libebl_a_OBJECTS = $(am__objects_1) -libebl_a_OBJECTS = $(am_libebl_a_OBJECTS) -libebl_alpha_pic_a_AR = $(AR) $(ARFLAGS) -libebl_alpha_pic_a_LIBADD = -libebl_alpha_pic_a_OBJECTS = $(am_libebl_alpha_pic_a_OBJECTS) -libebl_arm_pic_a_AR = $(AR) $(ARFLAGS) -libebl_arm_pic_a_LIBADD = -libebl_arm_pic_a_OBJECTS = $(am_libebl_arm_pic_a_OBJECTS) -libebl_i386_pic_a_AR = $(AR) $(ARFLAGS) -libebl_i386_pic_a_LIBADD = -libebl_i386_pic_a_OBJECTS = $(am_libebl_i386_pic_a_OBJECTS) -libebl_ia64_pic_a_AR = $(AR) $(ARFLAGS) -libebl_ia64_pic_a_LIBADD = -libebl_ia64_pic_a_OBJECTS = $(am_libebl_ia64_pic_a_OBJECTS) -libebl_mips_pic_a_AR = $(AR) $(ARFLAGS) -libebl_mips_pic_a_LIBADD = -libebl_mips_pic_a_OBJECTS = $(am_libebl_mips_pic_a_OBJECTS) -libebl_ppc64_pic_a_AR = $(AR) $(ARFLAGS) -libebl_ppc64_pic_a_LIBADD = -libebl_ppc64_pic_a_OBJECTS = $(am_libebl_ppc64_pic_a_OBJECTS) -libebl_ppc_pic_a_AR = $(AR) $(ARFLAGS) -libebl_ppc_pic_a_LIBADD = -libebl_ppc_pic_a_OBJECTS = $(am_libebl_ppc_pic_a_OBJECTS) -libebl_sh_pic_a_AR = $(AR) $(ARFLAGS) -libebl_sh_pic_a_LIBADD = -libebl_sh_pic_a_OBJECTS = $(am_libebl_sh_pic_a_OBJECTS) -libebl_sparc_pic_a_AR = $(AR) $(ARFLAGS) -libebl_sparc_pic_a_LIBADD = -libebl_sparc_pic_a_OBJECTS = $(am_libebl_sparc_pic_a_OBJECTS) -libebl_x86_64_pic_a_AR = $(AR) $(ARFLAGS) -libebl_x86_64_pic_a_LIBADD = -libebl_x86_64_pic_a_OBJECTS = $(am_libebl_x86_64_pic_a_OBJECTS) -am__EXEEXT_1 = libebl_i386.so$(EXEEXT) libebl_sh.so$(EXEEXT) \ - libebl_mips.so$(EXEEXT) libebl_x86_64.so$(EXEEXT) \ - libebl_ia64.so$(EXEEXT) libebl_alpha.so$(EXEEXT) \ - libebl_arm.so$(EXEEXT) libebl_sparc.so$(EXEEXT) \ - libebl_ppc.so$(EXEEXT) libebl_ppc64.so$(EXEEXT) -PROGRAMS = $(noinst_PROGRAMS) -am_libebl_alpha_so_OBJECTS = -libebl_alpha_so_OBJECTS = $(am_libebl_alpha_so_OBJECTS) -libebl_alpha_so_LDADD = $(LDADD) -am_libebl_arm_so_OBJECTS = -libebl_arm_so_OBJECTS = $(am_libebl_arm_so_OBJECTS) -libebl_arm_so_LDADD = $(LDADD) -am_libebl_i386_so_OBJECTS = -libebl_i386_so_OBJECTS = $(am_libebl_i386_so_OBJECTS) -libebl_i386_so_LDADD = $(LDADD) -am_libebl_ia64_so_OBJECTS = -libebl_ia64_so_OBJECTS = $(am_libebl_ia64_so_OBJECTS) -libebl_ia64_so_LDADD = $(LDADD) -am_libebl_mips_so_OBJECTS = -libebl_mips_so_OBJECTS = $(am_libebl_mips_so_OBJECTS) -libebl_mips_so_LDADD = $(LDADD) -am_libebl_ppc_so_OBJECTS = -libebl_ppc_so_OBJECTS = $(am_libebl_ppc_so_OBJECTS) -libebl_ppc_so_LDADD = $(LDADD) -am_libebl_ppc64_so_OBJECTS = -libebl_ppc64_so_OBJECTS = $(am_libebl_ppc64_so_OBJECTS) -libebl_ppc64_so_LDADD = $(LDADD) -am_libebl_sh_so_OBJECTS = -libebl_sh_so_OBJECTS = $(am_libebl_sh_so_OBJECTS) -libebl_sh_so_LDADD = $(LDADD) -am_libebl_sparc_so_OBJECTS = -libebl_sparc_so_OBJECTS = $(am_libebl_sparc_so_OBJECTS) -libebl_sparc_so_LDADD = $(LDADD) -am_libebl_x86_64_so_OBJECTS = -libebl_x86_64_so_OBJECTS = $(am_libebl_x86_64_so_OBJECTS) -libebl_x86_64_so_LDADD = $(LDADD) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(libebl_a_SOURCES) $(libebl_alpha_pic_a_SOURCES) \ - $(libebl_arm_pic_a_SOURCES) $(libebl_i386_pic_a_SOURCES) \ - $(libebl_ia64_pic_a_SOURCES) $(libebl_mips_pic_a_SOURCES) \ - $(libebl_ppc64_pic_a_SOURCES) $(libebl_ppc_pic_a_SOURCES) \ - $(libebl_sh_pic_a_SOURCES) $(libebl_sparc_pic_a_SOURCES) \ - $(libebl_x86_64_pic_a_SOURCES) $(libebl_alpha_so_SOURCES) \ - $(libebl_arm_so_SOURCES) $(libebl_i386_so_SOURCES) \ - $(libebl_ia64_so_SOURCES) $(libebl_mips_so_SOURCES) \ - $(libebl_ppc_so_SOURCES) $(libebl_ppc64_so_SOURCES) \ - $(libebl_sh_so_SOURCES) $(libebl_sparc_so_SOURCES) \ - $(libebl_x86_64_so_SOURCES) -DIST_SOURCES = $(libebl_a_SOURCES) $(libebl_alpha_pic_a_SOURCES) \ - $(libebl_arm_pic_a_SOURCES) $(libebl_i386_pic_a_SOURCES) \ - $(libebl_ia64_pic_a_SOURCES) $(libebl_mips_pic_a_SOURCES) \ - $(libebl_ppc64_pic_a_SOURCES) $(libebl_ppc_pic_a_SOURCES) \ - $(libebl_sh_pic_a_SOURCES) $(libebl_sparc_pic_a_SOURCES) \ - $(libebl_x86_64_pic_a_SOURCES) $(libebl_alpha_so_SOURCES) \ - $(libebl_arm_so_SOURCES) $(libebl_i386_so_SOURCES) \ - $(libebl_ia64_so_SOURCES) $(libebl_mips_so_SOURCES) \ - $(libebl_ppc_so_SOURCES) $(libebl_ppc64_so_SOURCES) \ - $(libebl_sh_so_SOURCES) $(libebl_sparc_so_SOURCES) \ - $(libebl_x86_64_so_SOURCES) -euincludeHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(euinclude_HEADERS) $(noinst_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run aclocal-1.9 -AMDEP_FALSE = # -AMDEP_TRUE = -AMTAR = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run tar -AUTOCONF = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoconf -AUTOHEADER = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoheader -AUTOMAKE = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run automake-1.9 -AWK = gawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -CPP = gcc -E -CPPFLAGS = -CYGPATH_W = echo -DATADIRNAME = ${prefix}/share -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DOBJDIR=\"$(shell pwd)\" -DEPDIR = .deps -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = grep -E -EXEEXT = -GMSGFMT = /usr/bin/msgfmt -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s -INTLLIBS = -LDFLAGS = -LEX = flex -LEXLIB = -lfl -LEX_OUTPUT_ROOT = lex.yy -LIBICONV = -liconv -LIBINTL = -LIBOBJS = -LIBS = -LOCALEDIR = ${prefix}/share -LTLIBICONV = -liconv -LTLIBINTL = -LTLIBOBJS = -MAKEINFO = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run makeinfo -MKINSTALLDIRS = config/mkinstalldirs -MSGFMT = /usr/bin/msgfmt -MSGMERGE = /usr/bin/msgmerge -MUDFLAP_FALSE = -MUDFLAP_TRUE = # -NATIVE_LD_FALSE = -NATIVE_LD_TRUE = # -OBJEXT = o -PACKAGE = elfutils -PACKAGE_BUGREPORT = http://bugzilla.redhat.com/bugzilla/ -PACKAGE_NAME = Red Hat elfutils -PACKAGE_STRING = Red Hat elfutils 0.97 -PACKAGE_TARNAME = elfutils -PACKAGE_VERSION = 0.97 -PATH_SEPARATOR = : -POSUB = po -RANLIB = ranlib -SET_MAKE = -SHELL = /bin/sh -STRIP = -USE_NLS = yes -VERSION = 1 -XGETTEXT = /usr/bin/xgettext -YACC = bison -y -ac_ct_CC = gcc -ac_ct_RANLIB = ranlib -ac_ct_STRIP = -am__fastdepCC_FALSE = # -am__fastdepCC_TRUE = -am__include = include -am__leading_dot = . -am__quote = -am__tar = ${AMTAR} chof - "$$tardir" -am__untar = ${AMTAR} xf - -base_cpu = none -bindir = ${exec_prefix}/bin -build = i686-pc-linux-gnu -build_alias = -build_cpu = i686 -build_os = linux-gnu -build_vendor = pc -datadir = ${prefix}/share -exec_prefix = ${prefix} -host = i686-pc-linux-gnu -host_alias = -host_cpu = i686 -host_os = linux-gnu -host_vendor = pc -includedir = ${prefix}/include -infodir = ${prefix}/info -install_sh = /work/elfutils/stock/elfutils-0.97/config/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localstatedir = ${prefix}/var -mandir = ${prefix}/man -mkdir_p = mkdir -p -- -oldincludedir = /usr/include -prefix = /work/elfutils/google/linux-install-elfutils-0.97/ -program_transform_name = s,x,x, -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -sysconfdir = ${prefix}/etc -target_alias = -AM_CFLAGS = -Wall -Werror -Wshadow -fpic \ - -DLIBSTR=\"$$(basename $(libdir))\" -#AM_CFLAGS = -Wall -Wshadow -fpic -DLIBSTR=\"$$(basename \ -# $(libdir))\" -INCLUDES = -I$(srcdir) -I$(top_srcdir)/libelf -I$(top_srcdir)/lib -I.. -lib_LIBRARIES = libebl.a -modules = i386 sh mips x86_64 ia64 alpha arm sparc ppc ppc64 -noinst_LIBRARIES = libebl_i386_pic.a libebl_sh_pic.a libebl_mips_pic.a \ - libebl_x86_64_pic.a libebl_ia64_pic.a libebl_alpha_pic.a \ - libebl_arm_pic.a libebl_sparc_pic.a libebl_ppc_pic.a \ - libebl_ppc64_pic.a - -euincludedir = $(includedir)/elfutils -euinclude_HEADERS = libebl.h -gen_SOURCES = eblopenbackend.c eblclosebackend.c eblstrtab.c \ - eblreloctypename.c eblsegmenttypename.c \ - eblsectiontypename.c eblmachineflagname.c \ - eblsymboltypename.c ebldynamictagname.c eblsectionname.c \ - eblobjecttypename.c eblsymbolbindingname.c \ - eblbackendname.c eblshflagscombine.c eblwstrtab.c \ - eblgstrtab.c eblosabiname.c eblmachineflagcheck.c \ - eblreloctypecheck.c eblrelocvaliduse.c ebldynamictagcheck.c \ - eblcorenotetypename.c eblobjnotetypename.c \ - eblcorenote.c eblobjnote.c ebldebugscnp.c \ - eblgotpcreloccheck.c - -libebl_a_SOURCES = $(gen_SOURCES) - -# -# XXX Use --enable-new-dtags as soon as ld.so handles DT_RUNPATH when -# using dlopen correctly. -# -Wl,--rpath,\$$ORIGIN/elfutils \ -# -i386_SRCS = i386_init.c i386_destr.c i386_symbol.c i386_corenote.c -libebl_i386_pic_a_SOURCES = -am_libebl_i386_pic_a_OBJECTS = $(i386_SRCS:.c=.os) -libelf = ../libelf/libelf.so -#libelf = ../libelf/libelf.a -libmudflap = -#libmudflap = -lmudflap -libebl_i386_so_SOURCES = -sh_SRCS = sh_init.c sh_destr.c sh_symbol.c -libebl_sh_pic_a_SOURCES = -am_libebl_sh_pic_a_OBJECTS = $(sh_SRCS:.c=.os) -libebl_sh_so_SOURCES = -mips_SRCS = mips_init.c mips_destr.c mips_symbol.c -libebl_mips_pic_a_SOURCES = -am_libebl_mips_pic_a_OBJECTS = $(mips_SRCS:.c=.os) -libebl_mips_so_SOURCES = -x86_64_SRCS = x86_64_init.c x86_64_destr.c x86_64_symbol.c -libebl_x86_64_pic_a_SOURCES = -am_libebl_x86_64_pic_a_OBJECTS = $(x86_64_SRCS:.c=.os) -libebl_x86_64_so_SOURCES = -ia64_SRCS = ia64_init.c ia64_destr.c ia64_symbol.c -libebl_ia64_pic_a_SOURCES = -am_libebl_ia64_pic_a_OBJECTS = $(ia64_SRCS:.c=.os) -libebl_ia64_so_SOURCES = -alpha_SRCS = alpha_init.c alpha_destr.c alpha_symbol.c -libebl_alpha_pic_a_SOURCES = -am_libebl_alpha_pic_a_OBJECTS = $(alpha_SRCS:.c=.os) -libebl_alpha_so_SOURCES = -arm_SRCS = arm_init.c arm_destr.c arm_symbol.c -libebl_arm_pic_a_SOURCES = -am_libebl_arm_pic_a_OBJECTS = $(arm_SRCS:.c=.os) -libebl_arm_so_SOURCES = -sparc_SRCS = sparc_init.c sparc_destr.c sparc_symbol.c -libebl_sparc_pic_a_SOURCES = -am_libebl_sparc_pic_a_OBJECTS = $(sparc_SRCS:.c=.os) -libebl_sparc_so_SOURCES = -ppc_SRCS = ppc_init.c ppc_destr.c ppc_symbol.c -libebl_ppc_pic_a_SOURCES = -am_libebl_ppc_pic_a_OBJECTS = $(ppc_SRCS:.c=.os) -libebl_ppc_so_SOURCES = -ppc64_SRCS = ppc64_init.c ppc64_destr.c ppc64_symbol.c -libebl_ppc64_pic_a_SOURCES = -am_libebl_ppc64_pic_a_OBJECTS = $(ppc64_SRCS:.c=.os) -libebl_ppc64_so_SOURCES = -noinst_HEADERS = libeblP.h $(noinst_LIBRARIES:%_pic.a=%.h) -EXTRA_DIST = $(noinst_LIBRARIES:%_pic.a=%.map) \ - $(foreach m,$(modules),$($(m)_SRCS)) - -CLEANFILES = $(am_libebl_pic_a_OBJECTS) \ - $(foreach m,$(modules),$(am_libebl_$(m)_pic_a_OBJECTS)) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits libebl/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits libebl/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -install-libLIBRARIES: $(lib_LIBRARIES) - @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - f=$(am__strip_dir) \ - echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ - $(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ - else :; fi; \ - done - @$(POST_INSTALL) - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - p=$(am__strip_dir) \ - echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \ - $(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \ - else :; fi; \ - done - -uninstall-libLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - p=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \ - rm -f "$(DESTDIR)$(libdir)/$$p"; \ - done - -clean-libLIBRARIES: - -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libebl.a: $(libebl_a_OBJECTS) $(libebl_a_DEPENDENCIES) - -rm -f libebl.a - $(libebl_a_AR) libebl.a $(libebl_a_OBJECTS) $(libebl_a_LIBADD) - $(RANLIB) libebl.a -libebl_alpha_pic.a: $(libebl_alpha_pic_a_OBJECTS) $(libebl_alpha_pic_a_DEPENDENCIES) - -rm -f libebl_alpha_pic.a - $(libebl_alpha_pic_a_AR) libebl_alpha_pic.a $(libebl_alpha_pic_a_OBJECTS) $(libebl_alpha_pic_a_LIBADD) - $(RANLIB) libebl_alpha_pic.a -libebl_arm_pic.a: $(libebl_arm_pic_a_OBJECTS) $(libebl_arm_pic_a_DEPENDENCIES) - -rm -f libebl_arm_pic.a - $(libebl_arm_pic_a_AR) libebl_arm_pic.a $(libebl_arm_pic_a_OBJECTS) $(libebl_arm_pic_a_LIBADD) - $(RANLIB) libebl_arm_pic.a -libebl_i386_pic.a: $(libebl_i386_pic_a_OBJECTS) $(libebl_i386_pic_a_DEPENDENCIES) - -rm -f libebl_i386_pic.a - $(libebl_i386_pic_a_AR) libebl_i386_pic.a $(libebl_i386_pic_a_OBJECTS) $(libebl_i386_pic_a_LIBADD) - $(RANLIB) libebl_i386_pic.a -libebl_ia64_pic.a: $(libebl_ia64_pic_a_OBJECTS) $(libebl_ia64_pic_a_DEPENDENCIES) - -rm -f libebl_ia64_pic.a - $(libebl_ia64_pic_a_AR) libebl_ia64_pic.a $(libebl_ia64_pic_a_OBJECTS) $(libebl_ia64_pic_a_LIBADD) - $(RANLIB) libebl_ia64_pic.a -libebl_mips_pic.a: $(libebl_mips_pic_a_OBJECTS) $(libebl_mips_pic_a_DEPENDENCIES) - -rm -f libebl_mips_pic.a - $(libebl_mips_pic_a_AR) libebl_mips_pic.a $(libebl_mips_pic_a_OBJECTS) $(libebl_mips_pic_a_LIBADD) - $(RANLIB) libebl_mips_pic.a -libebl_ppc64_pic.a: $(libebl_ppc64_pic_a_OBJECTS) $(libebl_ppc64_pic_a_DEPENDENCIES) - -rm -f libebl_ppc64_pic.a - $(libebl_ppc64_pic_a_AR) libebl_ppc64_pic.a $(libebl_ppc64_pic_a_OBJECTS) $(libebl_ppc64_pic_a_LIBADD) - $(RANLIB) libebl_ppc64_pic.a -libebl_ppc_pic.a: $(libebl_ppc_pic_a_OBJECTS) $(libebl_ppc_pic_a_DEPENDENCIES) - -rm -f libebl_ppc_pic.a - $(libebl_ppc_pic_a_AR) libebl_ppc_pic.a $(libebl_ppc_pic_a_OBJECTS) $(libebl_ppc_pic_a_LIBADD) - $(RANLIB) libebl_ppc_pic.a -libebl_sh_pic.a: $(libebl_sh_pic_a_OBJECTS) $(libebl_sh_pic_a_DEPENDENCIES) - -rm -f libebl_sh_pic.a - $(libebl_sh_pic_a_AR) libebl_sh_pic.a $(libebl_sh_pic_a_OBJECTS) $(libebl_sh_pic_a_LIBADD) - $(RANLIB) libebl_sh_pic.a -libebl_sparc_pic.a: $(libebl_sparc_pic_a_OBJECTS) $(libebl_sparc_pic_a_DEPENDENCIES) - -rm -f libebl_sparc_pic.a - $(libebl_sparc_pic_a_AR) libebl_sparc_pic.a $(libebl_sparc_pic_a_OBJECTS) $(libebl_sparc_pic_a_LIBADD) - $(RANLIB) libebl_sparc_pic.a -libebl_x86_64_pic.a: $(libebl_x86_64_pic_a_OBJECTS) $(libebl_x86_64_pic_a_DEPENDENCIES) - -rm -f libebl_x86_64_pic.a - $(libebl_x86_64_pic_a_AR) libebl_x86_64_pic.a $(libebl_x86_64_pic_a_OBJECTS) $(libebl_x86_64_pic_a_LIBADD) - $(RANLIB) libebl_x86_64_pic.a - -clean-noinstPROGRAMS: - -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -include ./$(DEPDIR)/eblbackendname.Po -include ./$(DEPDIR)/eblclosebackend.Po -include ./$(DEPDIR)/eblcorenote.Po -include ./$(DEPDIR)/eblcorenotetypename.Po -include ./$(DEPDIR)/ebldebugscnp.Po -include ./$(DEPDIR)/ebldynamictagcheck.Po -include ./$(DEPDIR)/ebldynamictagname.Po -include ./$(DEPDIR)/eblgotpcreloccheck.Po -include ./$(DEPDIR)/eblgstrtab.Po -include ./$(DEPDIR)/eblmachineflagcheck.Po -include ./$(DEPDIR)/eblmachineflagname.Po -include ./$(DEPDIR)/eblobjecttypename.Po -include ./$(DEPDIR)/eblobjnote.Po -include ./$(DEPDIR)/eblobjnotetypename.Po -include ./$(DEPDIR)/eblopenbackend.Po -include ./$(DEPDIR)/eblosabiname.Po -include ./$(DEPDIR)/eblreloctypecheck.Po -include ./$(DEPDIR)/eblreloctypename.Po -include ./$(DEPDIR)/eblrelocvaliduse.Po -include ./$(DEPDIR)/eblsectionname.Po -include ./$(DEPDIR)/eblsectiontypename.Po -include ./$(DEPDIR)/eblsegmenttypename.Po -include ./$(DEPDIR)/eblshflagscombine.Po -include ./$(DEPDIR)/eblstrtab.Po -include ./$(DEPDIR)/eblsymbolbindingname.Po -include ./$(DEPDIR)/eblsymboltypename.Po -include ./$(DEPDIR)/eblwstrtab.Po - -.c.o: - if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ - then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c $< - -.c.obj: - if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ - then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c `$(CYGPATH_W) '$<'` -uninstall-info-am: -install-euincludeHEADERS: $(euinclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(euincludedir)" || $(mkdir_p) "$(DESTDIR)$(euincludedir)" - @list='$(euinclude_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(euincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(euincludedir)/$$f'"; \ - $(euincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(euincludedir)/$$f"; \ - done - -uninstall-euincludeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(euinclude_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(euincludedir)/$$f'"; \ - rm -f "$(DESTDIR)$(euincludedir)/$$f"; \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(euincludedir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ - done -install-exec: install-exec-am -install-data: install-data-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libLIBRARIES clean-noinstLIBRARIES \ - clean-noinstPROGRAMS mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-euincludeHEADERS - -install-exec-am: install-libLIBRARIES - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-euincludeHEADERS uninstall-info-am \ - uninstall-libLIBRARIES - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libLIBRARIES clean-noinstLIBRARIES clean-noinstPROGRAMS \ - ctags distclean distclean-compile distclean-generic \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am \ - install-euincludeHEADERS install-exec install-exec-am \ - install-info install-info-am install-libLIBRARIES install-man \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-euincludeHEADERS \ - uninstall-info-am uninstall-libLIBRARIES - -libebl_i386.so: libebl_i386_pic.a libebl_i386.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_i386.map \ - -Wl,-z,defs $(libelf) $(libmudflap) -libebl_sh.so: libebl_sh_pic.a libebl_sh.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_sh.map \ - -Wl,-z,defs $(libmudflap) -libebl_mips.so: libebl_mips_pic.a libebl_mips.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_mips.map \ - -Wl,-z,defs $(libmudflap) -libebl_x86_64.so: libebl_x86_64_pic.a libebl_x86_64.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_x86_64.map \ - -Wl,-z,defs $(libelf) $(libmudflap) -libebl_ia64.so: libebl_ia64_pic.a libebl_ia64.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_ia64.map \ - -Wl,-z,defs $(libmudflap) -libebl_alpha.so: libebl_alpha_pic.a libebl_alpha.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_alpha.map \ - -Wl,-z,defs $(libmudflap) -libebl_arm.so: libebl_arm_pic.a libebl_arm.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_arm.map \ - -Wl,-z,defs $(libmudflap) -libebl_sparc.so: libebl_sparc_pic.a libebl_sparc.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_sparc.map \ - -Wl,-z,defs $(libmudflap) -libebl_ppc.so: libebl_ppc_pic.a libebl_ppc.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_ppc.map \ - -Wl,-z,defs $(libelf) $(libmudflap) -libebl_ppc64.so: libebl_ppc64_pic.a libebl_ppc64.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_ppc64.map \ - -Wl,-z,defs $(libelf) $(libmudflap) - -%.os: %.c %.o - if $(COMPILE) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \ - -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \ - then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \ - rm -f "$(DEPDIR)/$*.Tpo"; \ - else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ - fi - -install: install-am - $(mkinstalldirs) $(DESTDIR)$(libdir)/elfutils - for m in $(modules); do \ - $(INSTALL_PROGRAM) libebl_$${m}.so $(DESTDIR)$(libdir)/elfutils/libebl_$${m}-$(PACKAGE_VERSION).so; \ - ln -fs libebl_$${m}-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/elfutils/libebl_$${m}.so; \ - done - -uninstall: uninstall-am - for m in $(modules); do \ - rm -f $(DESTDIR)$(libdir)/elfutils/libebl_$${m}-$(PACKAGE_VERSION).so; \ - rm -f $(DESTDIR)$(libdir)/elfutils/libebl_$${m}.so; \ - done - rmdir --ignore-fail-on-non-empty $(DESTDIR)$(libdir)/elfutils - rmdir --ignore-fail-on-non-empty $(DESTDIR)$(includedir)/elfutils -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/libebl/Makefile.am b/libebl/Makefile.am deleted file mode 100644 index 71514c85..00000000 --- a/libebl/Makefile.am +++ /dev/null @@ -1,204 +0,0 @@ -## Process this file with automake to create Makefile.in -## Configure input file for elfutils. -## -## Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc. -## -## This program is Open Source software; you can redistribute it and/or -## modify it under the terms of the Open Software License version 1.0 as -## published by the Open Source Initiative. -## -## You should have received a copy of the Open Software License along -## with this program; if not, you may obtain a copy of the Open Software -## License version 1.0 from http://www.opensource.org/licenses/osl.php or -## by writing the Open Source Initiative c/o Lawrence Rosen, Esq., -## 3001 King Ranch Road, Ukiah, CA 95482. -## -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DOBJDIR=\"$(shell pwd)\" -if MUDFLAP -AM_CFLAGS = -Wall -Wshadow -fpic -else -AM_CFLAGS = -Wall -Werror -Wshadow -fpic -endif -AM_CFLAGS += -DLIBSTR=\"$$(basename $(libdir))\" - -INCLUDES = -I$(srcdir) -I$(top_srcdir)/libelf -I$(top_srcdir)/lib -I.. -VERSION = 1 -PACKAGE_VERSION = @PACKAGE_VERSION@ - -lib_LIBRARIES = libebl.a -modules = i386 sh mips x86_64 ia64 alpha arm sparc ppc ppc64 -noinst_LIBRARIES = libebl_i386_pic.a libebl_sh_pic.a libebl_mips_pic.a \ - libebl_x86_64_pic.a libebl_ia64_pic.a libebl_alpha_pic.a \ - libebl_arm_pic.a libebl_sparc_pic.a libebl_ppc_pic.a \ - libebl_ppc64_pic.a -noinst_PROGRAMS = $(noinst_LIBRARIES:_pic.a=.so) - -euincludedir = $(includedir)/elfutils -euinclude_HEADERS = libebl.h - -gen_SOURCES = eblopenbackend.c eblclosebackend.c eblstrtab.c \ - eblreloctypename.c eblsegmenttypename.c \ - eblsectiontypename.c eblmachineflagname.c \ - eblsymboltypename.c ebldynamictagname.c eblsectionname.c \ - eblobjecttypename.c eblsymbolbindingname.c \ - eblbackendname.c eblshflagscombine.c eblwstrtab.c \ - eblgstrtab.c eblosabiname.c eblmachineflagcheck.c \ - eblreloctypecheck.c eblrelocvaliduse.c ebldynamictagcheck.c \ - eblcorenotetypename.c eblobjnotetypename.c \ - eblcorenote.c eblobjnote.c ebldebugscnp.c \ - eblgotpcreloccheck.c - -libebl_a_SOURCES = $(gen_SOURCES) - -# -# XXX Use --enable-new-dtags as soon as ld.so handles DT_RUNPATH when -# using dlopen correctly. -# -Wl,--rpath,\$$ORIGIN/elfutils \ -# -i386_SRCS = i386_init.c i386_destr.c i386_symbol.c i386_corenote.c -libebl_i386_pic_a_SOURCES = -am_libebl_i386_pic_a_OBJECTS = $(i386_SRCS:.c=.os) - -if MUDFLAP -libelf = ../libelf/libelf.a -libmudflap = -lmudflap -else -libelf = ../libelf/libelf.so -libmudflap = -endif - -libebl_i386_so_SOURCES = -libebl_i386.so: libebl_i386_pic.a libebl_i386.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_i386.map \ - -Wl,-z,defs $(libelf) $(libmudflap) - - -sh_SRCS = sh_init.c sh_destr.c sh_symbol.c -libebl_sh_pic_a_SOURCES = -am_libebl_sh_pic_a_OBJECTS = $(sh_SRCS:.c=.os) - -libebl_sh_so_SOURCES = -libebl_sh.so: libebl_sh_pic.a libebl_sh.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_sh.map \ - -Wl,-z,defs $(libmudflap) - - -mips_SRCS = mips_init.c mips_destr.c mips_symbol.c -libebl_mips_pic_a_SOURCES = -am_libebl_mips_pic_a_OBJECTS = $(mips_SRCS:.c=.os) - -libebl_mips_so_SOURCES = -libebl_mips.so: libebl_mips_pic.a libebl_mips.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_mips.map \ - -Wl,-z,defs $(libmudflap) - - -x86_64_SRCS = x86_64_init.c x86_64_destr.c x86_64_symbol.c -libebl_x86_64_pic_a_SOURCES = -am_libebl_x86_64_pic_a_OBJECTS = $(x86_64_SRCS:.c=.os) - -libebl_x86_64_so_SOURCES = -libebl_x86_64.so: libebl_x86_64_pic.a libebl_x86_64.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_x86_64.map \ - -Wl,-z,defs $(libelf) $(libmudflap) - - -ia64_SRCS = ia64_init.c ia64_destr.c ia64_symbol.c -libebl_ia64_pic_a_SOURCES = -am_libebl_ia64_pic_a_OBJECTS = $(ia64_SRCS:.c=.os) - -libebl_ia64_so_SOURCES = -libebl_ia64.so: libebl_ia64_pic.a libebl_ia64.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_ia64.map \ - -Wl,-z,defs $(libmudflap) - - -alpha_SRCS = alpha_init.c alpha_destr.c alpha_symbol.c -libebl_alpha_pic_a_SOURCES = -am_libebl_alpha_pic_a_OBJECTS = $(alpha_SRCS:.c=.os) - -libebl_alpha_so_SOURCES = -libebl_alpha.so: libebl_alpha_pic.a libebl_alpha.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_alpha.map \ - -Wl,-z,defs $(libmudflap) - - -arm_SRCS = arm_init.c arm_destr.c arm_symbol.c -libebl_arm_pic_a_SOURCES = -am_libebl_arm_pic_a_OBJECTS = $(arm_SRCS:.c=.os) - -libebl_arm_so_SOURCES = -libebl_arm.so: libebl_arm_pic.a libebl_arm.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_arm.map \ - -Wl,-z,defs $(libmudflap) - - -sparc_SRCS = sparc_init.c sparc_destr.c sparc_symbol.c -libebl_sparc_pic_a_SOURCES = -am_libebl_sparc_pic_a_OBJECTS = $(sparc_SRCS:.c=.os) - -libebl_sparc_so_SOURCES = -libebl_sparc.so: libebl_sparc_pic.a libebl_sparc.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_sparc.map \ - -Wl,-z,defs $(libmudflap) - - -ppc_SRCS = ppc_init.c ppc_destr.c ppc_symbol.c -libebl_ppc_pic_a_SOURCES = -am_libebl_ppc_pic_a_OBJECTS = $(ppc_SRCS:.c=.os) - -libebl_ppc_so_SOURCES = -libebl_ppc.so: libebl_ppc_pic.a libebl_ppc.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_ppc.map \ - -Wl,-z,defs $(libelf) $(libmudflap) - - -ppc64_SRCS = ppc64_init.c ppc64_destr.c ppc64_symbol.c -libebl_ppc64_pic_a_SOURCES = -am_libebl_ppc64_pic_a_OBJECTS = $(ppc64_SRCS:.c=.os) - -libebl_ppc64_so_SOURCES = -libebl_ppc64.so: libebl_ppc64_pic.a libebl_ppc64.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_ppc64.map \ - -Wl,-z,defs $(libelf) $(libmudflap) - - -%.os: %.c %.o - if $(COMPILE) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \ - -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \ - then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \ - rm -f "$(DEPDIR)/$*.Tpo"; \ - else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ - fi - -install: install-am - $(mkinstalldirs) $(DESTDIR)$(libdir)/elfutils - for m in $(modules); do \ - $(INSTALL_PROGRAM) libebl_$${m}.so $(DESTDIR)$(libdir)/elfutils/libebl_$${m}-$(PACKAGE_VERSION).so; \ - ln -fs libebl_$${m}-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/elfutils/libebl_$${m}.so; \ - done - -uninstall: uninstall-am - for m in $(modules); do \ - rm -f $(DESTDIR)$(libdir)/elfutils/libebl_$${m}-$(PACKAGE_VERSION).so; \ - rm -f $(DESTDIR)$(libdir)/elfutils/libebl_$${m}.so; \ - done - rmdir --ignore-fail-on-non-empty $(DESTDIR)$(libdir)/elfutils - rmdir --ignore-fail-on-non-empty $(DESTDIR)$(includedir)/elfutils - -noinst_HEADERS = libeblP.h $(noinst_LIBRARIES:%_pic.a=%.h) -EXTRA_DIST = $(noinst_LIBRARIES:%_pic.a=%.map) \ - $(foreach m,$(modules),$($(m)_SRCS)) - -CLEANFILES = $(am_libebl_pic_a_OBJECTS) \ - $(foreach m,$(modules),$(am_libebl_$(m)_pic_a_OBJECTS)) diff --git a/libebl/Makefile.in b/libebl/Makefile.in deleted file mode 100644 index aaff3fe7..00000000 --- a/libebl/Makefile.in +++ /dev/null @@ -1,787 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - - -SOURCES = $(libebl_a_SOURCES) $(libebl_alpha_pic_a_SOURCES) $(libebl_arm_pic_a_SOURCES) $(libebl_i386_pic_a_SOURCES) $(libebl_ia64_pic_a_SOURCES) $(libebl_mips_pic_a_SOURCES) $(libebl_ppc64_pic_a_SOURCES) $(libebl_ppc_pic_a_SOURCES) $(libebl_sh_pic_a_SOURCES) $(libebl_sparc_pic_a_SOURCES) $(libebl_x86_64_pic_a_SOURCES) $(libebl_alpha_so_SOURCES) $(libebl_arm_so_SOURCES) $(libebl_i386_so_SOURCES) $(libebl_ia64_so_SOURCES) $(libebl_mips_so_SOURCES) $(libebl_ppc_so_SOURCES) $(libebl_ppc64_so_SOURCES) $(libebl_sh_so_SOURCES) $(libebl_sparc_so_SOURCES) $(libebl_x86_64_so_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -noinst_PROGRAMS = $(am__EXEEXT_1) -subdir = libebl -DIST_COMMON = $(euinclude_HEADERS) $(noinst_HEADERS) \ - $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(euincludedir)" -libLIBRARIES_INSTALL = $(INSTALL_DATA) -LIBRARIES = $(lib_LIBRARIES) $(noinst_LIBRARIES) -AR = ar -ARFLAGS = cru -libebl_a_AR = $(AR) $(ARFLAGS) -libebl_a_LIBADD = -am__objects_1 = eblopenbackend.$(OBJEXT) eblclosebackend.$(OBJEXT) \ - eblstrtab.$(OBJEXT) eblreloctypename.$(OBJEXT) \ - eblsegmenttypename.$(OBJEXT) eblsectiontypename.$(OBJEXT) \ - eblmachineflagname.$(OBJEXT) eblsymboltypename.$(OBJEXT) \ - ebldynamictagname.$(OBJEXT) eblsectionname.$(OBJEXT) \ - eblobjecttypename.$(OBJEXT) eblsymbolbindingname.$(OBJEXT) \ - eblbackendname.$(OBJEXT) eblshflagscombine.$(OBJEXT) \ - eblwstrtab.$(OBJEXT) eblgstrtab.$(OBJEXT) \ - eblosabiname.$(OBJEXT) eblmachineflagcheck.$(OBJEXT) \ - eblreloctypecheck.$(OBJEXT) eblrelocvaliduse.$(OBJEXT) \ - ebldynamictagcheck.$(OBJEXT) eblcorenotetypename.$(OBJEXT) \ - eblobjnotetypename.$(OBJEXT) eblcorenote.$(OBJEXT) \ - eblobjnote.$(OBJEXT) ebldebugscnp.$(OBJEXT) \ - eblgotpcreloccheck.$(OBJEXT) -am_libebl_a_OBJECTS = $(am__objects_1) -libebl_a_OBJECTS = $(am_libebl_a_OBJECTS) -libebl_alpha_pic_a_AR = $(AR) $(ARFLAGS) -libebl_alpha_pic_a_LIBADD = -libebl_alpha_pic_a_OBJECTS = $(am_libebl_alpha_pic_a_OBJECTS) -libebl_arm_pic_a_AR = $(AR) $(ARFLAGS) -libebl_arm_pic_a_LIBADD = -libebl_arm_pic_a_OBJECTS = $(am_libebl_arm_pic_a_OBJECTS) -libebl_i386_pic_a_AR = $(AR) $(ARFLAGS) -libebl_i386_pic_a_LIBADD = -libebl_i386_pic_a_OBJECTS = $(am_libebl_i386_pic_a_OBJECTS) -libebl_ia64_pic_a_AR = $(AR) $(ARFLAGS) -libebl_ia64_pic_a_LIBADD = -libebl_ia64_pic_a_OBJECTS = $(am_libebl_ia64_pic_a_OBJECTS) -libebl_mips_pic_a_AR = $(AR) $(ARFLAGS) -libebl_mips_pic_a_LIBADD = -libebl_mips_pic_a_OBJECTS = $(am_libebl_mips_pic_a_OBJECTS) -libebl_ppc64_pic_a_AR = $(AR) $(ARFLAGS) -libebl_ppc64_pic_a_LIBADD = -libebl_ppc64_pic_a_OBJECTS = $(am_libebl_ppc64_pic_a_OBJECTS) -libebl_ppc_pic_a_AR = $(AR) $(ARFLAGS) -libebl_ppc_pic_a_LIBADD = -libebl_ppc_pic_a_OBJECTS = $(am_libebl_ppc_pic_a_OBJECTS) -libebl_sh_pic_a_AR = $(AR) $(ARFLAGS) -libebl_sh_pic_a_LIBADD = -libebl_sh_pic_a_OBJECTS = $(am_libebl_sh_pic_a_OBJECTS) -libebl_sparc_pic_a_AR = $(AR) $(ARFLAGS) -libebl_sparc_pic_a_LIBADD = -libebl_sparc_pic_a_OBJECTS = $(am_libebl_sparc_pic_a_OBJECTS) -libebl_x86_64_pic_a_AR = $(AR) $(ARFLAGS) -libebl_x86_64_pic_a_LIBADD = -libebl_x86_64_pic_a_OBJECTS = $(am_libebl_x86_64_pic_a_OBJECTS) -am__EXEEXT_1 = libebl_i386.so$(EXEEXT) libebl_sh.so$(EXEEXT) \ - libebl_mips.so$(EXEEXT) libebl_x86_64.so$(EXEEXT) \ - libebl_ia64.so$(EXEEXT) libebl_alpha.so$(EXEEXT) \ - libebl_arm.so$(EXEEXT) libebl_sparc.so$(EXEEXT) \ - libebl_ppc.so$(EXEEXT) libebl_ppc64.so$(EXEEXT) -PROGRAMS = $(noinst_PROGRAMS) -am_libebl_alpha_so_OBJECTS = -libebl_alpha_so_OBJECTS = $(am_libebl_alpha_so_OBJECTS) -libebl_alpha_so_LDADD = $(LDADD) -am_libebl_arm_so_OBJECTS = -libebl_arm_so_OBJECTS = $(am_libebl_arm_so_OBJECTS) -libebl_arm_so_LDADD = $(LDADD) -am_libebl_i386_so_OBJECTS = -libebl_i386_so_OBJECTS = $(am_libebl_i386_so_OBJECTS) -libebl_i386_so_LDADD = $(LDADD) -am_libebl_ia64_so_OBJECTS = -libebl_ia64_so_OBJECTS = $(am_libebl_ia64_so_OBJECTS) -libebl_ia64_so_LDADD = $(LDADD) -am_libebl_mips_so_OBJECTS = -libebl_mips_so_OBJECTS = $(am_libebl_mips_so_OBJECTS) -libebl_mips_so_LDADD = $(LDADD) -am_libebl_ppc_so_OBJECTS = -libebl_ppc_so_OBJECTS = $(am_libebl_ppc_so_OBJECTS) -libebl_ppc_so_LDADD = $(LDADD) -am_libebl_ppc64_so_OBJECTS = -libebl_ppc64_so_OBJECTS = $(am_libebl_ppc64_so_OBJECTS) -libebl_ppc64_so_LDADD = $(LDADD) -am_libebl_sh_so_OBJECTS = -libebl_sh_so_OBJECTS = $(am_libebl_sh_so_OBJECTS) -libebl_sh_so_LDADD = $(LDADD) -am_libebl_sparc_so_OBJECTS = -libebl_sparc_so_OBJECTS = $(am_libebl_sparc_so_OBJECTS) -libebl_sparc_so_LDADD = $(LDADD) -am_libebl_x86_64_so_OBJECTS = -libebl_x86_64_so_OBJECTS = $(am_libebl_x86_64_so_OBJECTS) -libebl_x86_64_so_LDADD = $(LDADD) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(libebl_a_SOURCES) $(libebl_alpha_pic_a_SOURCES) \ - $(libebl_arm_pic_a_SOURCES) $(libebl_i386_pic_a_SOURCES) \ - $(libebl_ia64_pic_a_SOURCES) $(libebl_mips_pic_a_SOURCES) \ - $(libebl_ppc64_pic_a_SOURCES) $(libebl_ppc_pic_a_SOURCES) \ - $(libebl_sh_pic_a_SOURCES) $(libebl_sparc_pic_a_SOURCES) \ - $(libebl_x86_64_pic_a_SOURCES) $(libebl_alpha_so_SOURCES) \ - $(libebl_arm_so_SOURCES) $(libebl_i386_so_SOURCES) \ - $(libebl_ia64_so_SOURCES) $(libebl_mips_so_SOURCES) \ - $(libebl_ppc_so_SOURCES) $(libebl_ppc64_so_SOURCES) \ - $(libebl_sh_so_SOURCES) $(libebl_sparc_so_SOURCES) \ - $(libebl_x86_64_so_SOURCES) -DIST_SOURCES = $(libebl_a_SOURCES) $(libebl_alpha_pic_a_SOURCES) \ - $(libebl_arm_pic_a_SOURCES) $(libebl_i386_pic_a_SOURCES) \ - $(libebl_ia64_pic_a_SOURCES) $(libebl_mips_pic_a_SOURCES) \ - $(libebl_ppc64_pic_a_SOURCES) $(libebl_ppc_pic_a_SOURCES) \ - $(libebl_sh_pic_a_SOURCES) $(libebl_sparc_pic_a_SOURCES) \ - $(libebl_x86_64_pic_a_SOURCES) $(libebl_alpha_so_SOURCES) \ - $(libebl_arm_so_SOURCES) $(libebl_i386_so_SOURCES) \ - $(libebl_ia64_so_SOURCES) $(libebl_mips_so_SOURCES) \ - $(libebl_ppc_so_SOURCES) $(libebl_ppc64_so_SOURCES) \ - $(libebl_sh_so_SOURCES) $(libebl_sparc_so_SOURCES) \ - $(libebl_x86_64_so_SOURCES) -euincludeHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(euinclude_HEADERS) $(noinst_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DATADIRNAME = @DATADIRNAME@ -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DOBJDIR=\"$(shell pwd)\" -DEPDIR = @DEPDIR@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -GMSGFMT = @GMSGFMT@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTLLIBS = @INTLLIBS@ -LDFLAGS = @LDFLAGS@ -LEX = @LEX@ -LEXLIB = @LEXLIB@ -LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LOCALEDIR = @LOCALEDIR@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -MSGMERGE = @MSGMERGE@ -MUDFLAP_FALSE = @MUDFLAP_FALSE@ -MUDFLAP_TRUE = @MUDFLAP_TRUE@ -NATIVE_LD_FALSE = @NATIVE_LD_FALSE@ -NATIVE_LD_TRUE = @NATIVE_LD_TRUE@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USE_NLS = @USE_NLS@ -VERSION = 1 -XGETTEXT = @XGETTEXT@ -YACC = @YACC@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -base_cpu = @base_cpu@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -datadir = @datadir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -@MUDFLAP_FALSE@AM_CFLAGS = -Wall -Werror -Wshadow -fpic \ -@MUDFLAP_FALSE@ -DLIBSTR=\"$$(basename $(libdir))\" -@MUDFLAP_TRUE@AM_CFLAGS = -Wall -Wshadow -fpic -DLIBSTR=\"$$(basename \ -@MUDFLAP_TRUE@ $(libdir))\" -INCLUDES = -I$(srcdir) -I$(top_srcdir)/libelf -I$(top_srcdir)/lib -I.. -lib_LIBRARIES = libebl.a -modules = i386 sh mips x86_64 ia64 alpha arm sparc ppc ppc64 -noinst_LIBRARIES = libebl_i386_pic.a libebl_sh_pic.a libebl_mips_pic.a \ - libebl_x86_64_pic.a libebl_ia64_pic.a libebl_alpha_pic.a \ - libebl_arm_pic.a libebl_sparc_pic.a libebl_ppc_pic.a \ - libebl_ppc64_pic.a - -euincludedir = $(includedir)/elfutils -euinclude_HEADERS = libebl.h -gen_SOURCES = eblopenbackend.c eblclosebackend.c eblstrtab.c \ - eblreloctypename.c eblsegmenttypename.c \ - eblsectiontypename.c eblmachineflagname.c \ - eblsymboltypename.c ebldynamictagname.c eblsectionname.c \ - eblobjecttypename.c eblsymbolbindingname.c \ - eblbackendname.c eblshflagscombine.c eblwstrtab.c \ - eblgstrtab.c eblosabiname.c eblmachineflagcheck.c \ - eblreloctypecheck.c eblrelocvaliduse.c ebldynamictagcheck.c \ - eblcorenotetypename.c eblobjnotetypename.c \ - eblcorenote.c eblobjnote.c ebldebugscnp.c \ - eblgotpcreloccheck.c - -libebl_a_SOURCES = $(gen_SOURCES) - -# -# XXX Use --enable-new-dtags as soon as ld.so handles DT_RUNPATH when -# using dlopen correctly. -# -Wl,--rpath,\$$ORIGIN/elfutils \ -# -i386_SRCS = i386_init.c i386_destr.c i386_symbol.c i386_corenote.c -libebl_i386_pic_a_SOURCES = -am_libebl_i386_pic_a_OBJECTS = $(i386_SRCS:.c=.os) -@MUDFLAP_FALSE@libelf = ../libelf/libelf.so -@MUDFLAP_TRUE@libelf = ../libelf/libelf.a -@MUDFLAP_FALSE@libmudflap = -@MUDFLAP_TRUE@libmudflap = -lmudflap -libebl_i386_so_SOURCES = -sh_SRCS = sh_init.c sh_destr.c sh_symbol.c -libebl_sh_pic_a_SOURCES = -am_libebl_sh_pic_a_OBJECTS = $(sh_SRCS:.c=.os) -libebl_sh_so_SOURCES = -mips_SRCS = mips_init.c mips_destr.c mips_symbol.c -libebl_mips_pic_a_SOURCES = -am_libebl_mips_pic_a_OBJECTS = $(mips_SRCS:.c=.os) -libebl_mips_so_SOURCES = -x86_64_SRCS = x86_64_init.c x86_64_destr.c x86_64_symbol.c -libebl_x86_64_pic_a_SOURCES = -am_libebl_x86_64_pic_a_OBJECTS = $(x86_64_SRCS:.c=.os) -libebl_x86_64_so_SOURCES = -ia64_SRCS = ia64_init.c ia64_destr.c ia64_symbol.c -libebl_ia64_pic_a_SOURCES = -am_libebl_ia64_pic_a_OBJECTS = $(ia64_SRCS:.c=.os) -libebl_ia64_so_SOURCES = -alpha_SRCS = alpha_init.c alpha_destr.c alpha_symbol.c -libebl_alpha_pic_a_SOURCES = -am_libebl_alpha_pic_a_OBJECTS = $(alpha_SRCS:.c=.os) -libebl_alpha_so_SOURCES = -arm_SRCS = arm_init.c arm_destr.c arm_symbol.c -libebl_arm_pic_a_SOURCES = -am_libebl_arm_pic_a_OBJECTS = $(arm_SRCS:.c=.os) -libebl_arm_so_SOURCES = -sparc_SRCS = sparc_init.c sparc_destr.c sparc_symbol.c -libebl_sparc_pic_a_SOURCES = -am_libebl_sparc_pic_a_OBJECTS = $(sparc_SRCS:.c=.os) -libebl_sparc_so_SOURCES = -ppc_SRCS = ppc_init.c ppc_destr.c ppc_symbol.c -libebl_ppc_pic_a_SOURCES = -am_libebl_ppc_pic_a_OBJECTS = $(ppc_SRCS:.c=.os) -libebl_ppc_so_SOURCES = -ppc64_SRCS = ppc64_init.c ppc64_destr.c ppc64_symbol.c -libebl_ppc64_pic_a_SOURCES = -am_libebl_ppc64_pic_a_OBJECTS = $(ppc64_SRCS:.c=.os) -libebl_ppc64_so_SOURCES = -noinst_HEADERS = libeblP.h $(noinst_LIBRARIES:%_pic.a=%.h) -EXTRA_DIST = $(noinst_LIBRARIES:%_pic.a=%.map) \ - $(foreach m,$(modules),$($(m)_SRCS)) - -CLEANFILES = $(am_libebl_pic_a_OBJECTS) \ - $(foreach m,$(modules),$(am_libebl_$(m)_pic_a_OBJECTS)) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits libebl/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits libebl/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -install-libLIBRARIES: $(lib_LIBRARIES) - @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - f=$(am__strip_dir) \ - echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ - $(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ - else :; fi; \ - done - @$(POST_INSTALL) - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - p=$(am__strip_dir) \ - echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \ - $(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \ - else :; fi; \ - done - -uninstall-libLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - p=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \ - rm -f "$(DESTDIR)$(libdir)/$$p"; \ - done - -clean-libLIBRARIES: - -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libebl.a: $(libebl_a_OBJECTS) $(libebl_a_DEPENDENCIES) - -rm -f libebl.a - $(libebl_a_AR) libebl.a $(libebl_a_OBJECTS) $(libebl_a_LIBADD) - $(RANLIB) libebl.a -libebl_alpha_pic.a: $(libebl_alpha_pic_a_OBJECTS) $(libebl_alpha_pic_a_DEPENDENCIES) - -rm -f libebl_alpha_pic.a - $(libebl_alpha_pic_a_AR) libebl_alpha_pic.a $(libebl_alpha_pic_a_OBJECTS) $(libebl_alpha_pic_a_LIBADD) - $(RANLIB) libebl_alpha_pic.a -libebl_arm_pic.a: $(libebl_arm_pic_a_OBJECTS) $(libebl_arm_pic_a_DEPENDENCIES) - -rm -f libebl_arm_pic.a - $(libebl_arm_pic_a_AR) libebl_arm_pic.a $(libebl_arm_pic_a_OBJECTS) $(libebl_arm_pic_a_LIBADD) - $(RANLIB) libebl_arm_pic.a -libebl_i386_pic.a: $(libebl_i386_pic_a_OBJECTS) $(libebl_i386_pic_a_DEPENDENCIES) - -rm -f libebl_i386_pic.a - $(libebl_i386_pic_a_AR) libebl_i386_pic.a $(libebl_i386_pic_a_OBJECTS) $(libebl_i386_pic_a_LIBADD) - $(RANLIB) libebl_i386_pic.a -libebl_ia64_pic.a: $(libebl_ia64_pic_a_OBJECTS) $(libebl_ia64_pic_a_DEPENDENCIES) - -rm -f libebl_ia64_pic.a - $(libebl_ia64_pic_a_AR) libebl_ia64_pic.a $(libebl_ia64_pic_a_OBJECTS) $(libebl_ia64_pic_a_LIBADD) - $(RANLIB) libebl_ia64_pic.a -libebl_mips_pic.a: $(libebl_mips_pic_a_OBJECTS) $(libebl_mips_pic_a_DEPENDENCIES) - -rm -f libebl_mips_pic.a - $(libebl_mips_pic_a_AR) libebl_mips_pic.a $(libebl_mips_pic_a_OBJECTS) $(libebl_mips_pic_a_LIBADD) - $(RANLIB) libebl_mips_pic.a -libebl_ppc64_pic.a: $(libebl_ppc64_pic_a_OBJECTS) $(libebl_ppc64_pic_a_DEPENDENCIES) - -rm -f libebl_ppc64_pic.a - $(libebl_ppc64_pic_a_AR) libebl_ppc64_pic.a $(libebl_ppc64_pic_a_OBJECTS) $(libebl_ppc64_pic_a_LIBADD) - $(RANLIB) libebl_ppc64_pic.a -libebl_ppc_pic.a: $(libebl_ppc_pic_a_OBJECTS) $(libebl_ppc_pic_a_DEPENDENCIES) - -rm -f libebl_ppc_pic.a - $(libebl_ppc_pic_a_AR) libebl_ppc_pic.a $(libebl_ppc_pic_a_OBJECTS) $(libebl_ppc_pic_a_LIBADD) - $(RANLIB) libebl_ppc_pic.a -libebl_sh_pic.a: $(libebl_sh_pic_a_OBJECTS) $(libebl_sh_pic_a_DEPENDENCIES) - -rm -f libebl_sh_pic.a - $(libebl_sh_pic_a_AR) libebl_sh_pic.a $(libebl_sh_pic_a_OBJECTS) $(libebl_sh_pic_a_LIBADD) - $(RANLIB) libebl_sh_pic.a -libebl_sparc_pic.a: $(libebl_sparc_pic_a_OBJECTS) $(libebl_sparc_pic_a_DEPENDENCIES) - -rm -f libebl_sparc_pic.a - $(libebl_sparc_pic_a_AR) libebl_sparc_pic.a $(libebl_sparc_pic_a_OBJECTS) $(libebl_sparc_pic_a_LIBADD) - $(RANLIB) libebl_sparc_pic.a -libebl_x86_64_pic.a: $(libebl_x86_64_pic_a_OBJECTS) $(libebl_x86_64_pic_a_DEPENDENCIES) - -rm -f libebl_x86_64_pic.a - $(libebl_x86_64_pic_a_AR) libebl_x86_64_pic.a $(libebl_x86_64_pic_a_OBJECTS) $(libebl_x86_64_pic_a_LIBADD) - $(RANLIB) libebl_x86_64_pic.a - -clean-noinstPROGRAMS: - -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblbackendname.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblclosebackend.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblcorenote.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblcorenotetypename.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ebldebugscnp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ebldynamictagcheck.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ebldynamictagname.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblgotpcreloccheck.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblgstrtab.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblmachineflagcheck.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblmachineflagname.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblobjecttypename.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblobjnote.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblobjnotetypename.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblopenbackend.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblosabiname.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblreloctypecheck.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblreloctypename.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblrelocvaliduse.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblsectionname.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblsectiontypename.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblsegmenttypename.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblshflagscombine.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblstrtab.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblsymbolbindingname.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblsymboltypename.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eblwstrtab.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` -uninstall-info-am: -install-euincludeHEADERS: $(euinclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(euincludedir)" || $(mkdir_p) "$(DESTDIR)$(euincludedir)" - @list='$(euinclude_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(euincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(euincludedir)/$$f'"; \ - $(euincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(euincludedir)/$$f"; \ - done - -uninstall-euincludeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(euinclude_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(euincludedir)/$$f'"; \ - rm -f "$(DESTDIR)$(euincludedir)/$$f"; \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(euincludedir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ - done -install-exec: install-exec-am -install-data: install-data-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libLIBRARIES clean-noinstLIBRARIES \ - clean-noinstPROGRAMS mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-euincludeHEADERS - -install-exec-am: install-libLIBRARIES - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-euincludeHEADERS uninstall-info-am \ - uninstall-libLIBRARIES - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libLIBRARIES clean-noinstLIBRARIES clean-noinstPROGRAMS \ - ctags distclean distclean-compile distclean-generic \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am \ - install-euincludeHEADERS install-exec install-exec-am \ - install-info install-info-am install-libLIBRARIES install-man \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-euincludeHEADERS \ - uninstall-info-am uninstall-libLIBRARIES - -libebl_i386.so: libebl_i386_pic.a libebl_i386.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_i386.map \ - -Wl,-z,defs $(libelf) $(libmudflap) -libebl_sh.so: libebl_sh_pic.a libebl_sh.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_sh.map \ - -Wl,-z,defs $(libmudflap) -libebl_mips.so: libebl_mips_pic.a libebl_mips.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_mips.map \ - -Wl,-z,defs $(libmudflap) -libebl_x86_64.so: libebl_x86_64_pic.a libebl_x86_64.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_x86_64.map \ - -Wl,-z,defs $(libelf) $(libmudflap) -libebl_ia64.so: libebl_ia64_pic.a libebl_ia64.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_ia64.map \ - -Wl,-z,defs $(libmudflap) -libebl_alpha.so: libebl_alpha_pic.a libebl_alpha.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_alpha.map \ - -Wl,-z,defs $(libmudflap) -libebl_arm.so: libebl_arm_pic.a libebl_arm.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_arm.map \ - -Wl,-z,defs $(libmudflap) -libebl_sparc.so: libebl_sparc_pic.a libebl_sparc.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_sparc.map \ - -Wl,-z,defs $(libmudflap) -libebl_ppc.so: libebl_ppc_pic.a libebl_ppc.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_ppc.map \ - -Wl,-z,defs $(libelf) $(libmudflap) -libebl_ppc64.so: libebl_ppc64_pic.a libebl_ppc64.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libebl_ppc64.map \ - -Wl,-z,defs $(libelf) $(libmudflap) - -%.os: %.c %.o - if $(COMPILE) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \ - -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \ - then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \ - rm -f "$(DEPDIR)/$*.Tpo"; \ - else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ - fi - -install: install-am - $(mkinstalldirs) $(DESTDIR)$(libdir)/elfutils - for m in $(modules); do \ - $(INSTALL_PROGRAM) libebl_$${m}.so $(DESTDIR)$(libdir)/elfutils/libebl_$${m}-$(PACKAGE_VERSION).so; \ - ln -fs libebl_$${m}-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/elfutils/libebl_$${m}.so; \ - done - -uninstall: uninstall-am - for m in $(modules); do \ - rm -f $(DESTDIR)$(libdir)/elfutils/libebl_$${m}-$(PACKAGE_VERSION).so; \ - rm -f $(DESTDIR)$(libdir)/elfutils/libebl_$${m}.so; \ - done - rmdir --ignore-fail-on-non-empty $(DESTDIR)$(libdir)/elfutils - rmdir --ignore-fail-on-non-empty $(DESTDIR)$(includedir)/elfutils -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/libebl/alpha_destr.c b/libebl/alpha_destr.c deleted file mode 100644 index c599d591..00000000 --- a/libebl/alpha_destr.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Destructor for Alpha specific backend library. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libebl_alpha.h> - - -void -alpha_destr (bh) - Ebl *bh; -{ - /* Nothing to do so far. */ -} diff --git a/libebl/alpha_init.c b/libebl/alpha_init.c deleted file mode 100644 index b688bb73..00000000 --- a/libebl/alpha_init.c +++ /dev/null @@ -1,40 +0,0 @@ -/* Initialization of Alpha specific backend library. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libebl_alpha.h> - - -int -alpha_init (elf, machine, eh, ehlen) - Elf *elf; - GElf_Half machine; - Ebl *eh; - size_t ehlen; -{ - /* Check whether the Elf_BH object has a sufficent size. */ - if (ehlen < sizeof (Ebl)) - return 1; - - /* We handle it. */ - eh->name = "Alpha"; - eh->reloc_type_name = alpha_reloc_type_name; - eh->reloc_type_check = alpha_reloc_type_check; - eh->destr = alpha_destr; - - return 0; -} diff --git a/libebl/alpha_symbol.c b/libebl/alpha_symbol.c deleted file mode 100644 index 749f4f55..00000000 --- a/libebl/alpha_symbol.c +++ /dev/null @@ -1,93 +0,0 @@ -/* Alpha specific symbolic name handling. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <stddef.h> - -#include <libebl_alpha.h> - - -/* Return of the backend. */ -const char * -alpha_backend_name (void) -{ - return "alpha"; -} - - -/* Relocation mapping table. */ -static const char *reloc_map_table[] = - { - [R_ALPHA_NONE] = "R_ALPHA_NONE", - [R_ALPHA_REFLONG] = "R_ALPHA_REFLONG", - [R_ALPHA_REFQUAD] = "R_ALPHA_REFQUAD", - [R_ALPHA_GPREL32] = "R_ALPHA_GPREL32", - [R_ALPHA_LITERAL] = "R_ALPHA_LITERAL", - [R_ALPHA_LITUSE] = "R_ALPHA_LITUSE", - [R_ALPHA_GPDISP] = "R_ALPHA_GPDISP", - [R_ALPHA_BRADDR] = "R_ALPHA_BRADDR", - [R_ALPHA_HINT] = "R_ALPHA_HINT", - [R_ALPHA_SREL16] = "R_ALPHA_SREL16", - [R_ALPHA_SREL32] = "R_ALPHA_SREL32", - [R_ALPHA_SREL64] = "R_ALPHA_SREL64", - [R_ALPHA_GPRELHIGH] = "R_ALPHA_GPRELHIGH", - [R_ALPHA_GPRELLOW] = "R_ALPHA_GPRELLOW", - [R_ALPHA_GPREL16] = "R_ALPHA_GPREL16", - [R_ALPHA_COPY] = "R_ALPHA_COPY", - [R_ALPHA_GLOB_DAT] = "R_ALPHA_GLOB_DAT", - [R_ALPHA_JMP_SLOT] = "R_ALPHA_JMP_SLOT", - [R_ALPHA_RELATIVE] = "R_ALPHA_RELATIVE", - [R_ALPHA_TLS_GD_HI] = "R_ALPHA_TLS_GD_HI", - [R_ALPHA_TLSGD] = "R_ALPHA_TLSGD", - [R_ALPHA_TLS_LDM] = "R_ALPHA_TLS_LDM", - [R_ALPHA_DTPMOD64] = "R_ALPHA_DTPMOD64", - [R_ALPHA_GOTDTPREL] = "R_ALPHA_GOTDTPREL", - [R_ALPHA_DTPREL64] = "R_ALPHA_DTPREL64", - [R_ALPHA_DTPRELHI] = "R_ALPHA_DTPRELHI", - [R_ALPHA_DTPRELLO] = "R_ALPHA_DTPRELLO", - [R_ALPHA_DTPREL16] = "R_ALPHA_DTPREL16", - [R_ALPHA_GOTTPREL] = "R_ALPHA_GOTTPREL", - [R_ALPHA_TPREL64] = "R_ALPHA_TPREL64", - [R_ALPHA_TPRELHI] = "R_ALPHA_TPRELHI", - [R_ALPHA_TPRELLO] = "R_ALPHA_TPRELLO", - [R_ALPHA_TPREL16] = "R_ALPHA_TPREL16" - }; - - -/* Determine relocation type string for Alpha. */ -const char * -alpha_reloc_type_name (int type, char *buf, size_t len) -{ - if (type < 0 - || ((size_t) type - >= sizeof (reloc_map_table) / sizeof (reloc_map_table[0]))) - return NULL; - - return reloc_map_table[type]; -} - - -/* Check for correct relocation type. */ -bool -alpha_reloc_type_check (int type) -{ - return (type >= R_ALPHA_NONE - && ((size_t) type - < sizeof (reloc_map_table) / sizeof (reloc_map_table[0])) - && reloc_map_table[type] != NULL) ? true : false; -} diff --git a/libebl/arm_destr.c b/libebl/arm_destr.c deleted file mode 100644 index 3851240a..00000000 --- a/libebl/arm_destr.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Destructor for Arm specific backend library. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libebl_arm.h> - - -void -arm_destr (bh) - Ebl *bh; -{ - /* Nothing to do so far. */ -} diff --git a/libebl/arm_init.c b/libebl/arm_init.c deleted file mode 100644 index 3dee75a7..00000000 --- a/libebl/arm_init.c +++ /dev/null @@ -1,40 +0,0 @@ -/* Initialization of Arm specific backend library. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libebl_arm.h> - - -int -arm_init (elf, machine, eh, ehlen) - Elf *elf; - GElf_Half machine; - Ebl *eh; - size_t ehlen; -{ - /* Check whether the Elf_BH object has a sufficent size. */ - if (ehlen < sizeof (Ebl)) - return 1; - - /* We handle it. */ - eh->name = "Arm"; - eh->reloc_type_name = arm_reloc_type_name; - eh->reloc_type_check = arm_reloc_type_check; - eh->destr = arm_destr; - - return 0; -} diff --git a/libebl/arm_symbol.c b/libebl/arm_symbol.c deleted file mode 100644 index 224beea3..00000000 --- a/libebl/arm_symbol.c +++ /dev/null @@ -1,113 +0,0 @@ -/* Arm specific symbolic name handling. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <stddef.h> - -#include <libebl_arm.h> - - -/* Return of the backend. */ -const char * -arm_backend_name (void) -{ - return "arm"; -} - - -/* Relocation mapping table. */ -static const char *reloc_map_table[] = - { - [R_ARM_NONE] = "R_ARM_NONE", - [R_ARM_PC24] = "R_ARM_PC24", - [R_ARM_ABS32] = "R_ARM_ABS32", - [R_ARM_REL32] = "R_ARM_REL32", - [R_ARM_PC13] = "R_ARM_PC13", - [R_ARM_ABS16] = "R_ARM_ABS16", - [R_ARM_ABS12] = "R_ARM_ABS12", - [R_ARM_THM_ABS5] = "R_ARM_THM_ABS5", - [R_ARM_ABS8] = "R_ARM_ABS8", - [R_ARM_SBREL32] = "R_ARM_SBREL32", - [R_ARM_THM_PC22] = "R_ARM_THM_PC22", - [R_ARM_THM_PC8] = "R_ARM_THM_PC8", - [R_ARM_AMP_VCALL9] = "R_ARM_AMP_VCALL9", - [R_ARM_SWI24] = "R_ARM_SWI24", - [R_ARM_THM_SWI8] = "R_ARM_THM_SWI8", - [R_ARM_XPC25] = "R_ARM_XPC25", - [R_ARM_THM_XPC22] = "R_ARM_THM_XPC22", - [R_ARM_COPY] = "R_ARM_COPY", - [R_ARM_GLOB_DAT] = "R_ARM_GLOB_DAT", - [R_ARM_JUMP_SLOT] = "R_ARM_JUMP_SLOT", - [R_ARM_RELATIVE] = "R_ARM_RELATIVE", - [R_ARM_GOTOFF] = "R_ARM_GOTOFF", - [R_ARM_GOTPC] = "R_ARM_GOTPC", - [R_ARM_GOT32] = "R_ARM_GOT32", - [R_ARM_PLT32] = "R_ARM_PLT32", - [R_ARM_ALU_PCREL_7_0] = "R_ARM_ALU_PCREL_7_0", - [R_ARM_ALU_PCREL_15_8] = "R_ARM_ALU_PCREL_15_8", - [R_ARM_ALU_PCREL_23_15] = "R_ARM_ALU_PCREL_23_15", - [R_ARM_LDR_SBREL_11_0] = "R_ARM_LDR_SBREL_11_0", - [R_ARM_ALU_SBREL_19_12] = "R_ARM_ALU_SBREL_19_12", - [R_ARM_ALU_SBREL_27_20] = "R_ARM_ALU_SBREL_27_20" - }; - -static const char *reloc_map_table2[] = - { - [R_ARM_GNU_VTENTRY] = "R_ARM_GNU_VTENTRY", - [R_ARM_GNU_VTINHERIT] = "R_ARM_GNU_VTINHERIT", - [R_ARM_THM_PC11] = "R_ARM_THM_PC11", - [R_ARM_THM_PC9] = "R_ARM_THM_PC9" - }; - -static const char *reloc_map_table3[] = - { - [R_ARM_RXPC25] = "R_ARM_RXPC25", - [R_ARM_RSBREL32] = "R_ARM_RSBREL32", - [R_ARM_THM_RPC22] = "R_ARM_THM_RPC22", - [R_ARM_RREL32] = "R_ARM_RREL32", - [R_ARM_RABS22] = "R_ARM_RABS22", - [R_ARM_RPC24] = "R_ARM_RPC24", - [R_ARM_RBASE] = "R_ARM_RBASE" - }; - - -/* Determine relocation type string for Alpha. */ -const char * -arm_reloc_type_name (int type, char *buf, size_t len) -{ - if (type >= R_ARM_NONE && type <= R_ARM_ALU_SBREL_27_20) - return reloc_map_table[type]; - - if (type >= R_ARM_GNU_VTENTRY && type <= R_ARM_THM_PC9) - return reloc_map_table2[type - R_ARM_GNU_VTENTRY]; - - if (type >= R_ARM_RXPC25 && type <= R_ARM_RBASE) - return reloc_map_table3[type - R_ARM_RXPC25]; - - return NULL; -} - - -/* Check for correct relocation type. */ -bool -arm_reloc_type_check (int type) -{ - return ((type >= R_ARM_NONE && type <= R_ARM_ALU_SBREL_27_20) - || (type >= R_ARM_GNU_VTENTRY && type <= R_ARM_THM_PC9) - || (type >= R_ARM_RXPC25 && type <= R_ARM_RBASE)) ? true : false; -} diff --git a/libebl/eblbackendname.c b/libebl/eblbackendname.c deleted file mode 100644 index 03830ebe..00000000 --- a/libebl/eblbackendname.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Return backend name. - Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdio.h> -#include <libeblP.h> - - -const char * -ebl_backend_name (ebl) - Ebl *ebl; -{ - return ebl != NULL ? ebl->emulation : gettext ("No backend"); -} diff --git a/libebl/eblclosebackend.c b/libebl/eblclosebackend.c deleted file mode 100644 index c5579612..00000000 --- a/libebl/eblclosebackend.c +++ /dev/null @@ -1,39 +0,0 @@ -/* Free ELF backend handle. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dlfcn.h> -#include <stdlib.h> - -#include <libeblP.h> - - -void -ebl_closebackend (Ebl *ebl) -{ - if (ebl != NULL) - { - /* Run the destructor. */ - ebl->destr (ebl); - - /* Close the dynamically loaded object. */ - if (ebl->dlhandle != NULL) - (void) dlclose (ebl->dlhandle); - - /* Free the resources. */ - free (ebl); - } -} diff --git a/libebl/eblcorenote.c b/libebl/eblcorenote.c deleted file mode 100644 index 6cc384fa..00000000 --- a/libebl/eblcorenote.c +++ /dev/null @@ -1,151 +0,0 @@ -/* Print contents of core note. - Copyright (C) 2002, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <inttypes.h> -#include <stdio.h> -#include <stddef.h> -#include <libeblP.h> - - -void -ebl_core_note (ebl, name, type, descsz, desc) - Ebl *ebl; - const char *name; - uint32_t type; - uint32_t descsz; - const char *desc; -{ - int class = gelf_getclass (ebl->elf); - - if (! ebl->core_note (name, type, descsz, desc)) - /* The machine specific function did not know this type. */ - switch (type) - { - case NT_PLATFORM: - printf (gettext (" Platform: %.*s\n"), (int) descsz, desc); - break; - - case NT_AUXV: - ; - size_t cnt; - size_t elsize = (class == ELFCLASS32 - ? sizeof (Elf32_auxv_t) : sizeof (Elf64_auxv_t)); - - for (cnt = 0; (cnt + 1) * elsize <= descsz; ++cnt) - { - unsigned long int atype; - unsigned long int val; - - if (class == ELFCLASS32) - { - Elf32_auxv_t *auxv = &((Elf32_auxv_t *) desc)[cnt]; - - atype = auxv->a_type; - val = auxv->a_un.a_val; - } - else - { - Elf64_auxv_t *auxv = &((Elf64_auxv_t *) desc)[cnt]; - - atype = auxv->a_type; - val = auxv->a_un.a_val; - } - - /* XXX Do we need the auxiliary vector info anywhere - else? If yes, move code into a separate function. */ - const char *at; - - switch (atype) - { -#define NEW_AT(name) case AT_##name: at = #name; break - NEW_AT (NULL); - NEW_AT (IGNORE); - NEW_AT (EXECFD); - NEW_AT (PHDR); - NEW_AT (PHENT); - NEW_AT (PHNUM); - NEW_AT (PAGESZ); - NEW_AT (BASE); - NEW_AT (FLAGS); - NEW_AT (ENTRY); - NEW_AT (NOTELF); - NEW_AT (UID); - NEW_AT (EUID); - NEW_AT (GID); - NEW_AT (EGID); - NEW_AT (CLKTCK); - NEW_AT (PLATFORM); - NEW_AT (HWCAP); - NEW_AT (FPUCW); - NEW_AT (DCACHEBSIZE); - NEW_AT (ICACHEBSIZE); - NEW_AT (UCACHEBSIZE); - NEW_AT (IGNOREPPC); - - default: - at = "???"; - break; - } - - switch (atype) - { - case AT_NULL: - case AT_IGNORE: - case AT_IGNOREPPC: - case AT_NOTELF: - default: - printf (" %s\n", at); - break; - - case AT_EXECFD: - case AT_PHENT: - case AT_PHNUM: - case AT_PAGESZ: - case AT_UID: - case AT_EUID: - case AT_GID: - case AT_EGID: - case AT_CLKTCK: - case AT_FPUCW: - case AT_DCACHEBSIZE: - case AT_ICACHEBSIZE: - case AT_UCACHEBSIZE: - printf (" %s: %" PRId64 "\n", at, (int64_t) val); - break; - - case AT_PHDR: - case AT_BASE: - case AT_FLAGS: /* XXX Print flags? */ - case AT_ENTRY: - case AT_PLATFORM: /* XXX Get string? */ - case AT_HWCAP: /* XXX Print flags? */ - printf (" %s: %" PRIx64 "\n", at, (uint64_t) val); - break; - } - - if (atype == AT_NULL) - /* Reached the end. */ - break; - } - break; - - default: - /* Unknown type. */ - break; - } -} diff --git a/libebl/eblcorenotetypename.c b/libebl/eblcorenotetypename.c deleted file mode 100644 index 4a94d2ba..00000000 --- a/libebl/eblcorenotetypename.c +++ /dev/null @@ -1,68 +0,0 @@ -/* Return note type name. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <inttypes.h> -#include <stdio.h> -#include <libeblP.h> - - -const char * -ebl_core_note_type_name (ebl, type, buf, len) - Ebl *ebl; - uint32_t type; - char *buf; - size_t len; -{ - const char *res = ebl->core_note_type_name (type, buf, len); - - if (res == NULL) - { - static const char *knowntypes[] = - { -#define KNOWNSTYPE(name) [NT_##name] = #name - KNOWNSTYPE (PRSTATUS), - KNOWNSTYPE (FPREGSET), - KNOWNSTYPE (PRPSINFO), - KNOWNSTYPE (TASKSTRUCT), - KNOWNSTYPE (PLATFORM), - KNOWNSTYPE (AUXV), - KNOWNSTYPE (GWINDOWS), - KNOWNSTYPE (ASRS), - KNOWNSTYPE (PSTATUS), - KNOWNSTYPE (PSINFO), - KNOWNSTYPE (PRCRED), - KNOWNSTYPE (UTSNAME), - KNOWNSTYPE (LWPSTATUS), - KNOWNSTYPE (LWPSINFO), - KNOWNSTYPE (PRFPXREG) - }; - - /* Handle standard names. */ - if (type < sizeof (knowntypes) / sizeof (knowntypes[0]) - && knowntypes[type] != NULL) - res = knowntypes[type]; - else - { - snprintf (buf, len, "%s: %" PRIu32, gettext ("<unknown>"), type); - - res = buf; - } - } - - return res; -} diff --git a/libebl/ebldebugscnp.c b/libebl/ebldebugscnp.c deleted file mode 100644 index 59310b51..00000000 --- a/libebl/ebldebugscnp.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Check section name for being that of a debug informatino section. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdint.h> -#include <libeblP.h> - - -bool -ebl_debugscn_p (ebl, name) - Ebl *ebl; - const char *name; -{ - return ebl->debugscn_p (name); -} diff --git a/libebl/ebldynamictagcheck.c b/libebl/ebldynamictagcheck.c deleted file mode 100644 index 68b41691..00000000 --- a/libebl/ebldynamictagcheck.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Check dynamic tag. - Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <inttypes.h> -#include <libeblP.h> - - -bool -ebl_dynamic_tag_check (ebl, tag) - Ebl *ebl; - int64_t tag; -{ - bool res = ebl != NULL ? ebl->dynamic_tag_check (tag) : false; - - if (!res - && ((tag >= 0 && tag < DT_NUM) - || (tag >= DT_GNU_PRELINKED && tag <= DT_SYMINENT) - || (tag >= DT_GNU_CONFLICT && tag <= DT_SYMINFO) - || tag == DT_VERSYM - || (tag >= DT_RELACOUNT && tag <= DT_VERNEEDNUM) - || tag == DT_AUXILIARY - || tag == DT_FILTER)) - res = true; - - return res; -} diff --git a/libebl/ebldynamictagname.c b/libebl/ebldynamictagname.c deleted file mode 100644 index 464c1e2a..00000000 --- a/libebl/ebldynamictagname.c +++ /dev/null @@ -1,97 +0,0 @@ -/* Return dynamic tag name. - Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <inttypes.h> -#include <stdio.h> -#include <libeblP.h> - - -const char * -ebl_dynamic_tag_name (ebl, tag, buf, len) - Ebl *ebl; - int64_t tag; - char *buf; - size_t len; -{ - const char *res = ebl != NULL ? ebl->dynamic_tag_name (tag, buf, len) : NULL; - - if (res == NULL) - { - if (tag >= 0 && tag < DT_NUM) - { - static const char *stdtags[] = - { - "NULL", "NEEDED", "PLTRELSZ", "PLTGOT", "HASH", "STRTAB", - "SYMTAB", "RELA", "RELASZ", "RELAENT", "STRSZ", "SYMENT", - "INIT", "FINI", "SONAME", "RPATH", "SYMBOLIC", "REL", "RELSZ", - "RELENT", "PLTREL", "DEBUG", "TEXTREL", "JMPREL", "BIND_NOW", - "INIT_ARRAY", "FINI_ARRAY", "INIT_ARRAYSZ", "FINI_ARRAYSZ", - "RUNPATH", "FLAGS", "ENCODING", "PREINIT_ARRAY", - "PREINIT_ARRAYSZ" - }; - - res = stdtags[tag]; - } - else if (tag == DT_VERSYM) - res = "VERSYM"; - else if (tag >= DT_GNU_PRELINKED && tag <= DT_SYMINENT) - { - static const char *valrntags[] = - { - "GNU_PRELINKED", "GNU_CONFLICTSZ", "GNU_LIBLISTSZ", - "CHECKSUM", "PLTPADSZ", "MOVEENT", "MOVESZ", "FEATURE_1", - "POSFLAG_1", "SYMINSZ", "SYMINENT" - }; - - res = valrntags[tag - DT_GNU_PRELINKED]; - } - else if (tag >= DT_GNU_CONFLICT && tag <= DT_SYMINFO) - { - static const char *addrrntags[] = - { - "GNU_CONFLICT", "GNU_LIBLIST", "CONFIG", "DEPAUDIT", "AUDIT", - "PLTPAD", "MOVETAB", "SYMINFO" - }; - - res = addrrntags[tag - DT_GNU_CONFLICT]; - } - else if (tag >= DT_RELACOUNT && tag <= DT_VERNEEDNUM) - { - static const char *suntags[] = - { - "RELACOUNT", "RELCOUNT", "FLAGS_1", "VERDEF", "VERDEFNUM", - "VERNEED", "VERNEEDNUM" - }; - - res = suntags[tag - DT_RELACOUNT]; - } - else if (tag == DT_AUXILIARY) - res = "AUXILIARY"; - else if (tag == DT_FILTER) - res = "FILTER"; - else - { - snprintf (buf, len, gettext ("<unknown>: %" PRId64), tag); - - res = buf; - - } - } - - return res; -} diff --git a/libebl/eblgotpcreloccheck.c b/libebl/eblgotpcreloccheck.c deleted file mode 100644 index 8ae8b7b8..00000000 --- a/libebl/eblgotpcreloccheck.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Return true if the symbol type is that referencing the GOT. E.g., - R_386_GOTPC. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libeblP.h> - - -bool -ebl_gotpc_reloc_check (ebl, reloc) - Ebl *ebl; - int reloc; -{ - return ebl != NULL ? ebl->gotpc_reloc_check (ebl->elf, reloc) : false; -} diff --git a/libebl/eblgstrtab.c b/libebl/eblgstrtab.c deleted file mode 100644 index 1fee0e89..00000000 --- a/libebl/eblgstrtab.c +++ /dev/null @@ -1,355 +0,0 @@ -/* Generic string table handling. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <inttypes.h> -#include <libelf.h> -#include <stddef.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <sys/param.h> - -#include "libebl.h" - -#ifndef MIN -# define MIN(a, b) ((a) < (b) ? (a) : (b)) -#endif - - -struct Ebl_GStrent -{ - const char *string; - size_t len; - struct Ebl_GStrent *next; - struct Ebl_GStrent *left; - struct Ebl_GStrent *right; - size_t offset; - unsigned int width; - char reverse[0]; -}; - - -struct memoryblock -{ - struct memoryblock *next; - char memory[0]; -}; - - -struct Ebl_GStrtab -{ - struct Ebl_GStrent *root; - struct memoryblock *memory; - char *backp; - size_t left; - size_t total; - unsigned int width; - bool nullstr; - - struct Ebl_GStrent null; -}; - - -/* Cache for the pagesize. We correct this value a bit so that `malloc' - is not allocating more than a page. */ -static size_t ps; - - -struct Ebl_GStrtab * -ebl_gstrtabinit (unsigned int width, bool nullstr) -{ - struct Ebl_GStrtab *ret; - - if (ps == 0) - { - ps = sysconf (_SC_PAGESIZE) - 2 * sizeof (void *); - assert (sizeof (struct memoryblock) < ps); - } - - ret = (struct Ebl_GStrtab *) calloc (1, sizeof (struct Ebl_GStrtab)); - if (ret != NULL) - { - ret->width = width; - ret->nullstr = nullstr; - - if (nullstr) - { - ret->null.len = 1; - ret->null.string = (char *) calloc (1, width); - } - } - - return ret; -} - - -static void -morememory (struct Ebl_GStrtab *st, size_t len) -{ - struct memoryblock *newmem; - - if (len < ps) - len = ps; - newmem = (struct memoryblock *) malloc (len); - if (newmem == NULL) - abort (); - - newmem->next = st->memory; - st->memory = newmem; - st->backp = newmem->memory; - st->left = len - offsetof (struct memoryblock, memory); -} - - -void -ebl_gstrtabfree (struct Ebl_GStrtab *st) -{ - struct memoryblock *mb = st->memory; - - while (mb != NULL) - { - void *old = mb; - mb = mb->next; - free (old); - } - - if (st->null.string != NULL) - free ((char *) st->null.string); - - free (st); -} - - -static struct Ebl_GStrent * -newstring (struct Ebl_GStrtab *st, const char *str, size_t len) -{ - struct Ebl_GStrent *newstr; - size_t align; - size_t i; - size_t j; - - /* Compute the amount of padding needed to make the structure aligned. */ - align = ((__alignof__ (struct Ebl_GStrent) - - (((uintptr_t) st->backp) - & (__alignof__ (struct Ebl_GStrent) - 1))) - & (__alignof__ (struct Ebl_GStrent) - 1)); - - /* Make sure there is enough room in the memory block. */ - if (st->left < align + sizeof (struct Ebl_GStrent) + len * st->width) - { - morememory (st, sizeof (struct Ebl_GStrent) + len * st->width); - align = 0; - } - - /* Create the reserved string. */ - newstr = (struct Ebl_GStrent *) (st->backp + align); - newstr->string = str; - newstr->len = len; - newstr->width = st->width; - newstr->next = NULL; - newstr->left = NULL; - newstr->right = NULL; - newstr->offset = 0; - for (i = len - 2; i >= 0; --i) - for (j = st->width - 1; j >= 0; --j) - newstr->reverse[i * st->width + j] = str[(len - 2 - i) * st->width + j]; - for (j = 0; j < st->width; ++j) - newstr->reverse[(len - 1) * st->width + j] = '\0'; - st->backp += align + sizeof (struct Ebl_GStrent) + len * st->width; - st->left -= align + sizeof (struct Ebl_GStrent) + len * st->width; - - return newstr; -} - - -/* XXX This function should definitely be rewritten to use a balancing - tree algorith (AVL, red-black trees). For now a simple, correct - implementation is enough. */ -static struct Ebl_GStrent ** -searchstring (struct Ebl_GStrent **sep, struct Ebl_GStrent *newstr) -{ - int cmpres; - - /* More strings? */ - if (*sep == NULL) - { - *sep = newstr; - return sep; - } - - /* Compare the strings. */ - cmpres = memcmp ((*sep)->reverse, newstr->reverse, - (MIN ((*sep)->len, newstr->len) - 1) * (*sep)->width); - if (cmpres == 0) - /* We found a matching string. */ - return sep; - else if (cmpres > 0) - return searchstring (&(*sep)->left, newstr); - else - return searchstring (&(*sep)->right, newstr); -} - - -/* Add new string. The actual string is assumed to be permanent. */ -struct Ebl_GStrent * -ebl_gstrtabadd (struct Ebl_GStrtab *st, const char *str, size_t len) -{ - struct Ebl_GStrent *newstr; - struct Ebl_GStrent **sep; - - /* Compute the string length if the caller doesn't know it. */ - if (len == 0) - { - size_t j; - - do - for (j = 0; j < st->width; ++j) - if (str[len * st->width + j] != '\0') - break; - while (j == st->width && ++len); - } - - /* Make sure all "" strings get offset 0 but only if the table was - created with a special null entry in mind. */ - if (len == 1 && st->null.string != NULL) - return &st->null; - - /* Allocate memory for the new string and its associated information. */ - newstr = newstring (st, str, len); - - /* Search in the array for the place to insert the string. If there - is no string with matching prefix and no string with matching - leading substring, create a new entry. */ - sep = searchstring (&st->root, newstr); - if (*sep != newstr) - { - /* This is not the same entry. This means we have a prefix match. */ - if ((*sep)->len > newstr->len) - { - struct Ebl_GStrent *subs; - - /* Check whether we already know this string. */ - for (subs = (*sep)->next; subs != NULL; subs = subs->next) - if (subs->len == newstr->len) - { - /* We have an exact match with a substring. Free the memory - we allocated. */ - st->left += (st->backp - (char *) newstr) * st->width; - st->backp = (char *) newstr; - - return subs; - } - - /* We have a new substring. This means we don't need the reverse - string of this entry anymore. */ - st->backp -= newstr->len; - st->left += newstr->len; - - newstr->next = (*sep)->next; - (*sep)->next = newstr; - } - else if ((*sep)->len != newstr->len) - { - /* When we get here it means that the string we are about to - add has a common prefix with a string we already have but - it is longer. In this case we have to put it first. */ - st->total += newstr->len - (*sep)->len; - newstr->next = *sep; - newstr->left = (*sep)->left; - newstr->right = (*sep)->right; - *sep = newstr; - } - else - { - /* We have an exact match. Free the memory we allocated. */ - st->left += (st->backp - (char *) newstr) * st->width; - st->backp = (char *) newstr; - - newstr = *sep; - } - } - else - st->total += newstr->len; - - return newstr; -} - - -static void -copystrings (struct Ebl_GStrent *nodep, char **freep, size_t *offsetp) -{ - struct Ebl_GStrent *subs; - - if (nodep->left != NULL) - copystrings (nodep->left, freep, offsetp); - - /* Process the current node. */ - nodep->offset = *offsetp; - *freep = (char *) mempcpy (*freep, nodep->string, nodep->len * nodep->width); - *offsetp += nodep->len * nodep->width; - - for (subs = nodep->next; subs != NULL; subs = subs->next) - { - assert (subs->len < nodep->len); - subs->offset = nodep->offset + (nodep->len - subs->len) * nodep->width; - assert (subs->offset != 0 || subs->string[0] == '\0'); - } - - if (nodep->right != NULL) - copystrings (nodep->right, freep, offsetp); -} - - -void -ebl_gstrtabfinalize (struct Ebl_GStrtab *st, Elf_Data *data) -{ - size_t copylen; - char *endp; - size_t nulllen = st->nullstr ? st->width : 0; - - /* Fill in the information. */ - data->d_buf = malloc (st->total + nulllen); - if (data->d_buf == NULL) - abort (); - - /* The first byte must always be zero if we created the table with a - null string. */ - if (st->nullstr) - memset (data->d_buf, '\0', st->width); - - data->d_type = ELF_T_BYTE; - data->d_size = st->total + nulllen; - data->d_off = 0; - data->d_align = 1; - data->d_version = EV_CURRENT; - - /* Now run through the tree and add all the string while also updating - the offset members of the elfstrent records. */ - endp = (char *) data->d_buf + nulllen; - copylen = nulllen; - copystrings (st->root, &endp, ©len); - assert (copylen == st->total * st->width + nulllen); -} - - -size_t -ebl_gstrtaboffset (struct Ebl_GStrent *se) -{ - return se->offset; -} diff --git a/libebl/eblmachineflagcheck.c b/libebl/eblmachineflagcheck.c deleted file mode 100644 index abc8d302..00000000 --- a/libebl/eblmachineflagcheck.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Check machine flag. - Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libeblP.h> - - -bool -ebl_machine_flag_check (ebl, flags) - Ebl *ebl; - Elf64_Word flags; -{ - return ebl != NULL ? ebl->machine_flag_check (flags) : (flags == 0); -} diff --git a/libebl/eblmachineflagname.c b/libebl/eblmachineflagname.c deleted file mode 100644 index 228a9945..00000000 --- a/libebl/eblmachineflagname.c +++ /dev/null @@ -1,76 +0,0 @@ -/* Return machine flag names. - Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdio.h> -#include <string.h> -#include <libeblP.h> - - -const char * -ebl_machine_flag_name (ebl, flags, buf, len) - Ebl *ebl; - Elf64_Word flags; - char *buf; - size_t len; -{ - const char *res; - - if (flags == 0) - res = ""; - else - { - char *cp = buf; - int first = 1; - const char *machstr; - size_t machstrlen; - - do - { - if (! first) - { - if (cp + 1 >= buf + len) - break; - *cp++ = ','; - } - - machstr = ebl != NULL ? ebl->machine_flag_name (&flags) : NULL; - if (machstr == NULL) - { - /* No more known flag. */ - snprintf (cp, buf + len - cp, "%#x", flags); - break; - } - - machstrlen = strlen (machstr) + 1; - if ((size_t) (buf + len - cp) < machstrlen) - { - *((char *) mempcpy (cp, machstr, buf + len - cp - 1)) = '\0'; - break; - } - - cp = mempcpy (cp, machstr, machstrlen); - - first = 0; - } - while (flags != 0); - - res = buf; - } - - return res; -} diff --git a/libebl/eblobjecttypename.c b/libebl/eblobjecttypename.c deleted file mode 100644 index c099c71d..00000000 --- a/libebl/eblobjecttypename.c +++ /dev/null @@ -1,48 +0,0 @@ -/* Return object file type name. - Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdio.h> -#include <libeblP.h> - - -const char * -ebl_object_type_name (ebl, object, buf, len) - Ebl *ebl; - int object; - char *buf; - size_t len; -{ - const char *res; - - res = ebl != NULL ? ebl->object_type_name (object, buf, len) : NULL; - if (res == NULL) - { - /* Handle OS-specific section names. */ - if (object >= ET_LOOS && object <= ET_HIOS) - snprintf (buf, len, "LOOS+%x", object - ET_LOOS); - /* Handle processor-specific section names. */ - else if (object >= ET_LOPROC && object <= ET_HIPROC) - snprintf (buf, len, "LOPROC+%x", object - ET_LOPROC); - else - snprintf (buf, len, "%s: %d", gettext ("<unknown>"), object); - - res = buf; - } - - return res; -} diff --git a/libebl/eblobjnote.c b/libebl/eblobjnote.c deleted file mode 100644 index 5adff18e..00000000 --- a/libebl/eblobjnote.c +++ /dev/null @@ -1,87 +0,0 @@ -/* Print contents of object file note. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <inttypes.h> -#include <stdio.h> -#include <string.h> -#include <libeblP.h> - - -void -ebl_object_note (ebl, name, type, descsz, desc) - Ebl *ebl; - const char *name; - uint32_t type; - uint32_t descsz; - const char *desc; -{ - if (! ebl->object_note (name, type, descsz, desc)) - /* The machine specific function did not know this type. */ - switch (type) - { - case NT_VERSION: - if (strcmp (name, "GNU") == 0 && descsz >= 8) - { - struct - { - uint32_t os; - uint32_t version[descsz / 4 - 1]; - } *tag = (__typeof (tag)) desc; - - const char *os; - switch (tag->os) - { - case ELF_NOTE_OS_LINUX: - os = "Linux"; - break; - - case ELF_NOTE_OS_GNU: - os = "GNU"; - break; - - case ELF_NOTE_OS_SOLARIS2: - os = "Solaris"; - break; - - case ELF_NOTE_OS_FREEBSD: - os = "FreeBSD"; - break; - - default: - os = "???"; - break; - } - - printf (gettext (" OS: %s, ABI: "), os); - size_t cnt; - for (cnt = 0; cnt < descsz / 4 - 1; ++cnt) - { - if (cnt != 0) - putchar_unlocked ('.'); - printf ("%" PRIu32, tag->version[cnt]); - } - putchar_unlocked ('\n'); - break; - } - /* FALLTHROUGH */ - - default: - /* Unknown type. */ - break; - } -} diff --git a/libebl/eblobjnotetypename.c b/libebl/eblobjnotetypename.c deleted file mode 100644 index a963cefb..00000000 --- a/libebl/eblobjnotetypename.c +++ /dev/null @@ -1,54 +0,0 @@ -/* Return note type name. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <inttypes.h> -#include <stdio.h> -#include <libeblP.h> - - -const char * -ebl_object_note_type_name (ebl, type, buf, len) - Ebl *ebl; - uint32_t type; - char *buf; - size_t len; -{ - const char *res = ebl->object_note_type_name (type, buf, len); - - if (res == NULL) - { - static const char *knowntypes[] = - { -#define KNOWNSTYPE(name) [NT_##name] = #name - KNOWNSTYPE (VERSION), - }; - - /* Handle standard names. */ - if (type < sizeof (knowntypes) / sizeof (knowntypes[0]) - && knowntypes[type] != NULL) - res = knowntypes[type]; - else - { - snprintf (buf, len, "%s: %" PRIu32, gettext ("<unknown>"), type); - - res = buf; - } - } - - return res; -} diff --git a/libebl/eblopenbackend.c b/libebl/eblopenbackend.c deleted file mode 100644 index c801a6a0..00000000 --- a/libebl/eblopenbackend.c +++ /dev/null @@ -1,491 +0,0 @@ -/* Generate ELF backend handle. - Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <dlfcn.h> -#include <error.h> -#include <gelf.h> -#include <stdlib.h> -#include <string.h> - -#include <libeblP.h> - - -/* This table should contain the complete list of architectures as far - as the ELF specification is concerned. */ -/* XXX When things are stable replace the string pointers with char - arrays to avoid relocations. */ -static const struct -{ - const char *dsoname; - const char *emulation; - const char *prefix; - int prefix_len; - int em; -} machines[] = -{ - { "i386", "elf_i386", "i386", 4, EM_386 }, - { "ia64", "elf_ia64", "ia64", 4, EM_IA_64 }, - { "alpha", "elf_alpha", "alpha", 5, EM_ALPHA }, - { "x86_64", "elf_x86_64", "x86_64", 6, EM_X86_64 }, - { "sh", "elf_sh", "sh", 2, EM_SH }, - { "arm", "ebl_arm", "arm", 3, EM_ARM }, - { "sparc", "elf_sparcv9", "sparc", 5, EM_SPARCV9 }, - { "sparc", "elf_sparc", "sparc", 5, EM_SPARC }, - { "sparc", "elf_sparcv8plus", "sparc", 5, EM_SPARC32PLUS }, - - { "m32", "elf_m32", "m32", 3, EM_M32 }, - { "m68k", "elf_m68k", "m68k", 4, EM_68K }, - { "m88k", "elf_m88k", "m88k", 4, EM_88K }, - { "i860", "elf_i860", "i860", 4, EM_860 }, - { "mips", "elf_mips", "mips", 4, EM_MIPS }, - { "s370", "ebl_s370", "s370", 4, EM_S370 }, - { "mips", "elf_mipsel", "mips", 4, EM_MIPS_RS3_LE }, - { "parisc", "elf_parisc", "parisc", 6, EM_PARISC }, - { "vpp500", "elf_vpp500", "vpp500", 5, EM_VPP500 }, - { "sparc", "elf_v8plus", "v8plus", 6, EM_SPARC32PLUS }, - { "i960", "elf_i960", "i960", 4, EM_960 }, - { "ppc", "elf_ppc", "ppc", 3, EM_PPC }, - { "ppc64", "elf_ppc64", "ppc64", 5, EM_PPC64 }, - { "s390", "ebl_s390", "s390", 4, EM_S390 }, - { "v800", "ebl_v800", "v800", 4, EM_V800 }, - { "fr20", "ebl_fr20", "fr20", 4, EM_FR20 }, - { "rh32", "ebl_rh32", "rh32", 4, EM_RH32 }, - { "rce", "ebl_rce", "rce", 3, EM_RCE }, - { "tricore", "elf_tricore", "tricore", 7, EM_TRICORE }, - { "arc", "elf_arc", "arc", 3, EM_ARC }, - { "h8", "elf_h8_300", "h8_300", 6, EM_H8_300 }, - { "h8", "elf_h8_300h", "h8_300h", 6, EM_H8_300H }, - { "h8", "elf_h8s", "h8s", 6, EM_H8S }, - { "h8", "elf_h8_500", "h8_500", 6, EM_H8_500 }, - { "mips_x", "elf_mips_x", "mips_x", 6, EM_MIPS_X }, - { "coldfire", "elf_coldfire", "coldfire", 8, EM_COLDFIRE }, - { "m68k", "elf_68hc12", "68hc12", 6, EM_68HC12 }, - { "mma", "elf_mma", "mma", 3, EM_MMA }, - { "pcp", "elf_pcp", "pcp", 3, EM_PCP }, - { "ncpu", "elf_ncpu", "ncpu", 4, EM_NCPU }, - { "ndr1", "elf_ndr1", "ndr1", 4, EM_NDR1 }, - { "starcore", "elf_starcore", "starcore", 8, EM_STARCORE }, - { "me16", "elf_me16", "em16", 4, EM_ME16 }, - { "st100", "elf_st100", "st100", 5, EM_ST100 }, - { "tinyj", "elf_tinyj", "tinyj", 5, EM_TINYJ }, - { "pdsp", "elf_pdsp", "pdsp", 4, EM_PDSP }, - { "fx66", "elf_fx66", "fx66", 4, EM_FX66 }, - { "st9plus", "elf_st9plus", "st9plus", 7, EM_ST9PLUS }, - { "st7", "elf_st7", "st7", 3, EM_ST7 }, - { "m68k", "elf_68hc16", "68hc16", 6, EM_68HC16 }, - { "m68k", "elf_68hc11", "68hc11", 6, EM_68HC11 }, - { "m68k", "elf_68hc08", "68hc08", 6, EM_68HC08 }, - { "m68k", "elf_68hc05", "68hc05", 6, EM_68HC05 }, - { "svx", "elf_svx", "svx", 3, EM_SVX }, - { "st19", "elf_st19", "st19", 4, EM_ST19 }, - { "vax", "elf_vax", "vax", 3, EM_VAX }, - { "cris", "elf_cris", "cris", 4, EM_CRIS }, - { "javelin", "elf_javelin", "javelin", 7, EM_JAVELIN }, - { "firepath", "elf_firepath", "firepath", 8, EM_FIREPATH }, - { "zsp", "elf_zsp", "zsp", 3, EM_ZSP}, - { "mmix", "elf_mmix", "mmix", 4, EM_MMIX }, - { "hunay", "elf_huany", "huany", 5, EM_HUANY }, - { "prism", "elf_prism", "prism", 5, EM_PRISM }, - { "avr", "elf_avr", "avr", 3, EM_AVR }, - { "fr30", "elf_fr30", "fr30", 4, EM_FR30 }, - { "dv10", "elf_dv10", "dv10", 4, EM_D10V }, - { "dv30", "elf_dv30", "dv30", 4, EM_D30V }, - { "v850", "elf_v850", "v850", 4, EM_V850 }, - { "m32r", "elf_m32r", "m32r", 4, EM_M32R }, - { "mn10300", "elf_mn10300", "mn10300", 7, EM_MN10300 }, - { "mn10200", "elf_mn10200", "mn10200", 7, EM_MN10200 }, - { "pj", "elf_pj", "pj", 2, EM_PJ }, - { "openrisc", "elf_openrisc", "openrisc", 8, EM_OPENRISC }, - { "arc", "elf_arc_a5", "arc_a5", 6, EM_ARC_A5 }, - { "xtensa", "elf_xtensa", "xtensa", 6, EM_XTENSA }, -}; -#define nmachines (sizeof (machines) / sizeof (machines[0])) - - -/* Default callbacks. Mostly they just return the error value. */ -static const char *default_object_type_name (int ignore, char *buf, - size_t len); -static const char *default_reloc_type_name (int ignore, char *buf, size_t len); -static bool default_reloc_type_check (int ignore); -static bool default_reloc_valid_use (Elf *elf, int ignore); -static bool default_gotpc_reloc_check (Elf *elf, int ignore); -static const char *default_segment_type_name (int ignore, char *buf, - size_t len); -static const char *default_section_type_name (int ignore, char *buf, - size_t len); -static const char *default_section_name (int ignore, int ignore2, char *buf, - size_t len); -static const char *default_machine_flag_name (Elf64_Word *ignore); -static bool default_machine_flag_check (Elf64_Word flags); -static const char *default_symbol_type_name (int ignore, char *buf, - size_t len); -static const char *default_symbol_binding_name (int ignore, char *buf, - size_t len); -static const char *default_dynamic_tag_name (int64_t ignore, char *buf, - size_t len); -static bool default_dynamic_tag_check (int64_t ignore); -static GElf_Word default_sh_flags_combine (GElf_Word flags1, GElf_Word flags2); -static const char *default_osabi_name (int ignore, char *buf, size_t len); -static void default_destr (struct ebl *ignore); -static const char *default_core_note_type_name (uint32_t, char *buf, - size_t len); -static const char *default_object_note_type_name (uint32_t, char *buf, - size_t len); -static bool default_core_note (const char *name, uint32_t type, - uint32_t descsz, const char *desc); -static bool default_object_note (const char *name, uint32_t type, - uint32_t descsz, const char *desc); -static bool default_debugscn_p (const char *name); - - -/* Find an appropriate backend for the file associated with ELF. */ -static Ebl * -openbackend (elf, emulation, machine) - Elf *elf; - const char *emulation; - GElf_Half machine; -{ - Ebl *result; - size_t cnt; - - /* First allocate the data structure for the result. We do this - here since this assures that the structure is always large - enough. */ - result = (Ebl *) calloc (1, sizeof (Ebl)); - if (result == NULL) - { - // XXX uncomment - // __libebl_seterror (ELF_E_NOMEM); - return NULL; - } - - /* Fill in the default callbacks. The initializer for the machine - specific module can overwrite the values. */ - result->object_type_name = default_object_type_name; - result->reloc_type_name = default_reloc_type_name; - result->reloc_type_check = default_reloc_type_check; - result->reloc_valid_use = default_reloc_valid_use; - result->gotpc_reloc_check = default_gotpc_reloc_check; - result->segment_type_name = default_segment_type_name; - result->section_type_name = default_section_type_name; - result->section_name = default_section_name; - result->machine_flag_name = default_machine_flag_name; - result->machine_flag_check = default_machine_flag_check; - result->symbol_type_name = default_symbol_type_name; - result->symbol_binding_name = default_symbol_binding_name; - result->dynamic_tag_name = default_dynamic_tag_name; - result->dynamic_tag_check = default_dynamic_tag_check; - result->sh_flags_combine = default_sh_flags_combine; - result->osabi_name = default_osabi_name; - result->core_note_type_name = default_core_note_type_name; - result->object_note_type_name = default_object_note_type_name; - result->core_note = default_core_note; - result->object_note = default_object_note; - result->debugscn_p = default_debugscn_p; - result->destr = default_destr; - - /* XXX Currently all we do is to look at 'e_machine' value in the - ELF header. With an internal mapping table from EM_* value to - DSO name we try to load the appropriate module to handle this - binary type. - - Multiple modules for the same machine type are possible and they - will be tried in sequence. The lookup process will only stop - when a module which can handle the machine type is found or all - available matching modules are tried. */ - for (cnt = 0; cnt < nmachines; ++cnt) - if ((emulation != NULL && strcmp (emulation, machines[cnt].emulation) == 0) - || (emulation == NULL && machines[cnt].em == machine)) - { - /* Well, we know the emulation name now. */ - result->emulation = machines[cnt].emulation; - - /* Give it a try. At least the machine type matches. First - try to load the module. */ - char dsoname[100]; - strcpy (stpcpy (stpcpy (dsoname, - "$ORIGIN/../" LIBSTR "/elfutils/libebl_"), - machines[cnt].dsoname), - ".so"); - - void *h = dlopen (dsoname, RTLD_LAZY); - if (h == NULL) - { - strcpy (stpcpy (stpcpy (dsoname, "libebl_"), - machines[cnt].dsoname), - ".so"); - h = dlopen (dsoname, RTLD_LAZY); - } - - /* Try without an explicit path. */ - if (h != NULL) - { - /* We managed to load the object. Now see whether the - initialization function likes our file. */ - ebl_bhinit_t initp; - char symname[machines[cnt].prefix_len + sizeof "_init"]; - - strcpy (mempcpy (symname, machines[cnt].prefix, - machines[cnt].prefix_len), "_init"); - - initp = (ebl_bhinit_t) dlsym (h, symname); - if (initp != NULL - && initp (elf, machine, result, sizeof (Ebl)) == 0) - { - /* We found a module to handle our file. */ - result->dlhandle = h; - result->elf = elf; - - /* A few entries are mandatory. */ - assert (result->name != NULL); - assert (result->destr != NULL); - - return result; - } - - /* Not the module we need. */ - (void) dlclose (h); - } - - /* We cannot find a DSO but the emulation/machine ID matches. - Return that information. */ - result->dlhandle = NULL; - result->elf = elf; - result->name = machines[cnt].prefix; - - return result; - } - - /* Nothing matched. We use only the default callbacks. */ - result->dlhandle = NULL; - result->elf = elf; - result->emulation = "<unknown>"; - result->name = "<unknown>"; - - return result; -} - - -/* Find an appropriate backend for the file associated with ELF. */ -Ebl * -ebl_openbackend (elf) - Elf *elf; -{ - GElf_Ehdr ehdr_mem; - GElf_Ehdr *ehdr; - - /* Get the ELF header of the object. */ - ehdr = gelf_getehdr (elf, &ehdr_mem); - if (ehdr == NULL) - { - // XXX uncomment - // __libebl_seterror (elf_errno ()); - return NULL; - } - - return openbackend (elf, NULL, ehdr->e_machine); -} - - -/* Find backend without underlying ELF file. */ -Ebl * -ebl_openbackend_machine (machine) - GElf_Half machine; -{ - return openbackend (NULL, NULL, machine); -} - - -/* Find backend with given emulation name. */ -Ebl * -ebl_openbackend_emulation (const char *emulation) -{ - return openbackend (NULL, emulation, EM_NONE); -} - - -/* Default callbacks. Mostly they just return the error value. */ -static const char * -default_object_type_name (int ignore, char *buf, size_t len) -{ - return NULL; -} - -static const char * -default_reloc_type_name (int ignore, char *buf, size_t len) -{ - return NULL; -} - -static bool -default_reloc_type_check (int ignore) -{ - return false; -} - -static bool -default_reloc_valid_use (Elf *elf, int ignore) -{ - return false; -} - -static bool -default_gotpc_reloc_check (Elf *elf, int ignore) -{ - return false; -} - -static const char * -default_segment_type_name (int ignore, char *buf, size_t len) -{ - return NULL; -} - -static const char * -default_section_type_name (int ignore, char *buf, size_t len) -{ - return NULL; -} - -static const char * -default_section_name (int ignore, int ignore2, char *buf, size_t len) -{ - return NULL; -} - -static const char * -default_machine_flag_name (Elf64_Word *ignore) -{ - return NULL; -} - -static bool -default_machine_flag_check (Elf64_Word flags) -{ - return flags == 0; -} - -static const char * -default_symbol_type_name (int ignore, char *buf, size_t len) -{ - return NULL; -} - -static const char * -default_symbol_binding_name (int ignore, char *buf, size_t len) -{ - return NULL; -} - -static const char * -default_dynamic_tag_name (int64_t ignore, char *buf, size_t len) -{ - return NULL; -} - -static bool -default_dynamic_tag_check (int64_t ignore) -{ - return false; -} - -static GElf_Word -default_sh_flags_combine (GElf_Word flags1, GElf_Word flags2) -{ - return SH_FLAGS_COMBINE (flags1, flags2); -} - -static void -default_destr (struct ebl *ignore) -{ -} - -static const char * -default_osabi_name (int ignore, char *buf, size_t len) -{ - return NULL; -} - -static const char * -default_core_note_type_name (uint32_t ignore, char *buf, size_t len) -{ - return NULL; -} - -static const char * -default_object_note_type_name (uint32_t ignore, char *buf, size_t len) -{ - return NULL; -} - -static bool -default_core_note (const char *name, uint32_t type, uint32_t descsz, - const char *desc) -{ - return NULL; -} - -static bool -default_object_note (const char *name, uint32_t type, uint32_t descsz, - const char *desc) -{ - return NULL; -} - -static bool -default_debugscn_p (const char *name) -{ - /* We know by default only about the DWARF debug sections which have - fixed names. */ - static const char *dwarf_scn_names[] = - { - /* DWARF 1 */ - ".debug", - ".line", - /* GNU DWARF 1 extensions */ - ".debug_srcinfo", - ".debug_sfnames", - /* DWARF 1.1 and DWARF 2 */ - ".debug_aranges", - ".debug_pubnames", - /* DWARF 2 */ - ".debug_info", - ".debug_abbrev", - ".debug_line", - ".debug_frame", - ".debug_str", - ".debug_loc", - ".debug_macinfo", - /* DWARF 3 */ - ".debug_ranges", - /* SGI/MIPS DWARF 2 extensions */ - ".debug_weaknames", - ".debug_funcnames", - ".debug_typenames", - ".debug_varnames" - }; - const size_t ndwarf_scn_names = (sizeof (dwarf_scn_names) - / sizeof (dwarf_scn_names[0])); - size_t cnt; - - for (cnt = 0; cnt < ndwarf_scn_names; ++cnt) - if (strcmp (name, dwarf_scn_names[cnt]) == 0) - return true; - - return false; -} diff --git a/libebl/eblosabiname.c b/libebl/eblosabiname.c deleted file mode 100644 index 9a1e6534..00000000 --- a/libebl/eblosabiname.c +++ /dev/null @@ -1,69 +0,0 @@ -/* Return OS ABI name - Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdio.h> -#include <libeblP.h> - - -const char * -ebl_osabi_name (ebl, osabi, buf, len) - Ebl *ebl; - int osabi; - char *buf; - size_t len; -{ - const char *res = ebl != NULL ? ebl->osabi_name (osabi, buf, len) : NULL; - - if (res == NULL) - { - if (osabi == ELFOSABI_NONE) - res = "UNIX - System V"; - else if (osabi == ELFOSABI_HPUX) - res = "HP/UX"; - else if (osabi == ELFOSABI_NETBSD) - res = "NetBSD"; - else if (osabi == ELFOSABI_LINUX) - res = "Linux"; - else if (osabi == ELFOSABI_SOLARIS) - res = "Solaris"; - else if (osabi == ELFOSABI_AIX) - res = "AIX"; - else if (osabi == ELFOSABI_IRIX) - res = "Irix"; - else if (osabi == ELFOSABI_FREEBSD) - res = "FreeBSD"; - else if (osabi == ELFOSABI_TRU64) - res = "TRU64"; - else if (osabi == ELFOSABI_MODESTO) - res = "Modesto"; - else if (osabi == ELFOSABI_OPENBSD) - res = "OpenBSD"; - else if (osabi == ELFOSABI_ARM) - res = "Arm"; - else if (osabi == ELFOSABI_STANDALONE) - res = gettext ("Stand alone"); - else - { - snprintf (buf, len, "%s: %d", gettext ("<unknown>"), osabi); - - res = buf; - } - } - - return res; -} diff --git a/libebl/eblreloctypecheck.c b/libebl/eblreloctypecheck.c deleted file mode 100644 index cafbc611..00000000 --- a/libebl/eblreloctypecheck.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Check relocation type. - Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libeblP.h> - - -bool -ebl_reloc_type_check (ebl, reloc) - Ebl *ebl; - int reloc; -{ - return ebl != NULL ? ebl->reloc_type_check (reloc) : false; -} diff --git a/libebl/eblreloctypename.c b/libebl/eblreloctypename.c deleted file mode 100644 index 5fa95608..00000000 --- a/libebl/eblreloctypename.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Return relocation type name. - Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdio.h> -#include <libeblP.h> - - -const char * -ebl_reloc_type_name (ebl, reloc, buf, len) - Ebl *ebl; - int reloc; - char *buf; - size_t len; -{ - const char *res; - - res = ebl != NULL ? ebl->reloc_type_name (reloc, buf, len) : NULL; - if (res == NULL) - /* There are no generic relocation type names. */ - res = "???"; - - return res; -} diff --git a/libebl/eblrelocvaliduse.c b/libebl/eblrelocvaliduse.c deleted file mode 100644 index 74889861..00000000 --- a/libebl/eblrelocvaliduse.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Check relocation type use. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libeblP.h> - - -bool -ebl_reloc_valid_use (ebl, reloc) - Ebl *ebl; - int reloc; -{ - return ebl != NULL ? ebl->reloc_valid_use (ebl->elf, reloc) : false; -} diff --git a/libebl/eblsectionname.c b/libebl/eblsectionname.c deleted file mode 100644 index 6c801db6..00000000 --- a/libebl/eblsectionname.c +++ /dev/null @@ -1,81 +0,0 @@ -/* Return section name. - Copyright (C) 2001, 2002, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdio.h> -#include <libeblP.h> - - -const char * -ebl_section_name (ebl, section, xsection, buf, len, scnnames, shnum) - Ebl *ebl; - int section; - int xsection; - char *buf; - size_t len; - const char *scnnames[]; - size_t shnum; -{ - const char *res = ebl != NULL ? ebl->section_name (section, xsection, - buf, len) : NULL; - - if (res == NULL) - { - if (section == SHN_UNDEF) - res = "UNDEF"; - else if (section == SHN_ABS) - res = "ABS"; - else if (section == SHN_COMMON) - res = "COMMON"; - else if (section == SHN_BEFORE) - res = "BEFORE"; - else if (section == SHN_AFTER) - res = "AFTER"; - else if ((section < SHN_LORESERVE || section == SHN_XINDEX) - && (size_t) section < shnum) - { - int idx = section != SHN_XINDEX ? section : xsection; - - if (scnnames != NULL) - res = scnnames[idx]; - else - { - snprintf (buf, len, "%d", idx); - res = buf; - } - } - else - { - /* Handle OS-specific section names. */ - if (section == SHN_XINDEX) - snprintf (buf, len, "%s: %d", "XINDEX", xsection); - else if (section >= SHN_LOOS && section <= SHN_HIOS) - snprintf (buf, len, "LOOS+%x", section - SHN_LOOS); - /* Handle processor-specific section names. */ - else if (section >= SHN_LOPROC && section <= SHN_HIPROC) - snprintf (buf, len, "LOPROC+%x", section - SHN_LOPROC); - else if (section >= SHN_LORESERVE && section <= SHN_HIRESERVE) - snprintf (buf, len, "LORESERVE+%x", section - SHN_LORESERVE); - else - snprintf (buf, len, "%s: %d", gettext ("<unknown>"), section); - - res = buf; - } - } - - return res; -} diff --git a/libebl/eblsectiontypename.c b/libebl/eblsectiontypename.c deleted file mode 100644 index e6857acd..00000000 --- a/libebl/eblsectiontypename.c +++ /dev/null @@ -1,103 +0,0 @@ -/* Return section type name. - Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdio.h> -#include <libeblP.h> - - -const char * -ebl_section_type_name (ebl, section, buf, len) - Ebl *ebl; - int section; - char *buf; - size_t len; -{ - const char *res = ebl->section_type_name (section, buf, len); - - if (res == NULL) - { - static const char *knowntypes[] = - { -#define KNOWNSTYPE(name) [SHT_##name] = #name - KNOWNSTYPE (NULL), - KNOWNSTYPE (PROGBITS), - KNOWNSTYPE (SYMTAB), - KNOWNSTYPE (STRTAB), - KNOWNSTYPE (RELA), - KNOWNSTYPE (HASH), - KNOWNSTYPE (DYNAMIC), - KNOWNSTYPE (NOTE), - KNOWNSTYPE (NOBITS), - KNOWNSTYPE (REL), - KNOWNSTYPE (SHLIB), - KNOWNSTYPE (DYNSYM), - KNOWNSTYPE (INIT_ARRAY), - KNOWNSTYPE (FINI_ARRAY), - KNOWNSTYPE (PREINIT_ARRAY), - KNOWNSTYPE (GROUP), - KNOWNSTYPE (SYMTAB_SHNDX) - }; - - /* Handle standard names. */ - if ((size_t) section < sizeof (knowntypes) / sizeof (knowntypes[0]) - && knowntypes[section] != NULL) - res = knowntypes[section]; - /* The symbol versioning/Sun extensions. */ - else if (section >= SHT_LOSUNW && section <= SHT_HISUNW) - { - static const char *sunwtypes[] = - { -#undef KNOWNSTYPE -#define KNOWNSTYPE(name) [SHT_##name - SHT_LOSUNW] = #name - KNOWNSTYPE (SUNW_move), - KNOWNSTYPE (SUNW_COMDAT), - KNOWNSTYPE (SUNW_syminfo), - KNOWNSTYPE (GNU_verdef), - KNOWNSTYPE (GNU_verneed), - KNOWNSTYPE (GNU_versym) - }; - res = sunwtypes[section - SHT_LOSUNW]; - } - else - { - /* A few GNU additions. */ - if (section == SHT_CHECKSUM) - res = "CHECKSUM"; - else if (section == SHT_GNU_LIBLIST) - res = "GNU_LIBLIST"; - /* Handle OS-specific section names. */ - else - { - if (section >= SHT_LOOS && section <= SHT_HIOS) - snprintf (buf, len, "SHT_LOOS+%x", section - SHT_LOOS); - /* Handle processor-specific section names. */ - else if (section >= SHT_LOPROC && section <= SHT_HIPROC) - snprintf (buf, len, "SHT_LOPROC+%x", section - SHT_LOPROC); - else if ((unsigned int) section >= SHT_LOUSER - && (unsigned int) section <= SHT_HIUSER) - snprintf (buf, len, "SHT_LOUSER+%x", section - SHT_LOUSER); - else - snprintf (buf, len, "%s: %d", gettext ("<unknown>"), section); - - res = buf; - } - } - } - - return res; -} diff --git a/libebl/eblsegmenttypename.c b/libebl/eblsegmenttypename.c deleted file mode 100644 index c59f037d..00000000 --- a/libebl/eblsegmenttypename.c +++ /dev/null @@ -1,75 +0,0 @@ -/* Return segment type name. - Copyright (C) 2001, 2002, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdio.h> -#include <libeblP.h> - - -const char * -ebl_segment_type_name (ebl, segment, buf, len) - Ebl *ebl; - int segment; - char *buf; - size_t len; -{ - const char *res; - - res = ebl != NULL ? ebl->segment_type_name (segment, buf, len) : NULL; - if (res == NULL) - { - static const char *ptypes[PT_NUM] = - { -#define PTYPE(name) [PT_##name] = #name - PTYPE (NULL), - PTYPE (LOAD), - PTYPE (DYNAMIC), - PTYPE (INTERP), - PTYPE (NOTE), - PTYPE (SHLIB), - PTYPE (PHDR), - PTYPE (TLS) - }; - - /* Is it one of the standard segment types? */ - if (segment >= PT_NULL && segment < PT_NUM) - res = ptypes[segment]; - else if (segment == PT_GNU_EH_FRAME) - res = "GNU_EH_FRAME"; - else if (segment == PT_GNU_STACK) - res = "GNU_STACK"; - else if (segment == PT_GNU_RELRO) - res = "GNU_RELRO"; - else if (segment == PT_SUNWBSS) - res = "SUNWBSS"; - else if (segment == PT_SUNWSTACK) - res = "SUNWSTACK"; - else - { - if (segment >= PT_LOOS && segment <= PT_HIOS) - snprintf (buf, len, "LOOS+%d", segment - PT_LOOS); - else if (segment >= PT_LOPROC && segment <= PT_HIPROC) - snprintf (buf, len, "LOPROC+%d", segment - PT_LOPROC); - else - snprintf (buf, len, "%s: %d", gettext ("<unknown>"), segment); - - res = buf; - } - } - - return res; -} diff --git a/libebl/eblshflagscombine.c b/libebl/eblshflagscombine.c deleted file mode 100644 index 7edcf4e7..00000000 --- a/libebl/eblshflagscombine.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Return combines section header flags value. - Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libeblP.h> - - -GElf_Word -ebl_sh_flags_combine (ebl, flags1, flags2) - Ebl *ebl; - GElf_Word flags1; - GElf_Word flags2; -{ - return ebl->sh_flags_combine (flags1, flags2); -} diff --git a/libebl/eblstrtab.c b/libebl/eblstrtab.c deleted file mode 100644 index bbf0d6ee..00000000 --- a/libebl/eblstrtab.c +++ /dev/null @@ -1,353 +0,0 @@ -/* ELF string table handling. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <inttypes.h> -#include <libelf.h> -#include <stddef.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <sys/param.h> - -#include "libebl.h" -#include <system.h> - -#ifndef MIN -# define MIN(a, b) ((a) < (b) ? (a) : (b)) -#endif - - -struct Ebl_Strent -{ - const char *string; - size_t len; - struct Ebl_Strent *next; - struct Ebl_Strent *left; - struct Ebl_Strent *right; - size_t offset; - char reverse[0]; -}; - - -struct memoryblock -{ - struct memoryblock *next; - char memory[0]; -}; - - -struct Ebl_Strtab -{ - struct Ebl_Strent *root; - struct memoryblock *memory; - char *backp; - size_t left; - size_t total; - bool nullstr; - - struct Ebl_Strent null; -}; - - -/* Cache for the pagesize. We correct this value a bit so that `malloc' - is not allocating more than a page. */ -static size_t ps; - - -struct Ebl_Strtab * -ebl_strtabinit (bool nullstr) -{ - struct Ebl_Strtab *ret; - - if (ps == 0) - { - ps = sysconf (_SC_PAGESIZE) - 2 * sizeof (void *); - assert (sizeof (struct memoryblock) < ps); - } - - ret = (struct Ebl_Strtab *) calloc (1, sizeof (struct Ebl_Strtab)); - if (ret != NULL) - { - ret->nullstr = nullstr; - - if (nullstr) - { - ret->null.len = 1; - ret->null.string = ""; - } - } - - return ret; -} - - -static int -morememory (struct Ebl_Strtab *st, size_t len) -{ - struct memoryblock *newmem; - - if (len < ps) - len = ps; - newmem = (struct memoryblock *) malloc (len); - if (newmem == NULL) - return 1; - - newmem->next = st->memory; - st->memory = newmem; - st->backp = newmem->memory; - st->left = len - offsetof (struct memoryblock, memory); - - return 0; -} - - -void -ebl_strtabfree (struct Ebl_Strtab *st) -{ - struct memoryblock *mb = st->memory; - - while (mb != NULL) - { - void *old = mb; - mb = mb->next; - free (old); - } - - free (st); -} - - -static struct Ebl_Strent * -newstring (struct Ebl_Strtab *st, const char *str, size_t len) -{ - struct Ebl_Strent *newstr; - size_t align; - int i; - - /* Compute the amount of padding needed to make the structure aligned. */ - align = ((__alignof__ (struct Ebl_Strent) - - (((uintptr_t) st->backp) - & (__alignof__ (struct Ebl_Strent) - 1))) - & (__alignof__ (struct Ebl_Strent) - 1)); - - /* Make sure there is enough room in the memory block. */ - if (st->left < align + sizeof (struct Ebl_Strent) + len) - { - if (morememory (st, sizeof (struct Ebl_Strent) + len)) - return NULL; - - align = 0; - } - - /* Create the reserved string. */ - newstr = (struct Ebl_Strent *) (st->backp + align); - newstr->string = str; - newstr->len = len; - newstr->next = NULL; - newstr->left = NULL; - newstr->right = NULL; - newstr->offset = 0; - for (i = len - 2; i >= 0; --i) - newstr->reverse[i] = str[len - 2 - i]; - newstr->reverse[len - 1] = '\0'; - st->backp += align + sizeof (struct Ebl_Strent) + len; - st->left -= align + sizeof (struct Ebl_Strent) + len; - - return newstr; -} - - -/* XXX This function should definitely be rewritten to use a balancing - tree algorith (AVL, red-black trees). For now a simple, correct - implementation is enough. */ -static struct Ebl_Strent ** -searchstring (struct Ebl_Strent **sep, struct Ebl_Strent *newstr) -{ - int cmpres; - - /* More strings? */ - if (*sep == NULL) - { - *sep = newstr; - return sep; - } - - /* Compare the strings. */ - cmpres = memcmp ((*sep)->reverse, newstr->reverse, - MIN ((*sep)->len, newstr->len) - 1); - if (cmpres == 0) - /* We found a matching string. */ - return sep; - else if (cmpres > 0) - return searchstring (&(*sep)->left, newstr); - else - return searchstring (&(*sep)->right, newstr); -} - - -/* Add new string. The actual string is assumed to be permanent. */ -struct Ebl_Strent * -ebl_strtabadd (struct Ebl_Strtab *st, const char *str, size_t len) -{ - struct Ebl_Strent *newstr; - struct Ebl_Strent **sep; - - /* Compute the string length if the caller doesn't know it. */ - if (len == 0) - len = strlen (str) + 1; - - /* Make sure all "" strings get offset 0 but only if the table was - created with a special null entry in mind. */ - if (len == 1 && st->null.string != NULL) - return &st->null; - - /* Allocate memory for the new string and its associated information. */ - newstr = newstring (st, str, len); - if (newstr == NULL) - return NULL; - - /* Search in the array for the place to insert the string. If there - is no string with matching prefix and no string with matching - leading substring, create a new entry. */ - sep = searchstring (&st->root, newstr); - if (*sep != newstr) - { - /* This is not the same entry. This means we have a prefix match. */ - if ((*sep)->len > newstr->len) - { - struct Ebl_Strent *subs; - - /* Check whether we already know this string. */ - for (subs = (*sep)->next; subs != NULL; subs = subs->next) - if (subs->len == newstr->len) - { - /* We have an exact match with a substring. Free the memory - we allocated. */ - st->left += st->backp - (char *) newstr; - st->backp = (char *) newstr; - - return subs; - } - - /* We have a new substring. This means we don't need the reverse - string of this entry anymore. */ - st->backp -= newstr->len; - st->left += newstr->len; - - newstr->next = (*sep)->next; - (*sep)->next = newstr; - } - else if ((*sep)->len != newstr->len) - { - /* When we get here it means that the string we are about to - add has a common prefix with a string we already have but - it is longer. In this case we have to put it first. */ - st->total += newstr->len - (*sep)->len; - newstr->next = *sep; - newstr->left = (*sep)->left; - newstr->right = (*sep)->right; - *sep = newstr; - } - else - { - /* We have an exact match. Free the memory we allocated. */ - st->left += st->backp - (char *) newstr; - st->backp = (char *) newstr; - - newstr = *sep; - } - } - else - st->total += newstr->len; - - return newstr; -} - - -static void -copystrings (struct Ebl_Strent *nodep, char **freep, size_t *offsetp) -{ - struct Ebl_Strent *subs; - - if (nodep->left != NULL) - copystrings (nodep->left, freep, offsetp); - - /* Process the current node. */ - nodep->offset = *offsetp; - *freep = (char *) mempcpy (*freep, nodep->string, nodep->len); - *offsetp += nodep->len; - - for (subs = nodep->next; subs != NULL; subs = subs->next) - { - assert (subs->len < nodep->len); - subs->offset = nodep->offset + nodep->len - subs->len; - assert (subs->offset != 0 || subs->string[0] == '\0'); - } - - if (nodep->right != NULL) - copystrings (nodep->right, freep, offsetp); -} - - -void -ebl_strtabfinalize (struct Ebl_Strtab *st, Elf_Data *data) -{ - size_t copylen; - char *endp; - size_t nulllen = st->nullstr ? 1 : 0; - - /* Fill in the information. */ - data->d_buf = malloc (st->total + nulllen); - if (data->d_buf == NULL) - abort (); - - /* The first byte must always be zero if we created the table with a - null string. */ - if (st->nullstr) - *((char *) data->d_buf) = '\0'; - - data->d_type = ELF_T_BYTE; - data->d_size = st->total + nulllen; - data->d_off = 0; - data->d_align = 1; - data->d_version = EV_CURRENT; - - /* Now run through the tree and add all the string while also updating - the offset members of the elfstrent records. */ - endp = (char *) data->d_buf + nulllen; - copylen = nulllen; - copystrings (st->root, &endp, ©len); - assert (copylen == st->total + nulllen); -} - - -size_t -ebl_strtaboffset (struct Ebl_Strent *se) -{ - return se->offset; -} - - -const char * -ebl_string (struct Ebl_Strent *se) -{ - assert (se->string != NULL); - - return se->string; -} diff --git a/libebl/eblsymbolbindingname.c b/libebl/eblsymbolbindingname.c deleted file mode 100644 index efcd250e..00000000 --- a/libebl/eblsymbolbindingname.c +++ /dev/null @@ -1,57 +0,0 @@ -/* Return symbol binding name. - Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdio.h> -#include <libeblP.h> - - -const char * -ebl_symbol_binding_name (ebl, binding, buf, len) - Ebl *ebl; - int binding; - char *buf; - size_t len; -{ - const char *res; - - res = ebl != NULL ? ebl->symbol_type_name (binding, buf, len) : NULL; - if (res == NULL) - { - static const char *stb_names[STB_NUM] = - { - "LOCAL", "GLOBAL", "WEAK" - }; - - /* Standard binding? */ - if (binding < STB_NUM) - res = stb_names[binding]; - else - { - if (binding >= STB_LOPROC && binding <= STB_HIPROC) - snprintf (buf, len, "LOPROC+%d", binding - STB_LOPROC); - else if (binding >= STB_LOOS && binding <= STB_HIOS) - snprintf (buf, len, "LOOS+%d", binding - STB_LOOS); - else - snprintf (buf, len, gettext ("<unknown>: %d"), binding); - - res = buf; - } - } - - return res; -} diff --git a/libebl/eblsymboltypename.c b/libebl/eblsymboltypename.c deleted file mode 100644 index d11aec1a..00000000 --- a/libebl/eblsymboltypename.c +++ /dev/null @@ -1,63 +0,0 @@ -/* Return symbol type name. - Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdio.h> -#include <libeblP.h> - - -const char * -ebl_symbol_type_name (ebl, symbol, buf, len) - Ebl *ebl; - int symbol; - char *buf; - size_t len; -{ - const char *res; - - res = ebl != NULL ? ebl->symbol_type_name (symbol, buf, len) : NULL; - if (res == NULL) - { - static const char *stt_names[STT_NUM] = - { - [STT_NOTYPE] = "NOTYPE", - [STT_OBJECT] = "OBJECT", - [STT_FUNC] = "FUNC", - [STT_SECTION] = "SECTION", - [STT_FILE] = "FILE", - [STT_COMMON] = "COMMON", - [STT_TLS] = "TLS" - }; - - /* Standard type? */ - if (symbol < STT_NUM) - res = stt_names[symbol]; - else - { - if (symbol >= STT_LOPROC && symbol <= STT_HIPROC) - snprintf (buf, len, "LOPROC+%d", symbol - STT_LOPROC); - else if (symbol >= STT_LOOS && symbol <= STT_HIOS) - snprintf (buf, len, "LOOS+%d", symbol - STT_LOOS); - else - snprintf (buf, len, gettext ("<unknown>: %d"), symbol); - - res = buf; - } - } - - return res; -} diff --git a/libebl/eblwstrtab.c b/libebl/eblwstrtab.c deleted file mode 100644 index 8320cb58..00000000 --- a/libebl/eblwstrtab.c +++ /dev/null @@ -1,344 +0,0 @@ -/* ELF string table handling. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <inttypes.h> -#include <libelf.h> -#include <stddef.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <wchar.h> -#include <sys/param.h> - -#include "libebl.h" -#include <system.h> - -#ifndef MIN -# define MIN(a, b) ((a) < (b) ? (a) : (b)) -#endif - - -struct Ebl_WStrent -{ - const wchar_t *string; - size_t len; - struct Ebl_WStrent *next; - struct Ebl_WStrent *left; - struct Ebl_WStrent *right; - size_t offset; - wchar_t reverse[0]; -}; - - -struct memoryblock -{ - struct memoryblock *next; - char memory[0]; -}; - - -struct Ebl_WStrtab -{ - struct Ebl_WStrent *root; - struct memoryblock *memory; - char *backp; - size_t left; - size_t total; - bool nullstr; - - struct Ebl_WStrent null; -}; - - -/* Cache for the pagesize. We correct this value a bit so that `malloc' - is not allocating more than a page. */ -static size_t ps; - - -struct Ebl_WStrtab * -ebl_wstrtabinit (bool nullstr) -{ - struct Ebl_WStrtab *ret; - - if (ps == 0) - { - ps = sysconf (_SC_PAGESIZE) - 2 * sizeof (void *); - assert (sizeof (struct memoryblock) < ps); - } - - ret = (struct Ebl_WStrtab *) calloc (1, sizeof (struct Ebl_WStrtab)); - if (ret != NULL) - { - ret->nullstr = nullstr; - if (nullstr) - { - ret->null.len = 1; - ret->null.string = L""; - } - } - return ret; -} - - -static int -morememory (struct Ebl_WStrtab *st, size_t len) -{ - struct memoryblock *newmem; - - if (len < ps) - len = ps; - newmem = (struct memoryblock *) malloc (len); - if (newmem == NULL) - return 1; - - newmem->next = st->memory; - st->memory = newmem; - st->backp = newmem->memory; - st->left = len - offsetof (struct memoryblock, memory); - - return 0; -} - - -void -ebl_wstrtabfree (struct Ebl_WStrtab *st) -{ - struct memoryblock *mb = st->memory; - - while (mb != NULL) - { - void *old = mb; - mb = mb->next; - free (old); - } - - free (st); -} - - -static struct Ebl_WStrent * -newstring (struct Ebl_WStrtab *st, const wchar_t *str, size_t len) -{ - struct Ebl_WStrent *newstr; - size_t align; - int i; - - /* Compute the amount of padding needed to make the structure aligned. */ - align = ((__alignof__ (struct Ebl_WStrent) - - (((uintptr_t) st->backp) - & (__alignof__ (struct Ebl_WStrent) - 1))) - & (__alignof__ (struct Ebl_WStrent) - 1)); - - /* Make sure there is enough room in the memory block. */ - if (st->left < align + sizeof (struct Ebl_WStrent) + len * sizeof (wchar_t)) - { - if (morememory (st, - sizeof (struct Ebl_WStrent) + len * sizeof (wchar_t))) - return NULL; - - align = 0; - } - - /* Create the reserved string. */ - newstr = (struct Ebl_WStrent *) (st->backp + align); - newstr->string = str; - newstr->len = len; - newstr->next = NULL; - newstr->left = NULL; - newstr->right = NULL; - newstr->offset = 0; - for (i = len - 2; i >= 0; --i) - newstr->reverse[i] = str[len - 2 - i]; - newstr->reverse[len - 1] = L'\0'; - st->backp += align + sizeof (struct Ebl_WStrent) + len * sizeof (wchar_t); - st->left -= align + sizeof (struct Ebl_WStrent) + len * sizeof (wchar_t); - - return newstr; -} - - -/* XXX This function should definitely be rewritten to use a balancing - tree algorith (AVL, red-black trees). For now a simple, correct - implementation is enough. */ -static struct Ebl_WStrent ** -searchstring (struct Ebl_WStrent **sep, struct Ebl_WStrent *newstr) -{ - int cmpres; - - /* More strings? */ - if (*sep == NULL) - { - *sep = newstr; - return sep; - } - - /* Compare the strings. */ - cmpres = wmemcmp ((*sep)->reverse, newstr->reverse, - MIN ((*sep)->len, newstr->len) - 1); - if (cmpres == 0) - /* We found a matching string. */ - return sep; - else if (cmpres > 0) - return searchstring (&(*sep)->left, newstr); - else - return searchstring (&(*sep)->right, newstr); -} - - -/* Add new string. The actual string is assumed to be permanent. */ -struct Ebl_WStrent * -ebl_wstrtabadd (struct Ebl_WStrtab *st, const wchar_t *str, size_t len) -{ - struct Ebl_WStrent *newstr; - struct Ebl_WStrent **sep; - - /* Compute the string length if the caller doesn't know it. */ - if (len == 0) - len = wcslen (str) + 1; - - /* Make sure all "" strings get offset 0 but only if the table was - created with a special null entry in mind. */ - if (len == 1 && st->null.string != NULL) - return &st->null; - - /* Allocate memory for the new string and its associated information. */ - newstr = newstring (st, str, len); - if (newstr == NULL) - return NULL; - - /* Search in the array for the place to insert the string. If there - is no string with matching prefix and no string with matching - leading substring, create a new entry. */ - sep = searchstring (&st->root, newstr); - if (*sep != newstr) - { - /* This is not the same entry. This means we have a prefix match. */ - if ((*sep)->len > newstr->len) - { - struct Ebl_WStrent *subs; - - /* Check whether we already know this string. */ - for (subs = (*sep)->next; subs != NULL; subs = subs->next) - if (subs->len == newstr->len) - { - /* We have an exact match with a substring. Free the memory - we allocated. */ - st->left += st->backp - (char *) newstr; - st->backp = (char *) newstr; - - return subs; - } - - /* We have a new substring. This means we don't need the reverse - string of this entry anymore. */ - st->backp -= newstr->len; - st->left += newstr->len; - - newstr->next = (*sep)->next; - (*sep)->next = newstr; - } - else if ((*sep)->len != newstr->len) - { - /* When we get here it means that the string we are about to - add has a common prefix with a string we already have but - it is longer. In this case we have to put it first. */ - st->total += newstr->len - (*sep)->len; - newstr->next = *sep; - newstr->left = (*sep)->left; - newstr->right = (*sep)->right; - *sep = newstr; - } - else - { - /* We have an exact match. Free the memory we allocated. */ - st->left += st->backp - (char *) newstr; - st->backp = (char *) newstr; - - newstr = *sep; - } - } - else - st->total += newstr->len; - - return newstr; -} - - -static void -copystrings (struct Ebl_WStrent *nodep, wchar_t **freep, size_t *offsetp) -{ - struct Ebl_WStrent *subs; - - if (nodep->left != NULL) - copystrings (nodep->left, freep, offsetp); - - /* Process the current node. */ - nodep->offset = *offsetp; - *freep = wmempcpy (*freep, nodep->string, nodep->len); - *offsetp += nodep->len * sizeof (wchar_t); - - for (subs = nodep->next; subs != NULL; subs = subs->next) - { - assert (subs->len < nodep->len); - subs->offset = nodep->offset + nodep->len - subs->len; - assert (subs->offset != 0 || subs->string[0] == '\0'); - } - - if (nodep->right != NULL) - copystrings (nodep->right, freep, offsetp); -} - - -void -ebl_wstrtabfinalize (struct Ebl_WStrtab *st, Elf_Data *data) -{ - size_t copylen; - wchar_t *endp; - size_t nulllen = st->nullstr ? 1 : 0; - - /* Fill in the information. */ - data->d_buf = malloc ((st->total + nulllen) * sizeof (wchar_t)); - if (data->d_buf == NULL) - abort (); - - /* The first byte must always be zero if we created the table with a - null string. */ - if (st->nullstr) - *((wchar_t *) data->d_buf) = L'\0'; - - data->d_type = ELF_T_BYTE; - data->d_size = st->total + nulllen; - data->d_off = 0; - data->d_align = 1; - data->d_version = EV_CURRENT; - - /* Now run through the tree and add all the string while also updating - the offset members of the elfstrent records. */ - endp = (wchar_t *) data->d_buf + nulllen; - copylen = sizeof (wchar_t) * nulllen; - copystrings (st->root, &endp, ©len); - assert (copylen == (st->total + nulllen) * sizeof (wchar_t)); -} - - -size_t -ebl_wstrtaboffset (struct Ebl_WStrent *se) -{ - return se->offset; -} diff --git a/libebl/i386_corenote.c b/libebl/i386_corenote.c deleted file mode 100644 index 482f81d7..00000000 --- a/libebl/i386_corenote.c +++ /dev/null @@ -1,149 +0,0 @@ -/* i386 specific core note handling. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <stddef.h> -#include <stdio.h> -#include <sys/time.h> - -#include <libebl_i386.h> - - -/* We cannot include <sys/procfs.h> since it is available only on x86 - systems. */ -struct elf_prstatus - { - struct - { - int si_signo; /* Signal number. */ - int si_code; /* Extra code. */ - int si_errno; /* Errno. */ - } pr_info; /* Info associated with signal. */ - short int pr_cursig; /* Current signal. */ - unsigned long int pr_sigpend; /* Set of pending signals. */ - unsigned long int pr_sighold; /* Set of held signals. */ - __pid_t pr_pid; - __pid_t pr_ppid; - __pid_t pr_pgrp; - __pid_t pr_sid; - struct timeval pr_utime; /* User time. */ - struct timeval pr_stime; /* System time. */ - struct timeval pr_cutime; /* Cumulative user time. */ - struct timeval pr_cstime; /* Cumulative system time. */ - unsigned long int pr_reg[17]; /* GP registers. */ - int pr_fpvalid; /* True if math copro being used. */ - }; - - -struct elf_prpsinfo - { - char pr_state; /* Numeric process state. */ - char pr_sname; /* Char for pr_state. */ - char pr_zomb; /* Zombie. */ - char pr_nice; /* Nice val. */ - unsigned long int pr_flag; /* Flags. */ - unsigned short int pr_uid; - unsigned short int pr_gid; - int pr_pid; - int pr_ppid; - int pr_pgrp; - int pr_sid; - /* Lots missing */ - char pr_fname[16]; /* Filename of executable. */ - char pr_psargs[80]; /* Initial part of arg list. */ - }; - - -bool -i386_core_note (name, type, descsz, desc) - const char *name; - uint32_t type; - uint32_t descsz; - const char *desc; -{ - bool result = false; - - switch (type) - { - case NT_PRSTATUS: - if (descsz < sizeof (struct elf_prstatus)) - /* Not enough data. */ - break; - - struct elf_prstatus *stat = (struct elf_prstatus *) desc; - - printf (" SIGINFO: signo: %d, code = %d, errno = %d\n" - " signal: %hd, pending: %#08lx, holding: %#08lx\n" - " pid: %d, ppid = %d, pgrp = %d, sid = %d\n" - " utime: %6ld.%06lds, stime: %6ld.%06lds\n" - " cutime: %6ld.%06lds, cstime: %6ld.%06lds\n" - " eax: %08lx ebx: %08lx ecx: %08lx edx: %08lx\n" - " esi: %08lx edi: %08lx ebp: %08lx esp: %08lx\n" - " eip: %08lx eflags: %08lx, original eax: %08lx\n" - " cs: %04lx ds: %04lx es: %04lx fs: %04lx gs: %04lx" - " ss: %04lx\n\n" -, - stat->pr_info. si_signo, - stat->pr_info. si_code, - stat->pr_info. si_errno, - stat->pr_cursig, - stat->pr_sigpend, stat->pr_sighold, - stat->pr_pid, stat->pr_ppid, stat->pr_pgrp, stat->pr_sid, - stat->pr_utime.tv_sec, (long int) stat->pr_utime.tv_usec, - stat->pr_stime.tv_sec, (long int) stat->pr_stime.tv_usec, - stat->pr_cutime.tv_sec, (long int) stat->pr_cutime.tv_usec, - stat->pr_cstime.tv_sec, (long int) stat->pr_cstime.tv_usec, - stat->pr_reg[6], stat->pr_reg[0], stat->pr_reg[1], - stat->pr_reg[2], stat->pr_reg[3], stat->pr_reg[4], - stat->pr_reg[5], stat->pr_reg[15], stat->pr_reg[12], - stat->pr_reg[14], stat->pr_reg[11], stat->pr_reg[13] & 0xffff, - stat->pr_reg[7] & 0xffff, stat->pr_reg[8] & 0xffff, - stat->pr_reg[9] & 0xffff, stat->pr_reg[10] & 0xffff, - stat->pr_reg[16]); - - /* We handled this entry. */ - result = true; - break; - - case NT_PRPSINFO: - if (descsz < sizeof (struct elf_prpsinfo)) - /* Not enough data. */ - break; - - struct elf_prpsinfo *info = (struct elf_prpsinfo *) desc; - - printf (" state: %c (%hhd), zombie: %hhd, nice: %hhd\n" - " flags: %08lx, uid: %hd, gid: %hd\n" - " pid: %d, ppid: %d, pgrp: %d, sid: %d\n" - " fname: %.16s\n" - " args: %.80s\n\n", - info->pr_sname, info->pr_state, info->pr_zomb, info->pr_nice, - info->pr_flag, info->pr_uid, info->pr_gid, - info->pr_pid, info->pr_ppid, info->pr_pgrp, info->pr_sid, - info->pr_fname, info->pr_psargs); - - /* We handled this entry. */ - result = true; - break; - - default: - break; - } - - return result; -} diff --git a/libebl/i386_destr.c b/libebl/i386_destr.c deleted file mode 100644 index 23609496..00000000 --- a/libebl/i386_destr.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Destructor for i386 specific backend library. - Copyright (C) 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libebl_i386.h> - - -void -i386_destr (bh) - Ebl *bh; -{ - /* Nothing to do so far. */ -} diff --git a/libebl/i386_init.c b/libebl/i386_init.c deleted file mode 100644 index b53c57da..00000000 --- a/libebl/i386_init.c +++ /dev/null @@ -1,43 +0,0 @@ -/* Initialization of i386 specific backend library. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libebl_i386.h> - - -int -i386_init (elf, machine, eh, ehlen) - Elf *elf; - GElf_Half machine; - Ebl *eh; - size_t ehlen; -{ - /* Check whether the Elf_BH object has a sufficent size. */ - if (ehlen < sizeof (Ebl)) - return 1; - - /* We handle it. */ - eh->name = "Intel 80386"; - eh->reloc_type_name = i386_reloc_type_name; - eh->reloc_type_check = i386_reloc_type_check; - eh->reloc_valid_use = i386_reloc_valid_use; - eh->gotpc_reloc_check = i386_gotpc_reloc_check; - eh->core_note = i386_core_note; - eh->destr = i386_destr; - - return 0; -} diff --git a/libebl/i386_symbol.c b/libebl/i386_symbol.c deleted file mode 100644 index fc70e506..00000000 --- a/libebl/i386_symbol.c +++ /dev/null @@ -1,127 +0,0 @@ -/* i386 specific symbolic name handling. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <elf.h> -#include <stddef.h> - -#include <libebl_i386.h> - - -/* Return of the backend. */ -const char * -i386_backend_name (void) -{ - return "i386"; -} - - -/* Relocation mapping table. */ -static struct -{ - const char *name; - enum { both = 0, rel = 1, exec = 2 } appear; -} reloc_map_table[] = - { - [R_386_NONE] = { "R_386_NONE", both }, - [R_386_32] = { "R_386_32", both }, - [R_386_PC32] = { "R_386_PC32", rel }, - [R_386_GOT32] = { "R_386_GOT32", rel }, - [R_386_PLT32] = { "R_386_PLT32", rel }, - [R_386_COPY] = { "R_386_COPY", exec }, - [R_386_GLOB_DAT] = { "R_386_GLOB_DAT", exec }, - [R_386_JMP_SLOT] = { "R_386_JMP_SLOT", exec }, - [R_386_RELATIVE] = { "R_386_RELATIVE", exec }, - [R_386_GOTOFF] = { "R_386_GOTOFF", rel }, - [R_386_GOTPC] = { "R_386_GOTPC", rel }, - [R_386_32PLT] = { "R_386_32PLT", rel }, - [R_386_TLS_TPOFF] = { "R_386_TLS_TPOFF", rel }, - [R_386_TLS_IE] = { "R_386_TLS_IE", rel }, - [R_386_TLS_GOTIE] = { "R_386_TLS_GOTIE", rel }, - [R_386_TLS_LE] = { "R_386_TLS_LE", rel }, - [R_386_TLS_GD] = { "R_386_TLS_GD", rel }, - [R_386_TLS_LDM] = { "R_386_TLS_LDM", rel }, - [R_386_16] = { "R_386_16", rel }, - [R_386_PC16] = { "R_386_PC16", rel }, - [R_386_8] = { "R_386_8", rel }, - [R_386_PC8] = { "R_386_PC8", rel }, - [R_386_TLS_GD_32] = { "R_386_TLS_GD_32", rel }, - [R_386_TLS_GD_PUSH] = { "R_386_TLS_GD_PUSH", rel }, - [R_386_TLS_GD_CALL] = { "R_386_TLS_GD_CALL", rel }, - [R_386_TLS_GD_POP] = { "R_386_TLS_GD_POP", rel }, - [R_386_TLS_LDM_32] = { "R_386_TLS_LDM_32", rel }, - [R_386_TLS_LDM_PUSH] = { "R_386_TLS_LDM_PUSH", rel }, - [R_386_TLS_LDM_CALL] = { "R_386_TLS_LDM_CALL", rel }, - [R_386_TLS_LDM_POP] = { "R_386_TLS_LDM_POP", rel }, - [R_386_TLS_LDO_32] = { "R_386_TLS_LDO_32", rel }, - [R_386_TLS_IE_32] = { "R_386_TLS_IE_32", rel }, - [R_386_TLS_LE_32] = { "R_386_TLS_LE_32", rel }, - [R_386_TLS_DTPMOD32] = { "R_386_TLS_DTPMOD32", rel }, - [R_386_TLS_DTPOFF32] = { "R_386_TLS_DTPOFF32", rel }, - [R_386_TLS_TPOFF32] = { "R_386_TLS_TPOFF32", rel } - }; - - -/* Determine relocation type string for x86. */ -const char * -i386_reloc_type_name (int type, char *buf, size_t len) -{ - if (type < 0 || type >= R_386_NUM) - return NULL; - - return reloc_map_table[type].name; -} - - -/* Check for correct relocation type. */ -bool -i386_reloc_type_check (int type) -{ - return (type >= R_386_NONE && type < R_386_NUM - && reloc_map_table[type].name != NULL) ? true : false; -} - - -/* Check for correct relocation type use. */ -bool -i386_reloc_valid_use (Elf *elf, int type) -{ - if (type < R_386_NONE || type >= R_386_NUM - || reloc_map_table[type].name == NULL) - return false; - - Elf32_Ehdr *ehdr = elf32_getehdr (elf); - assert (ehdr != NULL); - - if (reloc_map_table[type].appear == rel) - return ehdr->e_type == ET_REL; - - if (reloc_map_table[type].appear == exec) - return ehdr->e_type != ET_REL; - - assert (reloc_map_table[type].appear == both); - return true; -} - - -/* Return true if the symbol type is that referencing the GOT. */ -bool -i386_gotpc_reloc_check (Elf *elf, int type) -{ - return type == R_386_GOTPC; -} diff --git a/libebl/ia64_destr.c b/libebl/ia64_destr.c deleted file mode 100644 index a48302c8..00000000 --- a/libebl/ia64_destr.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Destructor for IA-64 specific backend library. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libebl_ia64.h> - - -void -ia64_destr (bh) - Ebl *bh; -{ - /* Nothing to do so far. */ -} diff --git a/libebl/ia64_init.c b/libebl/ia64_init.c deleted file mode 100644 index 30925acb..00000000 --- a/libebl/ia64_init.c +++ /dev/null @@ -1,42 +0,0 @@ -/* Initialization of IA-64 specific backend library. - Copyright (C) 2002, 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libebl_ia64.h> - - -int -ia64_init (elf, machine, eh, ehlen) - Elf *elf; - GElf_Half machine; - Ebl *eh; - size_t ehlen; -{ - /* Check whether the Elf_BH object has a sufficent size. */ - if (ehlen < sizeof (Ebl)) - return 1; - - /* We handle it. */ - eh->name = "Intel IA-64"; - eh->reloc_type_name = ia64_reloc_type_name; - eh->reloc_type_check = ia64_reloc_type_check; - eh->segment_type_name = ia64_segment_type_name; - eh->dynamic_tag_name = ia64_dynamic_tag_name; - eh->destr = ia64_destr; - - return 0; -} diff --git a/libebl/ia64_symbol.c b/libebl/ia64_symbol.c deleted file mode 100644 index fe4c7b71..00000000 --- a/libebl/ia64_symbol.c +++ /dev/null @@ -1,177 +0,0 @@ -/* IA-64 specific symbolic name handling. - Copyright (C) 2002, 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <stddef.h> - -#include <libebl_ia64.h> - - -/* Return of the backend. */ -const char * -ia64_backend_name (void) -{ - return "ia64"; -} - - -/* Relocation mapping table. */ -static const char *reloc_map_table[] = - { - [R_IA64_NONE] = "R_IA64_NONE", - [R_IA64_IMM14] = "R_IA64_IMM14", - [R_IA64_IMM22] = "R_IA64_IMM22", - [R_IA64_IMM64] = "R_IA64_IMM64", - [R_IA64_DIR32MSB] = "R_IA64_DIR32MSB", - [R_IA64_DIR32LSB] = "R_IA64_DIR32LSB", - [R_IA64_DIR64MSB] = "R_IA64_DIR64MSB", - [R_IA64_DIR64LSB] = "R_IA64_DIR64LSB", - [R_IA64_GPREL22] = "R_IA64_GPREL22", - [R_IA64_GPREL64I] = "R_IA64_GPREL64I", - [R_IA64_GPREL32MSB] = "R_IA64_GPREL32MSB", - [R_IA64_GPREL32LSB] = "R_IA64_GPREL32LSB", - [R_IA64_GPREL64MSB] = "R_IA64_GPREL64MSB", - [R_IA64_GPREL64LSB] = "R_IA64_GPREL64LSB", - [R_IA64_LTOFF22] = "R_IA64_LTOFF22", - [R_IA64_LTOFF64I] = "R_IA64_LTOFF64I", - [R_IA64_PLTOFF22] = "R_IA64_PLTOFF22", - [R_IA64_PLTOFF64I] = "R_IA64_PLTOFF64I", - [R_IA64_PLTOFF64MSB] = "R_IA64_PLTOFF64MSB", - [R_IA64_PLTOFF64LSB] = "R_IA64_PLTOFF64LSB", - [R_IA64_FPTR64I] = "R_IA64_FPTR64I", - [R_IA64_FPTR32MSB] = "R_IA64_FPTR32MSB", - [R_IA64_FPTR32LSB] = "R_IA64_FPTR32LSB", - [R_IA64_FPTR64MSB] = "R_IA64_FPTR64MSB", - [R_IA64_FPTR64LSB] = "R_IA64_FPTR64LSB", - [R_IA64_PCREL60B] = "R_IA64_PCREL60B", - [R_IA64_PCREL21B] = "R_IA64_PCREL21B", - [R_IA64_PCREL21M] = "R_IA64_PCREL21M", - [R_IA64_PCREL21F] = "R_IA64_PCREL21F", - [R_IA64_PCREL32MSB] = "R_IA64_PCREL32MSB", - [R_IA64_PCREL32LSB] = "R_IA64_PCREL32LSB", - [R_IA64_PCREL64MSB] = "R_IA64_PCREL64MSB", - [R_IA64_PCREL64LSB] = "R_IA64_PCREL64LSB", - [R_IA64_LTOFF_FPTR22] = "R_IA64_LTOFF_FPTR22", - [R_IA64_LTOFF_FPTR64I] = "R_IA64_LTOFF_FPTR64I", - [R_IA64_LTOFF_FPTR32MSB] = "R_IA64_LTOFF_FPTR32MSB", - [R_IA64_LTOFF_FPTR32LSB] = "R_IA64_LTOFF_FPTR32LSB", - [R_IA64_LTOFF_FPTR64MSB] = "R_IA64_LTOFF_FPTR64MSB", - [R_IA64_LTOFF_FPTR64LSB] = "R_IA64_LTOFF_FPTR64LSB", - [R_IA64_SEGREL32MSB] = "R_IA64_SEGREL32MSB", - [R_IA64_SEGREL32LSB] = "R_IA64_SEGREL32LSB", - [R_IA64_SEGREL64MSB] = "R_IA64_SEGREL64MSB", - [R_IA64_SEGREL64LSB] = "R_IA64_SEGREL64LSB", - [R_IA64_SECREL32MSB] = "R_IA64_SECREL32MSB", - [R_IA64_SECREL32LSB] = "R_IA64_SECREL32LSB", - [R_IA64_SECREL64MSB] = "R_IA64_SECREL64MSB", - [R_IA64_SECREL64LSB] = "R_IA64_SECREL64LSB", - [R_IA64_REL32MSB] = "R_IA64_REL32MSB", - [R_IA64_REL32LSB] = "R_IA64_REL32LSB", - [R_IA64_REL64MSB] = "R_IA64_REL64MSB", - [R_IA64_REL64LSB] = "R_IA64_REL64LSB", - [R_IA64_LTV32MSB] = "R_IA64_LTV32MSB", - [R_IA64_LTV32LSB] = "R_IA64_LTV32LSB", - [R_IA64_LTV64MSB] = "R_IA64_LTV64MSB", - [R_IA64_LTV64LSB] = "R_IA64_LTV64LSB", - [R_IA64_PCREL21BI] = "R_IA64_PCREL21BI", - [R_IA64_PCREL22] = "R_IA64_PCREL22", - [R_IA64_PCREL64I] = "R_IA64_PCREL64I", - [R_IA64_IPLTMSB] = "R_IA64_IPLTMSB", - [R_IA64_IPLTLSB] = "R_IA64_IPLTLSB", - [R_IA64_COPY] = "R_IA64_COPY", - [R_IA64_SUB] = "R_IA64_SUB", - [R_IA64_LTOFF22X] = "R_IA64_LTOFF22X", - [R_IA64_LDXMOV] = "R_IA64_LDXMOV", - [R_IA64_TPREL14] = "R_IA64_TPREL14", - [R_IA64_TPREL22] = "R_IA64_TPREL22", - [R_IA64_TPREL64I] = "R_IA64_TPREL64I", - [R_IA64_TPREL64MSB] = "R_IA64_TPREL64MSB", - [R_IA64_TPREL64LSB] = "R_IA64_TPREL64LSB", - [R_IA64_LTOFF_TPREL22] = "R_IA64_LTOFF_TPREL22", - [R_IA64_DTPMOD64MSB] = "R_IA64_DTPMOD64MSB", - [R_IA64_DTPMOD64LSB] = "R_IA64_DTPMOD64LSB", - [R_IA64_LTOFF_DTPMOD22] = "R_IA64_LTOFF_DTPMOD22", - [R_IA64_DTPREL14] = "R_IA64_DTPREL14", - [R_IA64_DTPREL22] = "R_IA64_DTPREL22", - [R_IA64_DTPREL64I] = "R_IA64_DTPREL64I", - [R_IA64_DTPREL32MSB] = "R_IA64_DTPREL32MSB", - [R_IA64_DTPREL32LSB] = "R_IA64_DTPREL32LSB", - [R_IA64_DTPREL64MSB] = "R_IA64_DTPREL64MSB", - [R_IA64_DTPREL64LSB] = "R_IA64_DTPREL64LSB", - [R_IA64_LTOFF_DTPREL22] = "R_IA64_LTOFF_DTPREL22" - }; - - -/* Determine relocation type string for IA-64. */ -const char * -ia64_reloc_type_name (int type, char *buf, size_t len) -{ - if (type < 0 - || ((size_t) type - >= sizeof (reloc_map_table) / sizeof (reloc_map_table[0]))) - return NULL; - - return reloc_map_table[type]; -} - - -/* Check for correct relocation type. */ -bool -ia64_reloc_type_check (int type) -{ - return (type >= R_IA64_NONE - && ((size_t) type - < sizeof (reloc_map_table) / sizeof (reloc_map_table[0])) - && reloc_map_table[type] != NULL) ? true : false; -} - - -const char * -ia64_segment_type_name (int segment, char *buf, size_t len) -{ - switch (segment) - { - case PT_IA_64_ARCHEXT: - return "IA_64_ARCHEXT"; - case PT_IA_64_UNWIND: - return "IA_64_UNWIND"; - case PT_IA_64_HP_OPT_ANOT: - return "IA_64_HP_OPT_ANOT"; - case PT_IA_64_HP_HSL_ANOT: - return "IA_64_HP_HSL_ANOT"; - case PT_IA_64_HP_STACK: - return "IA_64_HP_STACK"; - default: - break; - } - return NULL; -} - - -const char * -ia64_dynamic_tag_name (int64_t tag, char *buf, size_t len) -{ - switch (tag) - { - case DT_IA_64_PLT_RESERVE: - return "IA_64_PLT_RESERVE"; - default: - break; - } - return NULL; -} diff --git a/libebl/libebl.h b/libebl/libebl.h deleted file mode 100644 index 392350ac..00000000 --- a/libebl/libebl.h +++ /dev/null @@ -1,274 +0,0 @@ -/* Interface for libebl. - Copyright (C) 2000, 2001, 2002, 2004 Red Hat, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef _LIBEBL_H -#define _LIBEBL_H 1 - -#include <gelf.h> -#include <stdbool.h> -#include <stddef.h> -#include <stdint.h> - -#include <elf-knowledge.h> - - -/* Backend handle. */ -typedef struct ebl -{ - /* Machine name. */ - const char *name; - - /* Emulation name. */ - const char *emulation; - - /* The libelf handle (if known). */ - Elf *elf; - - /* Return symbol representaton of object file type. */ - const char *(*object_type_name) (int, char *, size_t); - - /* Return symbolic representation of relocation type. */ - const char *(*reloc_type_name) (int, char *, size_t); - - /* Check relocation type. */ - bool (*reloc_type_check) (int); - - /* Check relocation type use. */ - bool (*reloc_valid_use) (Elf *, int); - - /* Return true if the symbol type is that referencing the GOT. */ - bool (*gotpc_reloc_check) (Elf *, int); - - /* Return symbolic representation of segment type. */ - const char *(*segment_type_name) (int, char *, size_t); - - /* Return symbolic representation of section type. */ - const char *(*section_type_name) (int, char *, size_t); - - /* Return section name. */ - const char *(*section_name) (int, int, char *, size_t); - - /* Return next machine flag name. */ - const char *(*machine_flag_name) (GElf_Word *); - - /* Check whether machine flags are valid. */ - bool (*machine_flag_check) (GElf_Word); - - /* Return symbolic representation of symbol type. */ - const char *(*symbol_type_name) (int, char *, size_t); - - /* Return symbolic representation of symbol binding. */ - const char *(*symbol_binding_name) (int, char *, size_t); - - /* Return symbolic representation of dynamic tag. */ - const char *(*dynamic_tag_name) (int64_t, char *, size_t); - - /* Check dynamic tag. */ - bool (*dynamic_tag_check) (int64_t); - - /* Combine section header flags values. */ - GElf_Word (*sh_flags_combine) (GElf_Word, GElf_Word); - - /* Return symbolic representation of OS ABI. */ - const char *(*osabi_name) (int, char *, size_t); - - /* Name of a note entry type for core files. */ - const char *(*core_note_type_name) (uint32_t, char *, size_t); - - /* Name of a note entry type for object files. */ - const char *(*object_note_type_name) (uint32_t, char *, size_t); - - /* Handle core note. */ - bool (*core_note) (const char *, uint32_t, uint32_t, const char *); - - /* Handle object file note. */ - bool (*object_note) (const char *, uint32_t, uint32_t, const char *); - - /* Check section name for being that of a debug informatino section. */ - bool (*debugscn_p) (const char *); - - /* Destructor for ELF backend handle. */ - void (*destr) (struct ebl *); - - /* Internal data. */ - void *dlhandle; -} Ebl; - - -/* Get backend handle for object associated with ELF handle. */ -extern Ebl *ebl_openbackend (Elf *elf); -/* Similar but without underlying ELF file. */ -extern Ebl *ebl_openbackend_machine (GElf_Half machine); -/* Similar but with emulation name given. */ -extern Ebl *ebl_openbackend_emulation (const char *emulation); - -/* Free resources allocated for backend handle. */ -extern void ebl_closebackend (Ebl *bh); - - -/* Function to call the callback functions including default ELF - handling. */ - -/* Return backend name. */ -extern const char *ebl_backend_name (Ebl *ebl); - -/* Return relocation type name. */ -extern const char *ebl_object_type_name (Ebl *ebl, int object, - char *buf, size_t len); - -/* Return relocation type name. */ -extern const char *ebl_reloc_type_name (Ebl *ebl, int reloc, - char *buf, size_t len); - -/* Check relocation type. */ -extern bool ebl_reloc_type_check (Ebl *ebl, int reloc); - -/* Check relocation type use. */ -extern bool ebl_reloc_valid_use (Ebl *ebl, int reloc); - -/* Return true if the symbol type is that referencing the GOT. E.g., - R_386_GOTPC. */ -extern bool ebl_gotpc_reloc_check (Ebl *ebl, int reloc); - -/* Return segment type name. */ -extern const char *ebl_segment_type_name (Ebl *ebl, int segment, - char *buf, size_t len); - -/* Return section type name. */ -extern const char *ebl_section_type_name (Ebl *ebl, int section, - char *buf, size_t len); - -/* Return section name. */ -extern const char *ebl_section_name (Ebl *ebl, int section, int xsection, - char *buf, size_t len, - const char *scnnames[], size_t shnum); - -/* Return machine flag names. */ -extern const char *ebl_machine_flag_name (Ebl *ebl, GElf_Word flags, - char *buf, size_t len); - -/* Check whether machine flag is valid. */ -extern bool ebl_machine_flag_check (Ebl *ebl, GElf_Word flags); - -/* Return symbol type name. */ -extern const char *ebl_symbol_type_name (Ebl *ebl, int symbol, - char *buf, size_t len); - -/* Return symbol binding name. */ -extern const char *ebl_symbol_binding_name (Ebl *ebl, int binding, - char *buf, size_t len); - -/* Return dynamic tag name. */ -extern const char *ebl_dynamic_tag_name (Ebl *ebl, int64_t tag, - char *buf, size_t len); - -/* Check dynamic tag. */ -extern bool ebl_dynamic_tag_check (Ebl *ebl, int64_t tag); - -/* Return combined section header flags value. */ -extern GElf_Word ebl_sh_flags_combine (Ebl *ebl, GElf_Word flags1, - GElf_Word flags2); - -/* Return symbolic representation of OS ABI. */ -extern const char *ebl_osabi_name (Ebl *ebl, int osabi, char *buf, size_t len); - - -/* Return name of the note section type for a core file. */ -extern const char *ebl_core_note_type_name (Ebl *ebl, uint32_t type, char *buf, - size_t len); - -/* Return name of the note section type for an object file. */ -extern const char *ebl_object_note_type_name (Ebl *ebl, uint32_t type, - char *buf, size_t len); - -/* Print information about core note if available. */ -extern void ebl_core_note (Ebl *ebl, const char *name, uint32_t type, - uint32_t descsz, const char *desc); - -/* Print information about object note if available. */ -extern void ebl_object_note (Ebl *ebl, const char *name, uint32_t type, - uint32_t descsz, const char *desc); - -/* Check section name for being that of a debug informatino section. */ -extern bool ebl_debugscn_p (Ebl *ebl, const char *name); - - -/* ELF string table handling. */ -struct Ebl_Strtab; -struct Ebl_Strent; - -/* Create new ELF string table object in memory. */ -extern struct Ebl_Strtab *ebl_strtabinit (bool nullstr); - -/* Free resources allocated for ELF string table ST. */ -extern void ebl_strtabfree (struct Ebl_Strtab *st); - -/* Add string STR (length LEN is != 0) to ELF string table ST. */ -extern struct Ebl_Strent *ebl_strtabadd (struct Ebl_Strtab *st, - const char *str, size_t len); - -/* Finalize string table ST and store size and memory location information - in DATA. */ -extern void ebl_strtabfinalize (struct Ebl_Strtab *st, Elf_Data *data); - -/* Get offset in string table for string associated with SE. */ -extern size_t ebl_strtaboffset (struct Ebl_Strent *se); - -/* Return the string associated with SE. */ -extern const char *ebl_string (struct Ebl_Strent *se); - - -/* ELF wide char string table handling. */ -struct Ebl_WStrtab; -struct Ebl_WStrent; - -/* Create new ELF wide char string table object in memory. */ -extern struct Ebl_WStrtab *ebl_wstrtabinit (bool nullstr); - -/* Free resources allocated for ELF wide char string table ST. */ -extern void ebl_wstrtabfree (struct Ebl_WStrtab *st); - -/* Add string STR (length LEN is != 0) to ELF string table ST. */ -extern struct Ebl_WStrent *ebl_wstrtabadd (struct Ebl_WStrtab *st, - const wchar_t *str, size_t len); - -/* Finalize string table ST and store size and memory location information - in DATA. */ -extern void ebl_wstrtabfinalize (struct Ebl_WStrtab *st, Elf_Data *data); - -/* Get offset in wide char string table for string associated with SE. */ -extern size_t ebl_wstrtaboffset (struct Ebl_WStrent *se); - - -/* Generic string table handling. */ -struct Ebl_GStrtab; -struct Ebl_GStrent; - -/* Create new string table object in memory. */ -extern struct Ebl_GStrtab *ebl_gstrtabinit (unsigned int width, bool nullstr); - -/* Free resources allocated for string table ST. */ -extern void ebl_gstrtabfree (struct Ebl_GStrtab *st); - -/* Add string STR (length LEN is != 0) to string table ST. */ -extern struct Ebl_GStrent *ebl_gstrtabadd (struct Ebl_GStrtab *st, - const char *str, size_t len); - -/* Finalize string table ST and store size and memory location information - in DATA. */ -extern void ebl_gstrtabfinalize (struct Ebl_GStrtab *st, Elf_Data *data); - -/* Get offset in wide char string table for string associated with SE. */ -extern size_t ebl_gstrtaboffset (struct Ebl_GStrent *se); - -#endif /* libebl.h */ diff --git a/libebl/libeblP.h b/libebl/libeblP.h deleted file mode 100644 index 55ace24d..00000000 --- a/libebl/libeblP.h +++ /dev/null @@ -1,29 +0,0 @@ -/* Internal definitions for interface for libebl. - Copyright (C) 2000, 2001, 2002, 2004 Red Hat, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef _LIBEBLP_H -#define _LIBEBLP_H 1 - -#include <gelf.h> -#include <libebl.h> -//#include <libintl.h> - - -/* Type of the initialization functions in the backend modules. */ -typedef int (*ebl_bhinit_t) (Elf *, GElf_Half, Ebl *, size_t); - - -/* gettext helper macros. */ -#define _(Str) dgettext ("elfutils", Str) - -#endif /* libeblP.h */ diff --git a/libebl/libebl_alpha.h b/libebl/libebl_alpha.h deleted file mode 100644 index 36d7dadc..00000000 --- a/libebl/libebl_alpha.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Interface for libebl_alpha module. - Copyright (C) 2002 Red Hat, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef _LIBEBL_ALPHA_H -#define _LIBEBL_ALPHA_H 1 - -#include <libeblP.h> - - -/* Constructor. */ -extern int alpha_init (Elf *elf, GElf_Half machine, Ebl *eh, size_t ehlen); - -/* Destructor. */ -extern void alpha_destr (Ebl *bh); - - -/* Function to get relocation type name. */ -extern const char *alpha_reloc_type_name (int type, char *buf, size_t len); - -/* Check relocation type. */ -extern bool alpha_reloc_type_check (int type); - -#endif /* libebl_alpha.h */ diff --git a/libebl/libebl_alpha.map b/libebl/libebl_alpha.map deleted file mode 100644 index aa66ad75..00000000 --- a/libebl/libebl_alpha.map +++ /dev/null @@ -1,11 +0,0 @@ -ELFUTILS_1.0 { - global: - alpha_backend_name; - alpha_destr; - alpha_init; - alpha_reloc_type_check; - alpha_reloc_type_name; - - local: - *; -}; diff --git a/libebl/libebl_arm.h b/libebl/libebl_arm.h deleted file mode 100644 index 8aade439..00000000 --- a/libebl/libebl_arm.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Interface for libebl_arm module. - Copyright (C) 2002 Red Hat, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef _LIBEBL_ARM_H -#define _LIBEBL_ARM_H 1 - -#include <libeblP.h> - - -/* Constructor. */ -extern int arm_init (Elf *elf, GElf_Half machine, Ebl *eh, size_t ehlen); - -/* Destructor. */ -extern void arm_destr (Ebl *bh); - - -/* Function to get relocation type name. */ -extern const char *arm_reloc_type_name (int type, char *buf, size_t len); - -/* Check relocation type. */ -extern bool arm_reloc_type_check (int type); - -#endif /* libebl_arm.h */ diff --git a/libebl/libebl_arm.map b/libebl/libebl_arm.map deleted file mode 100644 index d389526c..00000000 --- a/libebl/libebl_arm.map +++ /dev/null @@ -1,11 +0,0 @@ -ELFUTILS_1.0 { - global: - arm_backend_name; - arm_destr; - arm_init; - arm_reloc_type_check; - arm_reloc_type_name; - - local: - *; -}; diff --git a/libebl/libebl_i386.h b/libebl/libebl_i386.h deleted file mode 100644 index ed719660..00000000 --- a/libebl/libebl_i386.h +++ /dev/null @@ -1,43 +0,0 @@ -/* Interface for libebl_i386 module. - Copyright (C) 2000, 2001, 2002, 2003 Red Hat, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef _LIBEBL_I386_H -#define _LIBEBL_I386_H 1 - -#include <libeblP.h> - - -/* Constructor. */ -extern int i386_init (Elf *elf, GElf_Half machine, Ebl *eh, size_t ehlen); - -/* Destructor. */ -extern void i386_destr (Ebl *bh); - - -/* Function to get relocation type name. */ -extern const char *i386_reloc_type_name (int type, char *buf, size_t len); - -/* Check relocation type. */ -extern bool i386_reloc_type_check (int type); - -/* Check relocation type use. */ -extern bool i386_reloc_valid_use (Elf *elf, int type); - -/* Check relocation type use. */ -extern bool i386_gotpc_reloc_check (Elf *elf, int type); - -/* Code note handling. */ -extern bool i386_core_note (const char *name, uint32_t type, uint32_t descsz, - const char *desc); - -#endif /* libebl_i386.h */ diff --git a/libebl/libebl_i386.map b/libebl/libebl_i386.map deleted file mode 100644 index 38513247..00000000 --- a/libebl/libebl_i386.map +++ /dev/null @@ -1,12 +0,0 @@ -ELFUTILS_1.0 { - global: - i386_backend_name; - i386_core_note; - i386_destr; - i386_init; - i386_reloc_type_check; - i386_reloc_type_name; - - local: - *; -}; diff --git a/libebl/libebl_ia64.h b/libebl/libebl_ia64.h deleted file mode 100644 index 19e73fe8..00000000 --- a/libebl/libebl_ia64.h +++ /dev/null @@ -1,39 +0,0 @@ -/* Interface for libebl_ia64 module. - Copyright (C) 2002, 2003 Red Hat, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef _LIBEBL_IA64_H -#define _LIBEBL_IA64_H 1 - -#include <libeblP.h> - - -/* Constructor. */ -extern int ia64_init (Elf *elf, GElf_Half machine, Ebl *eh, size_t ehlen); - -/* Destructor. */ -extern void ia64_destr (Ebl *bh); - - -/* Function to get relocation type name. */ -extern const char *ia64_reloc_type_name (int type, char *buf, size_t len); - -/* Check relocation type. */ -extern bool ia64_reloc_type_check (int type); - -/* Name of segment type. */ -extern const char *ia64_segment_type_name (int segment, char *buf, size_t len); - -/* Name of dynamic tag. */ -extern const char *ia64_dynamic_tag_name (int64_t tag, char *buf, size_t len); - -#endif /* libebl_ia64.h */ diff --git a/libebl/libebl_ia64.map b/libebl/libebl_ia64.map deleted file mode 100644 index f67042c6..00000000 --- a/libebl/libebl_ia64.map +++ /dev/null @@ -1,11 +0,0 @@ -ELFUTILS_1.0 { - global: - ia64_backend_name; - ia64_destr; - ia64_init; - ia64_reloc_type_check; - ia64_reloc_type_name; - - local: - *; -}; diff --git a/libebl/libebl_mips.h b/libebl/libebl_mips.h deleted file mode 100644 index 167eab30..00000000 --- a/libebl/libebl_mips.h +++ /dev/null @@ -1,42 +0,0 @@ -/* Interface for libebl_mips module. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef _LIBEBL_MIPS_H -#define _LIBEBL_MIPS_H 1 - -#include <libeblP.h> - - -/* Constructor. */ -extern int mips_init (Elf *elf, GElf_Half machine, Ebl *eh, size_t ehlen); - -/* Destructor. */ -extern void mips_destr (Ebl *bh); - - -/* Function to get relocation type name. */ -extern const char *mips_reloc_type_name (int type, char *buf, size_t len); - -/* Function to get segment type name. */ -extern const char *mips_segment_type_name (int type, char *buf, size_t len); - -/* Function to get setion type name. */ -extern const char *mips_section_type_name (int type, char *buf, size_t len); - -/* Function to get machine flag name. */ -extern const char *mips_machine_flag_name (Elf64_Word *flags); - -/* Function to get dynamic tag name. */ -extern const char *mips_dynamic_tag_name (int64_t tag, char *buf, size_t len); - -#endif /* libebl_mips.h */ diff --git a/libebl/libebl_mips.map b/libebl/libebl_mips.map deleted file mode 100644 index 9ddd366b..00000000 --- a/libebl/libebl_mips.map +++ /dev/null @@ -1,14 +0,0 @@ -ELFUTILS_1.0 { - global: - mips_backend_name; - mips_destr; - mips_dynamic_tag_name; - mips_init; - mips_machine_flag_name; - mips_reloc_type_name; - mips_section_type_name; - mips_segment_type_name; - - local: - *; -}; diff --git a/libebl/libebl_ppc.h b/libebl/libebl_ppc.h deleted file mode 100644 index 880cd399..00000000 --- a/libebl/libebl_ppc.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Interface for libebl_PPC module. - Copyright (C) 2004 Red Hat, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef _LIBEBL_PPC_H -#define _LIBEBL_PPC_H 1 - -#include <libeblP.h> - - -/* Constructor. */ -extern int ppc_init (Elf *elf, GElf_Half machine, Ebl *eh, size_t ehlen); - -/* Destructor. */ -extern void ppc_destr (Ebl *bh); - - -/* Function to get relocation type name. */ -extern const char *ppc_reloc_type_name (int type, char *buf, size_t len); - -/* Check relocation type. */ -extern bool ppc_reloc_type_check (int type); - -/* Check relocation type use. */ -extern bool ppc_reloc_valid_use (Elf *elf, int type); - -/* Code note handling. */ -extern bool ppc_core_note (const char *name, uint32_t type, uint32_t descsz, - const char *desc); - -#endif /* libebl_ppc.h */ diff --git a/libebl/libebl_ppc.map b/libebl/libebl_ppc.map deleted file mode 100644 index 03bbfcc4..00000000 --- a/libebl/libebl_ppc.map +++ /dev/null @@ -1,11 +0,0 @@ -ELFUTILS_1.0 { - global: - ppc_backend_name; - ppc_destr; - ppc_init; - ppc_reloc_type_check; - ppc_reloc_type_name; - - local: - *; -}; diff --git a/libebl/libebl_ppc64.h b/libebl/libebl_ppc64.h deleted file mode 100644 index 3ad3e8cf..00000000 --- a/libebl/libebl_ppc64.h +++ /dev/null @@ -1,43 +0,0 @@ -/* Interface for libebl_PPC64 module. - Copyright (C) 2004 Red Hat, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef _LIBEBL_PPC64_H -#define _LIBEBL_PPC64_H 1 - -#include <libeblP.h> - - -/* Constructor. */ -extern int ppc64_init (Elf *elf, GElf_Half machine, Ebl *eh, size_t ehlen); - -/* Destructor. */ -extern void ppc64_destr (Ebl *bh); - - -/* Function to get relocation type name. */ -extern const char *ppc64_reloc_type_name (int type, char *buf, size_t len); - -/* Check relocation type. */ -extern bool ppc64_reloc_type_check (int type); - -/* Check relocation type use. */ -extern bool ppc64_reloc_valid_use (Elf *elf, int type); - -/* Code note handling. */ -extern bool ppc64_core_note (const char *name, uint32_t type, uint32_t descsz, - const char *desc); - -/* Name of dynamic tag. */ -extern const char *ppc64_dynamic_tag_name (int64_t tag, char *buf, size_t len); - -#endif /* libebl_ppc.h */ diff --git a/libebl/libebl_ppc64.map b/libebl/libebl_ppc64.map deleted file mode 100644 index 2d0d556a..00000000 --- a/libebl/libebl_ppc64.map +++ /dev/null @@ -1,11 +0,0 @@ -ELFUTILS_1.0 { - global: - ppc64_backend_name; - ppc64_destr; - ppc64_init; - ppc64_reloc_type_check; - ppc64_reloc_type_name; - - local: - *; -}; diff --git a/libebl/libebl_sh.h b/libebl/libebl_sh.h deleted file mode 100644 index 40e2a8c2..00000000 --- a/libebl/libebl_sh.h +++ /dev/null @@ -1,30 +0,0 @@ -/* Interface for libebl_sh module. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef _LIBEBL_SH_H -#define _LIBEBL_SH_H 1 - -#include <libeblP.h> - - -/* Constructor. */ -extern int sh_init (Elf *elf, GElf_Half machine, Ebl *eh, size_t ehlen); - -/* Destructor. */ -extern void sh_destr (Ebl *bh); - - -/* Function to get relocation type name. */ -extern const char *sh_reloc_type_name (int type, char *buf, size_t len); - -#endif /* libebl_sh.h */ diff --git a/libebl/libebl_sh.map b/libebl/libebl_sh.map deleted file mode 100644 index 252720a9..00000000 --- a/libebl/libebl_sh.map +++ /dev/null @@ -1,10 +0,0 @@ -ELFUTILS_1.0 { - global: - sh_backend_name; - sh_destr; - sh_init; - sh_reloc_type_name; - - local: - *; -}; diff --git a/libebl/libebl_sparc.h b/libebl/libebl_sparc.h deleted file mode 100644 index c06228ed..00000000 --- a/libebl/libebl_sparc.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Interface for libebl_sparc module. - Copyright (C) 2002 Red Hat, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef _LIBEBL_SPARC_H -#define _LIBEBL_SPARC_H 1 - -#include <libeblP.h> - - -/* Constructor. */ -extern int sparc_init (Elf *elf, GElf_Half machine, Ebl *eh, size_t ehlen); - -/* Destructor. */ -extern void sparc_destr (Ebl *bh); - - -/* Function to get relocation type name. */ -extern const char *sparc_reloc_type_name (int type, char *buf, size_t len); - -/* Check relocation type. */ -extern bool sparc_reloc_type_check (int type); - -/* Code note handling. */ -extern bool sparc_core_note (const char *name, uint32_t type, uint32_t descsz, - const char *desc); - -#endif /* libebl_sparc.h */ diff --git a/libebl/libebl_sparc.map b/libebl/libebl_sparc.map deleted file mode 100644 index 7ca60383..00000000 --- a/libebl/libebl_sparc.map +++ /dev/null @@ -1,11 +0,0 @@ -ELFUTILS_1.0 { - global: - sparc_backend_name; - sparc_destr; - sparc_init; - sparc_reloc_type_check; - sparc_reloc_type_name; - - local: - *; -}; diff --git a/libebl/libebl_x86_64.h b/libebl/libebl_x86_64.h deleted file mode 100644 index b68124ab..00000000 --- a/libebl/libebl_x86_64.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Interface for libebl_x86_64 module. - Copyright (C) 2002 Red Hat, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef _LIBEBL_X86_64_H -#define _LIBEBL_X86_64_H 1 - -#include <libeblP.h> - - -/* Constructor. */ -extern int x86_64_init (Elf *elf, GElf_Half machine, Ebl *eh, size_t ehlen); - -/* Destructor. */ -extern void x86_64_destr (Ebl *bh); - - -/* Function to get relocation type name. */ -extern const char *x86_64_reloc_type_name (int type, char *buf, size_t len); - -/* Check relocation type. */ -extern bool x86_64_reloc_type_check (int type); - -/* Check relocation type use. */ -extern bool x86_64_reloc_valid_use (Elf *elf, int type); - -/* Code note handling. */ -extern bool x86_64_core_note (const char *name, uint32_t type, uint32_t descsz, - const char *desc); - -#endif /* libebl_x86_64.h */ diff --git a/libebl/libebl_x86_64.map b/libebl/libebl_x86_64.map deleted file mode 100644 index bf07cb9c..00000000 --- a/libebl/libebl_x86_64.map +++ /dev/null @@ -1,11 +0,0 @@ -ELFUTILS_1.0 { - global: - x86_64_backend_name; - x86_64_destr; - x86_64_init; - x86_64_reloc_type_check; - x86_64_reloc_type_name; - - local: - *; -}; diff --git a/libebl/mips_destr.c b/libebl/mips_destr.c deleted file mode 100644 index fa8f8d30..00000000 --- a/libebl/mips_destr.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Destructor for MIPS specific backend library. - Copyright (C) 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libebl_mips.h> - - -void -mips_destr (bh) - Ebl *bh; -{ - /* Nothing to do so far. */ -} diff --git a/libebl/mips_init.c b/libebl/mips_init.c deleted file mode 100644 index 7b51f405..00000000 --- a/libebl/mips_init.c +++ /dev/null @@ -1,47 +0,0 @@ -/* Initialization of MIPS specific backend library. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libebl_mips.h> - - -int -mips_init (elf, machine, eh, ehlen) - Elf *elf; - GElf_Half machine; - Ebl *eh; - size_t ehlen; -{ - /* Check whether the Elf_BH object has a sufficent size. */ - if (ehlen < sizeof (Ebl)) - return 1; - - /* We handle it. */ - if (machine != EM_MIPS) - eh->name = "MIPS R3000 big-endian"; - else - eh->name = "MIPS R3000 little-endian"; - - eh->reloc_type_name = mips_reloc_type_name; - eh->segment_type_name = mips_segment_type_name; - eh->section_type_name = mips_section_type_name; - eh->machine_flag_name = mips_machine_flag_name; - eh->dynamic_tag_name = mips_dynamic_tag_name; - eh->destr = mips_destr; - - return 0; -} diff --git a/libebl/mips_symbol.c b/libebl/mips_symbol.c deleted file mode 100644 index cab03310..00000000 --- a/libebl/mips_symbol.c +++ /dev/null @@ -1,266 +0,0 @@ -/* MIPS specific symbolic name handling. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <stddef.h> - -#include <libebl_mips.h> - - -/* Return of the backend. */ -const char * -mips_backend_name (void) -{ - return "mips"; -} - - -/* Determine relocation type string for MIPS. */ -const char * -mips_reloc_type_name (int type, char *buf, size_t len) -{ - static const char *map_table[] = - { - [R_MIPS_NONE] = "MIPS_NONE", - [R_MIPS_16] = "MIPS_16", - [R_MIPS_32] = "MIPS_32", - [R_MIPS_REL32] = "MIPS_REL32", - [R_MIPS_26] = "MIPS_26", - [R_MIPS_HI16] = "MIPS_HI16", - [R_MIPS_LO16] = "MIPS_LO16", - [R_MIPS_GPREL16] = "MIPS_GPREL16", - [R_MIPS_LITERAL] = "MIPS_LITERAL", - [R_MIPS_GOT16] = "MIPS_GOT16", - [R_MIPS_PC16] = "MIPS_PC16", - [R_MIPS_CALL16] = "MIPS_CALL16", - [R_MIPS_GPREL32] = "MIPS_GPREL32", - [R_MIPS_SHIFT5] = "MIPS_SHIFT5", - [R_MIPS_SHIFT6] = "MIPS_SHIFT6", - [R_MIPS_64] = "MIPS_64", - [R_MIPS_GOT_DISP] = "MIPS_GOT_DISP", - [R_MIPS_GOT_PAGE] = "MIPS_GOT_PAGE", - [R_MIPS_GOT_OFST] = "MIPS_GOT_OFST", - [R_MIPS_GOT_HI16] = "MIPS_GOT_HI16", - [R_MIPS_GOT_LO16] = "MIPS_GOT_LO16", - [R_MIPS_SUB] = "MIPS_SUB", - [R_MIPS_INSERT_A] = "MIPS_INSERT_A", - [R_MIPS_INSERT_B] = "MIPS_INSERT_B", - [R_MIPS_DELETE] = "MIPS_DELETE", - [R_MIPS_HIGHER] = "MIPS_HIGHER", - [R_MIPS_HIGHEST] = "MIPS_HIGHEST", - [R_MIPS_CALL_HI16] = "MIPS_CALL_HI16", - [R_MIPS_CALL_LO16] = "MIPS_CALL_LO16", - [R_MIPS_SCN_DISP] = "MIPS_SCN_DISP", - [R_MIPS_REL16] = "MIPS_REL16", - [R_MIPS_ADD_IMMEDIATE] = "MIPS_ADD_IMMEDIATE", - [R_MIPS_PJUMP] = "MIPS_PJUMP", - [R_MIPS_RELGOT] = "MIPS_RELGOT", - [R_MIPS_JALR] = "MIPS_JALR" - }; - - if (type < 0 || type >= R_MIPS_NUM) - return NULL; - - return map_table[type]; -} - - -const char * -mips_segment_type_name (int type, char *buf, size_t len) -{ - static const struct - { - int type; - const char *str; - } mips_segments[] = - { - { PT_MIPS_REGINFO, "MIPS_REGINFO" }, - { PT_MIPS_RTPROC, "MIPS_RTPROC" }, - { PT_MIPS_OPTIONS, "MIPS_OPTIONS" } - }; -#define nsegments (sizeof (mips_segments) / sizeof (mips_segments[0])) - size_t cnt; - - for (cnt = 0; cnt < nsegments; ++cnt) - if (type == mips_segments[cnt].type) - return mips_segments[cnt].str; - - /* We don't know the segment type. */ - return NULL; -} - - -const char * -mips_section_type_name (int type, char *buf, size_t len) -{ - static const struct - { - int type; - const char *str; - } mips_sections[] = - { - { SHT_MIPS_LIBLIST, "MIPS_LIBLIST" }, - { SHT_MIPS_MSYM, "MIPS_MSYM" }, - { SHT_MIPS_CONFLICT, "MIPS_CONFLICT" }, - { SHT_MIPS_GPTAB, "MIPS_GPTAB" }, - { SHT_MIPS_UCODE, "MIPS_UCODE" }, - { SHT_MIPS_DEBUG, "MIPS_DEBUG" }, - { SHT_MIPS_REGINFO, "MIPS_REGINFO" }, - { SHT_MIPS_PACKAGE, "MIPS_PACKAGE" }, - { SHT_MIPS_PACKSYM, "MIPS_PACKSYM" }, - { SHT_MIPS_RELD, "MIPS_RELD" }, - { SHT_MIPS_IFACE, "MIPS_IFACE" }, - { SHT_MIPS_CONTENT, "MIPS_CONTENT" }, - { SHT_MIPS_OPTIONS, "MIPS_OPTIONS" }, - { SHT_MIPS_SHDR, "MIPS_SHDR" }, - { SHT_MIPS_FDESC, "MIPS_FDESC" }, - { SHT_MIPS_EXTSYM, "MIPS_EXTSYM" }, - { SHT_MIPS_DENSE, "MIPS_DENSE" }, - { SHT_MIPS_PDESC, "MIPS_PDESC" }, - { SHT_MIPS_LOCSYM, "MIPS_LOCSYM" }, - { SHT_MIPS_AUXSYM, "MIPS_AUXSYM" }, - { SHT_MIPS_OPTSYM, "MIPS_OPTSYM" }, - { SHT_MIPS_LOCSTR, "MIPS_LOCSTR" }, - { SHT_MIPS_LINE, "MIPS_LINE" }, - { SHT_MIPS_RFDESC, "MIPS_RFDESC" }, - { SHT_MIPS_DELTASYM, "MIPS_DELTASYM" }, - { SHT_MIPS_DELTAINST, "MIPS_DELTAINST" }, - { SHT_MIPS_DELTACLASS, "MIPS_DELTACLASS" }, - { SHT_MIPS_DWARF, "MIPS_DWARF" }, - { SHT_MIPS_DELTADECL, "MIPS_DELTADECL" }, - { SHT_MIPS_SYMBOL_LIB, "MIPS_SYMBOL_LIB" }, - { SHT_MIPS_EVENTS, "MIPS_EVENTS" }, - { SHT_MIPS_TRANSLATE, "MIPS_TRANSLATE" }, - { SHT_MIPS_PIXIE, "MIPS_PIXIE" }, - { SHT_MIPS_XLATE, "MIPS_XLATE" }, - { SHT_MIPS_XLATE_DEBUG, "MIPS_XLATE_DEBUG" }, - { SHT_MIPS_WHIRL, "MIPS_WHIRL" }, - { SHT_MIPS_EH_REGION, "MIPS_EH_REGION" }, - { SHT_MIPS_XLATE_OLD, "MIPS_XLATE_OLD" }, - { SHT_MIPS_PDR_EXCEPTION, "MIPS_PDR_EXCEPTION" } - }; -#define nsections (sizeof (mips_sections) / sizeof (mips_sections[0])) - size_t cnt; - - for (cnt = 0; cnt < nsections; ++cnt) - if (type == mips_sections[cnt].type) - return mips_sections[cnt].str; - - /* We don't know the section type. */ - return NULL; -} - - -const char * -mips_machine_flag_name (Elf64_Word *flags) -{ - static const struct - { - unsigned int mask; - unsigned int flag; - const char *str; - } mips_flags[] = - { - { EF_MIPS_NOREORDER, EF_MIPS_NOREORDER, "noreorder" }, - { EF_MIPS_PIC, EF_MIPS_PIC, "pic" }, - { EF_MIPS_CPIC, EF_MIPS_CPIC, "cpic" }, - { EF_MIPS_ABI2, EF_MIPS_ABI2, "abi2" }, - { EF_MIPS_ARCH, E_MIPS_ARCH_1, "mips1" }, - { EF_MIPS_ARCH, E_MIPS_ARCH_2, "mips2" }, - { EF_MIPS_ARCH, E_MIPS_ARCH_3, "mips3" }, - { EF_MIPS_ARCH, E_MIPS_ARCH_4, "mips4" }, - { EF_MIPS_ARCH, E_MIPS_ARCH_5, "mips5" } - }; -#define nflags (sizeof (mips_flags) / sizeof (mips_flags[0])) - size_t cnt; - - for (cnt = 0; cnt < nflags; ++cnt) - if ((*flags & mips_flags[cnt].mask) == mips_flags[cnt].flag) - { - *flags &= ~mips_flags[cnt].mask; - return mips_flags[cnt].str; - } - - /* We don't know the flag. */ - return NULL; -} - - -const char * -mips_dynamic_tag_name (int64_t tag, char *buf, size_t len) -{ - static const struct - { - int tag; - const char *str; - } mips_dtags[] = - { - { DT_MIPS_RLD_VERSION, "MIPS_RLD_VERSION" }, - { DT_MIPS_TIME_STAMP, "MIPS_TIME_STAMP" }, - { DT_MIPS_ICHECKSUM, "MIPS_ICHECKSUM" }, - { DT_MIPS_IVERSION, "MIPS_IVERSION" }, - { DT_MIPS_FLAGS, "MIPS_FLAGS" }, - { DT_MIPS_BASE_ADDRESS, "MIPS_BASE_ADDRESS" }, - { DT_MIPS_MSYM, "MIPS_MSYM" }, - { DT_MIPS_CONFLICT, "MIPS_CONFLICT" }, - { DT_MIPS_LIBLIST, "MIPS_LIBLIST" }, - { DT_MIPS_LOCAL_GOTNO, "MIPS_LOCAL_GOTNO" }, - { DT_MIPS_CONFLICTNO, "MIPS_CONFLICTNO" }, - { DT_MIPS_LIBLISTNO, "MIPS_LIBLISTNO" }, - { DT_MIPS_SYMTABNO, "MIPS_SYMTABNO" }, - { DT_MIPS_UNREFEXTNO, "MIPS_UNREFEXTNO" }, - { DT_MIPS_GOTSYM, "MIPS_GOTSYM" }, - { DT_MIPS_HIPAGENO, "MIPS_HIPAGENO" }, - { DT_MIPS_RLD_MAP, "MIPS_RLD_MAP" }, - { DT_MIPS_DELTA_CLASS, "MIPS_DELTA_CLASS" }, - { DT_MIPS_DELTA_CLASS_NO, "MIPS_DELTA_CLASS_NO" }, - { DT_MIPS_DELTA_INSTANCE, "MIPS_DELTA_INSTANCE" }, - { DT_MIPS_DELTA_INSTANCE_NO, "MIPS_DELTA_INSTANCE_NO" }, - { DT_MIPS_DELTA_RELOC, "MIPS_DELTA_RELOC" }, - { DT_MIPS_DELTA_RELOC_NO, "MIPS_DELTA_RELOC_NO" }, - { DT_MIPS_DELTA_SYM, "MIPS_DELTA_SYM" }, - { DT_MIPS_DELTA_SYM_NO, "MIPS_DELTA_SYM_NO" }, - { DT_MIPS_DELTA_CLASSSYM, "MIPS_DELTA_CLASSSYM" }, - { DT_MIPS_DELTA_CLASSSYM_NO, "MIPS_DELTA_CLASSSYM_NO" }, - { DT_MIPS_CXX_FLAGS, "MIPS_CXX_FLAGS" }, - { DT_MIPS_PIXIE_INIT, "MIPS_PIXIE_INIT" }, - { DT_MIPS_SYMBOL_LIB, "MIPS_SYMBOL_LIB" }, - { DT_MIPS_LOCALPAGE_GOTIDX, "MIPS_LOCALPAGE_GOTIDX" }, - { DT_MIPS_LOCAL_GOTIDX, "MIPS_LOCAL_GOTIDX" }, - { DT_MIPS_HIDDEN_GOTIDX, "MIPS_HIDDEN_GOTIDX" }, - { DT_MIPS_PROTECTED_GOTIDX, "MIPS_PROTECTED_GOTIDX" }, - { DT_MIPS_OPTIONS, "MIPS_OPTIONS" }, - { DT_MIPS_INTERFACE, "MIPS_INTERFACE" }, - { DT_MIPS_DYNSTR_ALIGN, "MIPS_DYNSTR_ALIGN" }, - { DT_MIPS_INTERFACE_SIZE, "MIPS_INTERFACE_SIZE" }, - { DT_MIPS_RLD_TEXT_RESOLVE_ADDR, "MIPS_RLD_TEXT_RESOLVE_ADDR" }, - { DT_MIPS_PERF_SUFFIX, "MIPS_PERF_SUFFIX" }, - { DT_MIPS_COMPACT_SIZE, "MIPS_COMPACT_SIZE" }, - { DT_MIPS_GP_VALUE, "MIPS_GP_VALUE" }, - { DT_MIPS_AUX_DYNAMIC, "MIPS_AUX_DYNAMIC" }, - }; -#define ndtags (sizeof (mips_dtags) / sizeof (mips_dtags[0])) - size_t cnt; - - for (cnt = 0; cnt < ndtags; ++cnt) - if (tag == mips_dtags[cnt].tag) - return mips_dtags[cnt].str; - - /* We don't know this dynamic tag. */ - return NULL; -} diff --git a/libebl/ppc64_destr.c b/libebl/ppc64_destr.c deleted file mode 100644 index 9fd38021..00000000 --- a/libebl/ppc64_destr.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Destructor for PPC64 specific backend library. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libebl_ppc64.h> - - -void -ppc64_destr (bh) - Ebl *bh; -{ - /* Nothing to do so far. */ -} diff --git a/libebl/ppc64_init.c b/libebl/ppc64_init.c deleted file mode 100644 index fec963b2..00000000 --- a/libebl/ppc64_init.c +++ /dev/null @@ -1,42 +0,0 @@ -/* Initialization of PPC64 specific backend library. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libebl_ppc64.h> - - -int -ppc64_init (elf, machine, eh, ehlen) - Elf *elf; - GElf_Half machine; - Ebl *eh; - size_t ehlen; -{ - /* Check whether the Elf_BH object has a sufficent size. */ - if (ehlen < sizeof (Ebl)) - return 1; - - /* We handle it. */ - eh->name = "PowerPC 64-bit"; - eh->reloc_type_name = ppc64_reloc_type_name; - eh->reloc_type_check = ppc64_reloc_type_check; - eh->reloc_valid_use = ppc64_reloc_valid_use; - eh->dynamic_tag_name = ppc64_dynamic_tag_name; - eh->destr = ppc64_destr; - - return 0; -} diff --git a/libebl/ppc64_symbol.c b/libebl/ppc64_symbol.c deleted file mode 100644 index 9ab53667..00000000 --- a/libebl/ppc64_symbol.c +++ /dev/null @@ -1,206 +0,0 @@ -/* PPC64 specific symbolic name handling. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <elf.h> -#include <stddef.h> - -#include <libebl_ppc64.h> - - -/* Return of the backend. */ -const char * -ppc64_backend_name (void) -{ - return "ppc64"; -} - - -/* Relocation mapping table. */ -static struct -{ - const char *name; - enum { both = 0, rel = 1, exec = 2 } appear; -} reloc_map_table[] = - { - // XXX Check all the appear values. - [R_PPC64_NONE] = { "R_PPC64_NONE", both }, - [R_PPC64_ADDR32] = { "R_PPC64_ADDR32", both }, - [R_PPC64_ADDR24] = { "R_PPC64_ADDR24", both }, - [R_PPC64_ADDR16] = { "R_PPC64_ADDR16", both }, - [R_PPC64_ADDR16_LO] = { "R_PPC64_ADDR16_LO", both }, - [R_PPC64_ADDR16_HI] = { "R_PPC64_ADDR16_HI", both }, - [R_PPC64_ADDR16_HA] = { "R_PPC64_ADDR16_HA", both }, - [R_PPC64_ADDR14] = { "R_PPC64_ADDR14", both }, - [R_PPC64_ADDR14_BRTAKEN] = { "R_PPC64_ADDR14_BRTAKEN", exec }, - [R_PPC64_ADDR14_BRNTAKEN] = { "R_PPC64_ADDR14_BRNTAKEN", exec }, - [R_PPC64_REL24] = { "R_PPC64_REL24", both }, - [R_PPC64_REL14] = { "R_PPC64_REL14", both }, - [R_PPC64_REL14_BRTAKEN] = { "R_PPC64_REL14_BRTAKEN", exec }, - [R_PPC64_REL14_BRNTAKEN] = { "R_PPC64_REL14_BRNTAKEN", exec }, - [R_PPC64_GOT16] = { "R_PPC64_GOT16", rel }, - [R_PPC64_GOT16_LO] = { "R_PPC64_GOT16_LO", rel }, - [R_PPC64_GOT16_HI] = { "R_PPC64_GOT16_HI", rel }, - [R_PPC64_GOT16_HA] = { "R_PPC64_GOT16_HA", rel }, - [R_PPC64_COPY] = { "R_PPC64_COPY", exec }, - [R_PPC64_GLOB_DAT] = { "R_PPC64_GLOB_DAT", exec }, - [R_PPC64_JMP_SLOT] = { "R_PPC64_JMP_SLOT", exec }, - [R_PPC64_RELATIVE] = { "R_PPC64_RELATIVE", exec }, - [R_PPC64_UADDR32] = { "R_PPC64_UADDR32", exec }, - [R_PPC64_UADDR16] = { "R_PPC64_UADDR16", exec }, - [R_PPC64_REL32] = { "R_PPC64_REL32", exec }, - [R_PPC64_PLT32] = { "R_PPC64_PLT32", exec }, - [R_PPC64_PLTREL32] = { "R_PPC64_PLTREL32", both }, - [R_PPC64_PLT16_LO] = { "R_PPC64_PLT16_LO", both }, - [R_PPC64_PLT16_HI] = { "R_PPC64_PLT16_HI", both }, - [R_PPC64_PLT16_HA] = { "R_PPC64_PLT16_HA", both }, - [R_PPC64_SECTOFF] = { "R_PPC64_SECTOFF", both }, - [R_PPC64_SECTOFF_LO] = { "R_PPC64_SECTOFF_LO", both }, - [R_PPC64_SECTOFF_HI] = { "R_PPC64_SECTOFF_HI", both }, - [R_PPC64_SECTOFF_HA] = { "R_PPC64_SECTOFF_HA", both }, - [R_PPC64_ADDR30] = { "R_PPC64_ADDR30", both }, - [R_PPC64_ADDR64] = { "R_PPC64_ADDR64", both }, - [R_PPC64_ADDR16_HIGHER] = { "R_PPC64_ADDR16_HIGHER", both }, - [R_PPC64_ADDR16_HIGHERA] = { "R_PPC64_ADDR16_HIGHERA", both }, - [R_PPC64_ADDR16_HIGHEST] = { "R_PPC64_ADDR16_HIGHEST", both }, - [R_PPC64_ADDR16_HIGHESTA] = { "R_PPC64_ADDR16_HIGHESTA", both }, - [R_PPC64_UADDR64] = { "R_PPC64_UADDR64", both }, - [R_PPC64_REL64] = { "R_PPC64_REL64", both }, - [R_PPC64_PLT64] = { "R_PPC64_PLT64", both }, - [R_PPC64_PLTREL64] = { "R_PPC64_PLTREL64", both }, - [R_PPC64_TOC16] = { "R_PPC64_TOC16", both }, - [R_PPC64_TOC16_LO] = { "R_PPC64_TOC16_LO", both }, - [R_PPC64_TOC16_HI] = { "R_PPC64_TOC16_HI", both }, - [R_PPC64_TOC16_HA] = { "R_PPC64_TOC16_HA", both }, - [R_PPC64_TOC] = { "R_PPC64_TOC", both }, - [R_PPC64_PLTGOT16] = { "R_PPC64_PLTGOT16", both }, - [R_PPC64_PLTGOT16_LO] = { "R_PPC64_PLTGOT16_LO", both }, - [R_PPC64_PLTGOT16_HI] = { "R_PPC64_PLTGOT16_HI", both }, - [R_PPC64_PLTGOT16_HA] = { "R_PPC64_PLTGOT16_HA", both }, - [R_PPC64_ADDR16_DS] = { "R_PPC64_ADDR16_DS", both }, - [R_PPC64_ADDR16_LO_DS] = { "R_PPC64_ADDR16_LO_DS", both }, - [R_PPC64_GOT16_DS] = { "R_PPC64_GOT16_DS", both }, - [R_PPC64_GOT16_LO_DS] = { "R_PPC64_GOT16_LO_DS", both }, - [R_PPC64_PLT16_LO_DS] = { "R_PPC64_PLT16_LO_DS", both }, - [R_PPC64_SECTOFF_DS] = { "R_PPC64_SECTOFF_DS", both }, - [R_PPC64_SECTOFF_LO_DS] = { "R_PPC64_SECTOFF_LO_DS", both }, - [R_PPC64_TOC16_DS] = { "R_PPC64_TOC16_DS", both }, - [R_PPC64_TOC16_LO_DS] = { "R_PPC64_TOC16_LO_DS", both }, - [R_PPC64_PLTGOT16_DS] = { "R_PPC64_PLTGOT16_DS", both }, - [R_PPC64_PLTGOT16_LO_DS] = { "R_PPC64_PLTGOT16_LO_DS", both }, - [R_PPC64_TLS] = { "R_PPC64_TLS", both }, - [R_PPC64_DTPMOD64] = { "R_PPC64_DTPMOD64", both }, - [R_PPC64_TPREL16] = { "R_PPC64_TPREL16", both }, - [R_PPC64_TPREL16_LO] = { "R_PPC64_TPREL16_LO", both }, - [R_PPC64_TPREL16_HI] = { "R_PPC64_TPREL16_HI", both }, - [R_PPC64_TPREL16_HA] = { "R_PPC64_TPREL16_HA", both }, - [R_PPC64_TPREL64] = { "R_PPC64_TPREL64", both }, - [R_PPC64_DTPREL16] = { "R_PPC64_DTPREL16", both }, - [R_PPC64_DTPREL16_LO] = { "R_PPC64_DTPREL16_LO", both }, - [R_PPC64_DTPREL16_HI] = { "R_PPC64_DTPREL16_HI", both }, - [R_PPC64_DTPREL16_HA] = { "R_PPC64_DTPREL16_HA", both }, - [R_PPC64_DTPREL64] = { "R_PPC64_DTPREL64", both }, - [R_PPC64_GOT_TLSGD16] = { "R_PPC64_GOT_TLSGD16", both }, - [R_PPC64_GOT_TLSGD16_LO] = { "R_PPC64_GOT_TLSGD16_LO", both }, - [R_PPC64_GOT_TLSGD16_HI] = { "R_PPC64_GOT_TLSGD16_HI", both }, - [R_PPC64_GOT_TLSGD16_HA] = { "R_PPC64_GOT_TLSGD16_HA", both }, - [R_PPC64_GOT_TLSLD16] = { "R_PPC64_GOT_TLSLD16", both }, - [R_PPC64_GOT_TLSLD16_LO] = { "R_PPC64_GOT_TLSLD16_LO", both }, - [R_PPC64_GOT_TLSLD16_HI] = { "R_PPC64_GOT_TLSLD16_HI", both }, - [R_PPC64_GOT_TLSLD16_HA] = { "R_PPC64_GOT_TLSLD16_HA", both }, - [R_PPC64_GOT_TPREL16_DS] = { "R_PPC64_GOT_TPREL16_DS", both }, - [R_PPC64_GOT_TPREL16_LO_DS] = { "R_PPC64_GOT_TPREL16_LO_DS", both }, - [R_PPC64_GOT_TPREL16_HI] = { "R_PPC64_GOT_TPREL16_HI", both }, - [R_PPC64_GOT_TPREL16_HA] = { "R_PPC64_GOT_TPREL16_HA", both }, - [R_PPC64_GOT_DTPREL16_DS] = { "R_PPC64_GOT_DTPREL16_DS", both }, - [R_PPC64_GOT_DTPREL16_LO_DS] = { "R_PPC64_GOT_DTPREL16_LO_DS", both }, - [R_PPC64_GOT_DTPREL16_HI] = { "R_PPC64_GOT_DTPREL16_HI", both }, - [R_PPC64_GOT_DTPREL16_HA] = { "R_PPC64_GOT_DTPREL16_HA", both }, - [R_PPC64_TPREL16_DS] = { "R_PPC64_TPREL16_DS", both }, - [R_PPC64_TPREL16_LO_DS] = { "R_PPC64_TPREL16_LO_DS", both }, - [R_PPC64_TPREL16_HIGHER] = { "R_PPC64_TPREL16_HIGHER", both }, - [R_PPC64_TPREL16_HIGHERA] = { "R_PPC64_TPREL16_HIGHERA", both }, - [R_PPC64_TPREL16_HIGHEST] = { "R_PPC64_TPREL16_HIGHEST", both }, - [R_PPC64_TPREL16_HIGHESTA] = { "R_PPC64_TPREL16_HIGHESTA", both }, - [R_PPC64_DTPREL16_DS] = { "R_PPC64_DTPREL16_DS", both }, - [R_PPC64_DTPREL16_LO_DS] = { "R_PPC64_DTPREL16_LO_DS", both }, - [R_PPC64_DTPREL16_HIGHER] = { "R_PPC64_DTPREL16_HIGHER", both }, - [R_PPC64_DTPREL16_HIGHERA] = { "R_PPC64_DTPREL16_HIGHERA", both }, - [R_PPC64_DTPREL16_HIGHEST] = { "R_PPC64_DTPREL16_HIGHEST", both }, - [R_PPC64_DTPREL16_HIGHESTA] = { "R_PPC64_DTPREL16_HIGHESTA", both } - }; - - -/* Determine relocation type string for PPC. */ -const char * -ppc64_reloc_type_name (int type, char *buf, size_t len) -{ - if (type < R_PPC64_NONE || type >= R_PPC64_NUM) - return NULL; - - return reloc_map_table[type].name; -} - - -/* Check for correct relocation type. */ -bool -ppc64_reloc_type_check (int type) -{ - return (type >= R_PPC64_NONE && type < R_PPC64_NUM - && reloc_map_table[type].name != NULL) ? true : false; -} - - -/* Check for correct relocation type use. */ -bool -ppc64_reloc_valid_use (Elf *elf, int type) -{ - if (type < R_PPC64_NONE || type >= R_PPC64_NUM - || reloc_map_table[type].name == NULL) - return false; - - Elf64_Ehdr *ehdr = elf64_getehdr (elf); - assert (ehdr != NULL); - - if (reloc_map_table[type].appear == rel) - return ehdr->e_type == ET_REL; - - if (reloc_map_table[type].appear == exec) - return ehdr->e_type != ET_REL; - - assert (reloc_map_table[type].appear == both); - return true; -} - - -const char * -ppc64_dynamic_tag_name (int64_t tag, char *buf, size_t len) -{ - switch (tag) - { - case DT_PPC64_GLINK: - return "PPC64_GLINK"; - case DT_PPC64_OPD: - return "PPC64_OPD"; - case DT_PPC64_OPDSZ: - return "PPC64_OPDSZ"; - default: - break; - } - return NULL; -} diff --git a/libebl/ppc_destr.c b/libebl/ppc_destr.c deleted file mode 100644 index 219de067..00000000 --- a/libebl/ppc_destr.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Destructor for PPC specific backend library. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libebl_ppc.h> - - -void -ppc_destr (bh) - Ebl *bh; -{ - /* Nothing to do so far. */ -} diff --git a/libebl/ppc_init.c b/libebl/ppc_init.c deleted file mode 100644 index 9b45bd73..00000000 --- a/libebl/ppc_init.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Initialization of PPC specific backend library. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libebl_ppc.h> - - -int -ppc_init (elf, machine, eh, ehlen) - Elf *elf; - GElf_Half machine; - Ebl *eh; - size_t ehlen; -{ - /* Check whether the Elf_BH object has a sufficent size. */ - if (ehlen < sizeof (Ebl)) - return 1; - - /* We handle it. */ - eh->name = "PowerPC"; - eh->reloc_type_name = ppc_reloc_type_name; - eh->reloc_type_check = ppc_reloc_type_check; - eh->reloc_valid_use = ppc_reloc_valid_use; - eh->destr = ppc_destr; - - return 0; -} diff --git a/libebl/ppc_symbol.c b/libebl/ppc_symbol.c deleted file mode 100644 index 08a9fef7..00000000 --- a/libebl/ppc_symbol.c +++ /dev/null @@ -1,149 +0,0 @@ -/* PPC specific symbolic name handling. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <elf.h> -#include <stddef.h> - -#include <libebl_ppc.h> - - -/* Return of the backend. */ -const char * -ppc_backend_name (void) -{ - return "ppc"; -} - - -/* Relocation mapping table. */ -static struct -{ - const char *name; - enum { both = 0, rel = 1, exec = 2 } appear; -} reloc_map_table[] = - { - // XXX Check all the appear values. - [R_PPC_NONE] = { "R_PPC_NONE", both }, - [R_PPC_ADDR32] = { "R_PPC_ADDR32", both }, - [R_PPC_ADDR24] = { "R_PPC_ADDR24", both }, - [R_PPC_ADDR16] = { "R_PPC_ADDR16", both }, - [R_PPC_ADDR16_LO] = { "R_PPC_ADDR16_LO", both }, - [R_PPC_ADDR16_HI] = { "R_PPC_ADDR16_HI", both }, - [R_PPC_ADDR16_HA] = { "R_PPC_ADDR16_HA", both }, - [R_PPC_ADDR14] = { "R_PPC_ADDR14", exec }, - [R_PPC_ADDR14_BRTAKEN] = { "R_PPC_ADDR14_BRTAKEN", exec }, - [R_PPC_ADDR14_BRNTAKEN] = { "R_PPC_ADDR14_BRNTAKEN", exec }, - [R_PPC_REL24] = { "R_PPC_REL24", both }, - [R_PPC_REL14] = { "R_PPC_REL14", both }, - [R_PPC_REL14_BRTAKEN] = { "R_PPC_REL14_BRTAKEN", exec }, - [R_PPC_REL14_BRNTAKEN] = { "R_PPC_REL14_BRNTAKEN", exec }, - [R_PPC_GOT16] = { "R_PPC_GOT16", rel }, - [R_PPC_GOT16_LO] = { "R_PPC_GOT16_LO", rel }, - [R_PPC_GOT16_HI] = { "R_PPC_GOT16_HI", rel }, - [R_PPC_GOT16_HA] = { "R_PPC_GOT16_HA", rel }, - [R_PPC_PLTREL24] = { "R_PPC_PLTREL24", rel }, - [R_PPC_COPY] = { "R_PPC_COPY", exec }, - [R_PPC_GLOB_DAT] = { "R_PPC_GLOB_DAT", exec }, - [R_PPC_JMP_SLOT] = { "R_PPC_JMP_SLOT", exec }, - [R_PPC_RELATIVE] = { "R_PPC_RELATIVE", exec }, - [R_PPC_LOCAL24PC] = { "R_PPC_LOCAL24PC", rel }, - [R_PPC_UADDR32] = { "R_PPC_UADDR32", exec }, - [R_PPC_UADDR16] = { "R_PPC_UADDR16", exec }, - [R_PPC_REL32] = { "R_PPC_REL32", exec }, - [R_PPC_PLT32] = { "R_PPC_PLT32", exec }, - [R_PPC_PLTREL32] = { "R_PPC_PLTREL32", both }, - [R_PPC_PLT16_LO] = { "R_PPC_PLT16_LO", both }, - [R_PPC_PLT16_HI] = { "R_PPC_PLT16_HI", both }, - [R_PPC_PLT16_HA] = { "R_PPC_PLT16_HA", both }, - [R_PPC_SDAREL16] = { "R_PPC_SDAREL16", both }, - [R_PPC_SECTOFF] = { "R_PPC_SECTOFF", both }, - [R_PPC_SECTOFF_LO] = { "R_PPC_SECTOFF_LO", both }, - [R_PPC_SECTOFF_HI] = { "R_PPC_SECTOFF_HI", both }, - [R_PPC_SECTOFF_HA] = { "R_PPC_SECTOFF_HA", both }, - [R_PPC_TLS] = { "R_PPC_TLS", both }, - [R_PPC_DTPMOD32] = { "R_PPC_DTPMOD32", exec }, - [R_PPC_TPREL16] = { "R_PPC_TPREL16", rel }, - [R_PPC_TPREL16_LO] = { "R_PPC_TPREL16_LO", rel }, - [R_PPC_TPREL16_HI] = { "R_PPC_TPREL16_HI", rel }, - [R_PPC_TPREL16_HA] = { "R_PPC_TPREL16_HA", rel }, - [R_PPC_TPREL32] = { "R_PPC_TPREL32", exec }, - [R_PPC_DTPREL16] = { "R_PPC_DTPREL16", rel }, - [R_PPC_DTPREL16_LO] = { "R_PPC_DTPREL16_LO", rel }, - [R_PPC_DTPREL16_HI] = { "R_PPC_DTPREL16_HI", rel }, - [R_PPC_DTPREL16_HA] = { "R_PPC_DTPREL16_HA", rel }, - [R_PPC_DTPREL32] = { "R_PPC_DTPREL32", exec }, - [R_PPC_GOT_TLSGD16] = { "R_PPC_GOT_TLSGD16", exec }, - [R_PPC_GOT_TLSGD16_LO] = { "R_PPC_GOT_TLSGD16_LO", exec }, - [R_PPC_GOT_TLSGD16_HI] = { "R_PPC_GOT_TLSGD16_HI", exec }, - [R_PPC_GOT_TLSGD16_HA] = { "R_PPC_GOT_TLSGD16_HA", exec }, - [R_PPC_GOT_TLSLD16] = { "R_PPC_GOT_TLSLD16", exec }, - [R_PPC_GOT_TLSLD16_LO] = { "R_PPC_GOT_TLSLD16_LO", exec }, - [R_PPC_GOT_TLSLD16_HI] = { "R_PPC_GOT_TLSLD16_HI", exec }, - [R_PPC_GOT_TLSLD16_HA] = { "R_PPC_GOT_TLSLD16_HA", exec }, - [R_PPC_GOT_TPREL16] = { "R_PPC_GOT_TPREL16", exec }, - [R_PPC_GOT_TPREL16_LO] = { "R_PPC_GOT_TPREL16_LO", exec }, - [R_PPC_GOT_TPREL16_HI] = { "R_PPC_GOT_TPREL16_HI", exec }, - [R_PPC_GOT_TPREL16_HA] = { "R_PPC_GOT_TPREL16_HA", exec }, - [R_PPC_GOT_DTPREL16] = { "R_PPC_GOT_DTPREL16", exec }, - [R_PPC_GOT_DTPREL16_LO] = { "R_PPC_GOT_DTPREL16_LO", exec }, - [R_PPC_GOT_DTPREL16_HI] = { "R_PPC_GOT_DTPREL16_HI", exec }, - [R_PPC_GOT_DTPREL16_HA] = { "R_PPC_GOT_DTPREL16_HA", exec } - }; - - -/* Determine relocation type string for PPC. */ -const char * -ppc_reloc_type_name (int type, char *buf, size_t len) -{ - if (type < 0 || type >= R_PPC_NUM) - return NULL; - - return reloc_map_table[type].name; -} - - -/* Check for correct relocation type. */ -bool -ppc_reloc_type_check (int type) -{ - return (type >= R_PPC_NONE && type < R_PPC_NUM - && reloc_map_table[type].name != NULL) ? true : false; -} - - -/* Check for correct relocation type use. */ -bool -ppc_reloc_valid_use (Elf *elf, int type) -{ - if (type < R_PPC_NONE || type >= R_PPC_NUM - || reloc_map_table[type].name == NULL) - return false; - - Elf32_Ehdr *ehdr = elf32_getehdr (elf); - assert (ehdr != NULL); - - if (reloc_map_table[type].appear == rel) - return ehdr->e_type == ET_REL; - - if (reloc_map_table[type].appear == exec) - return ehdr->e_type != ET_REL; - - assert (reloc_map_table[type].appear == both); - return true; -} diff --git a/libebl/sh_destr.c b/libebl/sh_destr.c deleted file mode 100644 index f6b03b3a..00000000 --- a/libebl/sh_destr.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Destructor for SH specific backend library. - Copyright (C) 2000. 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libebl_sh.h> - - -void -sh_destr (bh) - Ebl *bh; -{ - /* Nothing to do so far. */ -} diff --git a/libebl/sh_init.c b/libebl/sh_init.c deleted file mode 100644 index cc26640b..00000000 --- a/libebl/sh_init.c +++ /dev/null @@ -1,39 +0,0 @@ -/* Initialization of SH specific backend library. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libebl_sh.h> - - -int -sh_init (elf, machine, eh, ehlen) - Elf *elf; - GElf_Half machine; - Ebl *eh; - size_t ehlen; -{ - /* Check whether the Elf_BH object has a sufficent size. */ - if (ehlen < sizeof (Ebl)) - return 1; - - /* We handle it. */ - eh->name = "Hitachi SH"; - eh->reloc_type_name = sh_reloc_type_name; - eh->destr = sh_destr; - - return 0; -} diff --git a/libebl/sh_symbol.c b/libebl/sh_symbol.c deleted file mode 100644 index 6211ab51..00000000 --- a/libebl/sh_symbol.c +++ /dev/null @@ -1,91 +0,0 @@ -/* SH specific relocation handling. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <stddef.h> - -#include <libebl_sh.h> - - -/* Return of the backend. */ -const char * -sh_backend_name (void) -{ - return "sh"; -} - - -/* Determine relocation type string for SH. */ -const char * -sh_reloc_type_name (int type, char *buf, size_t len) -{ - static const char *map_table1[] = - { - [R_SH_NONE] = "R_SH_NONE", - [R_SH_DIR32] = "R_SH_DIR32", - [R_SH_REL32] = "R_SH_REL32", - [R_SH_DIR8WPN] = "R_SH_DIR8WPN", - [R_SH_IND12W] = "R_SH_IND12W", - [R_SH_DIR8WPL] = "R_SH_DIR8WPL", - [R_SH_DIR8WPZ] = "R_SH_DIR8WPZ", - [R_SH_DIR8BP] = "R_SH_DIR8BP", - [R_SH_DIR8W] = "R_SH_DIR8W", - [R_SH_DIR8L] = "R_SH_DIR8L", - [R_SH_SWITCH16] = "R_SH_SWITCH16", - [R_SH_SWITCH32] = "R_SH_SWITCH32", - [R_SH_USES] = "R_SH_USES", - [R_SH_COUNT] = "R_SH_COUNT", - [R_SH_ALIGN] = "R_SH_ALIGN", - [R_SH_CODE] = "R_SH_CODE", - [R_SH_DATA] = "R_SH_DATA", - [R_SH_LABEL] = "R_SH_LABEL", - [R_SH_SWITCH8] = "R_SH_SWITCH8", - [R_SH_GNU_VTINHERIT] ="R_SH_GNU_VTINHERIT", - [R_SH_GNU_VTENTRY] = "R_SH_GNU_VTENTRY" - }; - static const char *map_table2[] = - { - [R_SH_TLS_GD_32] = "R_SH_TLS_GD_32", - [R_SH_TLS_LD_32] = "R_SH_TLS_LD_32", - [R_SH_TLS_LDO_32] = "R_SH_TLS_LDO_32", - [R_SH_TLS_IE_32] = "R_SH_TLS_IE_32", - [R_SH_TLS_LE_32] = "R_SH_TLS_LE_32", - [R_SH_TLS_DTPMOD32] = "R_SH_TLS_DTPMOD32", - [R_SH_TLS_DTPOFF32] = "R_SH_TLS_DTPOFF32", - [R_SH_TLS_TPOFF32] = "R_SH_TLS_TPOFF32", - [R_SH_GOT32 - R_SH_GOT32] = "R_SH_GOT32", - [R_SH_PLT32 - R_SH_GOT32] = "R_SH_PLT32", - [R_SH_COPY - R_SH_GOT32] = "R_SH_COPY", - [R_SH_GLOB_DAT - R_SH_GOT32] = "R_SH_GLOB_DAT", - [R_SH_JMP_SLOT - R_SH_GOT32] = "R_SH_JMP_SLOT", - [R_SH_RELATIVE - R_SH_GOT32] = "R_SH_RELATIVE", - [R_SH_GOTOFF - R_SH_GOT32] = "R_SH_GOTOFF", - [R_SH_GOTPC - R_SH_GOT32] = "R_SH_GOTPC" - }; - - if (type >= 0 - && (size_t) type < sizeof (map_table1) / sizeof (map_table1[0])) - return map_table1[type]; - - if ((type - R_SH_TLS_GD_32) >= 0 - && ((size_t) (type - R_SH_TLS_GD_32) - < sizeof (map_table2) / sizeof (map_table2[0]))) - return map_table2[type - R_SH_TLS_GD_32]; - - return NULL; -} diff --git a/libebl/sparc_destr.c b/libebl/sparc_destr.c deleted file mode 100644 index ced22917..00000000 --- a/libebl/sparc_destr.c +++ /dev/null @@ -1,26 +0,0 @@ -/* Destructor for SPARC specific backend library. - Copyright (C) 2002 Red Hat, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libebl_sparc.h> - - -void -sparc_destr (bh) - Ebl *bh; -{ - /* Nothing to do so far. */ -} diff --git a/libebl/sparc_init.c b/libebl/sparc_init.c deleted file mode 100644 index 2bb1f790..00000000 --- a/libebl/sparc_init.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Initialization of SPARC specific backend library. - Copyright (C) 2002 Red Hat, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libebl_sparc.h> - - -int -sparc_init (elf, machine, eh, ehlen) - Elf *elf; - GElf_Half machine; - Ebl *eh; - size_t ehlen; -{ - /* Check whether the Elf_BH object has a sufficent size. */ - if (ehlen < sizeof (Ebl)) - return 1; - - /* We handle it. */ - if (machine == EM_SPARCV9) - eh->name = "SPARC v9"; - else if (machine == EM_SPARC32PLUS) - eh->name = "SPARC v8+"; - else - eh->name = "SPARC"; - eh->reloc_type_name = sparc_reloc_type_name; - eh->reloc_type_check = sparc_reloc_type_check; - //eh->core_note = sparc_core_note; - eh->destr = sparc_destr; - - return 0; -} diff --git a/libebl/sparc_symbol.c b/libebl/sparc_symbol.c deleted file mode 100644 index eed31d11..00000000 --- a/libebl/sparc_symbol.c +++ /dev/null @@ -1,141 +0,0 @@ -/* SPARC specific symbolic name handling. - Copyright (C) 2002, 2003 Red Hat, Inc. - Written by Jakub Jelinek <jakub@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <stddef.h> - -#include <libebl_sparc.h> - - -/* Return of the backend. */ -const char * -sparc_backend_name (void) -{ - return "sparc"; -} - - -/* Relocation mapping table. */ -static const char *reloc_map_table[] = - { - [R_SPARC_NONE] = "R_SPARC_NONE", - [R_SPARC_8] = "R_SPARC_8", - [R_SPARC_16] = "R_SPARC_16", - [R_SPARC_32] = "R_SPARC_32", - [R_SPARC_DISP8] = "R_SPARC_DISP8", - [R_SPARC_DISP16] = "R_SPARC_DISP16", - [R_SPARC_DISP32] = "R_SPARC_DISP32", - [R_SPARC_WDISP30] = "R_SPARC_WDISP30", - [R_SPARC_WDISP22] = "R_SPARC_WDISP22", - [R_SPARC_HI22] = "R_SPARC_HI22", - [R_SPARC_22] = "R_SPARC_22", - [R_SPARC_13] = "R_SPARC_13", - [R_SPARC_LO10] = "R_SPARC_LO10", - [R_SPARC_GOT10] = "R_SPARC_GOT10", - [R_SPARC_GOT13] = "R_SPARC_GOT13", - [R_SPARC_GOT22] = "R_SPARC_GOT22", - [R_SPARC_PC10] = "R_SPARC_PC10", - [R_SPARC_PC22] = "R_SPARC_PC22", - [R_SPARC_WPLT30] = "R_SPARC_WPLT30", - [R_SPARC_COPY] = "R_SPARC_COPY", - [R_SPARC_GLOB_DAT] = "R_SPARC_GLOB_DAT", - [R_SPARC_JMP_SLOT] = "R_SPARC_JMP_SLOT", - [R_SPARC_RELATIVE] = "R_SPARC_RELATIVE", - [R_SPARC_UA32] = "R_SPARC_UA32", - [R_SPARC_PLT32] = "R_SPARC_PLT32", - [R_SPARC_HIPLT22] = "R_SPARC_HIPLT22", - [R_SPARC_LOPLT10] = "R_SPARC_LOPLT10", - [R_SPARC_PCPLT32] = "R_SPARC_PCPLT32", - [R_SPARC_PCPLT22] = "R_SPARC_PCPLT22", - [R_SPARC_PCPLT10] = "R_SPARC_PCPLT10", - [R_SPARC_10] = "R_SPARC_10", - [R_SPARC_11] = "R_SPARC_11", - [R_SPARC_64] = "R_SPARC_64", - [R_SPARC_OLO10] = "R_SPARC_OLO10", - [R_SPARC_HH22] = "R_SPARC_HH22", - [R_SPARC_HM10] = "R_SPARC_HM10", - [R_SPARC_LM22] = "R_SPARC_LM22", - [R_SPARC_PC_HH22] = "R_SPARC_PC_HH22", - [R_SPARC_PC_HM10] = "R_SPARC_PC_HM10", - [R_SPARC_PC_LM22] = "R_SPARC_PC_LM22", - [R_SPARC_WDISP16] = "R_SPARC_WDISP16", - [R_SPARC_WDISP19] = "R_SPARC_WDISP19", - [R_SPARC_7] = "R_SPARC_7", - [R_SPARC_5] = "R_SPARC_5", - [R_SPARC_6] = "R_SPARC_6", - [R_SPARC_DISP64] = "R_SPARC_DISP64", - [R_SPARC_PLT64] = "R_SPARC_PLT64", - [R_SPARC_HIX22] = "R_SPARC_HIX22", - [R_SPARC_LOX10] = "R_SPARC_LOX10", - [R_SPARC_H44] = "R_SPARC_H44", - [R_SPARC_M44] = "R_SPARC_M44", - [R_SPARC_L44] = "R_SPARC_L44", - [R_SPARC_REGISTER] = "R_SPARC_REGISTER", - [R_SPARC_UA64] = "R_SPARC_UA64", - [R_SPARC_UA16] = "R_SPARC_UA16", - [R_SPARC_TLS_GD_HI22] = "R_SPARC_TLS_GD_HI22", - [R_SPARC_TLS_GD_LO10] = "R_SPARC_TLS_GD_LO10", - [R_SPARC_TLS_GD_ADD] = "R_SPARC_TLS_GD_ADD", - [R_SPARC_TLS_GD_CALL] = "R_SPARC_TLS_GD_CALL", - [R_SPARC_TLS_LDM_HI22] = "R_SPARC_TLS_LDM_HI22", - [R_SPARC_TLS_LDM_LO10] = "R_SPARC_TLS_LDM_LO10", - [R_SPARC_TLS_LDM_ADD] = "R_SPARC_TLS_LDM_ADD", - [R_SPARC_TLS_LDM_CALL] = "R_SPARC_TLS_LDM_CALL", - [R_SPARC_TLS_LDO_HIX22] = "R_SPARC_TLS_LDO_HIX22", - [R_SPARC_TLS_LDO_LOX10] = "R_SPARC_TLS_LDO_LOX10", - [R_SPARC_TLS_LDO_ADD] = "R_SPARC_TLS_LDO_ADD", - [R_SPARC_TLS_IE_HI22] = "R_SPARC_TLS_IE_HI22", - [R_SPARC_TLS_IE_LO10] = "R_SPARC_TLS_IE_LO10", - [R_SPARC_TLS_IE_LD] = "R_SPARC_TLS_IE_LD", - [R_SPARC_TLS_IE_LDX] = "R_SPARC_TLS_IE_LDX", - [R_SPARC_TLS_IE_ADD] = "R_SPARC_TLS_IE_ADD", - [R_SPARC_TLS_LE_HIX22] = "R_SPARC_TLS_LE_HIX22", - [R_SPARC_TLS_LE_LOX10] = "R_SPARC_TLS_LE_LOX10", - [R_SPARC_TLS_DTPMOD32] = "R_SPARC_TLS_DTPMOD32", - [R_SPARC_TLS_DTPMOD64] = "R_SPARC_TLS_DTPMOD64", - [R_SPARC_TLS_DTPOFF32] = "R_SPARC_TLS_DTPOFF32", - [R_SPARC_TLS_DTPOFF64] = "R_SPARC_TLS_DTPOFF64", - [R_SPARC_TLS_TPOFF32] = "R_SPARC_TLS_TPOFF32", - [R_SPARC_TLS_TPOFF64] = "R_SPARC_TLS_TPOFF64" - }; - - -/* Determine relocation type string for sparc. */ -const char * -sparc_reloc_type_name (int type, char *buf, size_t len) -{ - /* High 24 bits of r_type are used for second addend in R_SPARC_OLO10. */ - if ((type & 0xff) == R_SPARC_OLO10) - return reloc_map_table[type & 0xff]; - - if (type < 0 || type >= R_SPARC_NUM) - return NULL; - - return reloc_map_table[type]; -} - - -/* Check for correct relocation type. */ -bool -sparc_reloc_type_check (int type) -{ - if ((type & 0xff) == R_SPARC_OLO10) - return true; - return (type >= R_SPARC_NONE && type < R_SPARC_NUM - && reloc_map_table[type] != NULL) ? true : false; -} diff --git a/libebl/x86_64_destr.c b/libebl/x86_64_destr.c deleted file mode 100644 index 754ccc99..00000000 --- a/libebl/x86_64_destr.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Destructor for x86_64 specific backend library. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libebl_x86_64.h> - - -void -x86_64_destr (bh) - Ebl *bh; -{ - /* Nothing to do so far. */ -} diff --git a/libebl/x86_64_init.c b/libebl/x86_64_init.c deleted file mode 100644 index 5d922059..00000000 --- a/libebl/x86_64_init.c +++ /dev/null @@ -1,42 +0,0 @@ -/* Initialization of x86-64 specific backend library. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libebl_x86_64.h> - - -int -x86_64_init (elf, machine, eh, ehlen) - Elf *elf; - GElf_Half machine; - Ebl *eh; - size_t ehlen; -{ - /* Check whether the Elf_BH object has a sufficent size. */ - if (ehlen < sizeof (Ebl)) - return 1; - - /* We handle it. */ - eh->name = "AMD x86-64"; - eh->reloc_type_name = x86_64_reloc_type_name; - eh->reloc_type_check = x86_64_reloc_type_check; - eh->reloc_valid_use = x86_64_reloc_valid_use; - //eh->core_note = i386_core_note; - eh->destr = x86_64_destr; - - return 0; -} diff --git a/libebl/x86_64_symbol.c b/libebl/x86_64_symbol.c deleted file mode 100644 index b0f53ea9..00000000 --- a/libebl/x86_64_symbol.c +++ /dev/null @@ -1,107 +0,0 @@ -/* x86_64 specific symbolic name handling. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <elf.h> -#include <stddef.h> - -#include <libebl_x86_64.h> - - -/* Return of the backend. */ -const char * -x86_64_backend_name (void) -{ - return "x86-64"; -} - - -/* Relocation mapping table. */ -static struct -{ - const char *name; - enum { both = 0, rel = 1, exec = 2 } appear; -} reloc_map_table[] = - { - [R_X86_64_NONE] = { "R_X86_64_NONE", both }, - [R_X86_64_64] = { "R_X86_64_64", rel }, - [R_X86_64_PC32] = { "R_X86_64_PC32", rel }, - [R_X86_64_GOT32] = { "R_X86_64_GOT32", rel }, - [R_X86_64_PLT32] = { "R_X86_64_PLT32", rel }, - [R_X86_64_COPY] = { "R_X86_64_COPY", exec }, - [R_X86_64_GLOB_DAT] = { "R_X86_64_GLOB_DAT", exec }, - [R_X86_64_JUMP_SLOT] = { "R_X86_64_JUMP_SLOT", exec }, - [R_X86_64_RELATIVE] = { "R_X86_64_RELATIVE", exec }, - [R_X86_64_GOTPCREL] = { "R_X86_64_GOTPCREL", exec }, - [R_X86_64_32] = { "R_X86_64_32", rel }, - [R_X86_64_32S] = { "R_X86_64_32S", rel }, - [R_X86_64_16] = { "R_X86_64_16", rel }, - [R_X86_64_PC16] = { "R_X86_64_PC16", rel }, - [R_X86_64_8] = { "R_X86_64_8", rel }, - [R_X86_64_PC8] = { "R_X86_64_PC8", rel }, - [R_X86_64_DTPMOD64] = { "R_X86_64_DTPMOD64", rel }, - [R_X86_64_DTPOFF64] = { "R_X86_64_DTPOFF64", rel }, - [R_X86_64_TPOFF64] = { "R_X86_64_TPOFF64", rel }, - [R_X86_64_TLSGD] = { "R_X86_64_TLSGD", rel }, - [R_X86_64_TLSLD] = { "R_X86_64_TLSLD", rel }, - [R_X86_64_DTPOFF32] = { "R_X86_64_DTPOFF32", rel }, - [R_X86_64_GOTTPOFF] = { "R_X86_64_GOTTPOFF", rel }, - [R_X86_64_TPOFF32] = { "R_X86_64_TPOFF32", rel } - }; - - -/* Determine relocation type string for x86-64. */ -const char * -x86_64_reloc_type_name (int type, char *buf, size_t len) -{ - if (type < 0 || type >= R_X86_64_NUM) - return NULL; - - return reloc_map_table[type].name; -} - - -/* Check for correct relocation type. */ -bool -x86_64_reloc_type_check (int type) -{ - return (type >= R_X86_64_NONE && type < R_X86_64_NUM - && reloc_map_table[type].name != NULL) ? true : false; -} - - -/* Check for correct relocation type use. */ -bool -x86_64_reloc_valid_use (Elf *elf, int type) -{ - if (type < R_X86_64_NONE || type >= R_X86_64_NUM - || reloc_map_table[type].name == NULL) - return false; - - Elf64_Ehdr *ehdr = elf64_getehdr (elf); - assert (ehdr != NULL); - - if (reloc_map_table[type].appear == rel) - return ehdr->e_type == ET_REL; - - if (reloc_map_table[type].appear == exec) - return ehdr->e_type != ET_REL; - - assert (reloc_map_table[type].appear == both); - return true; -} diff --git a/libelf-po/ChangeLog b/libelf-po/ChangeLog deleted file mode 100644 index 78eb2ff1..00000000 --- a/libelf-po/ChangeLog +++ /dev/null @@ -1,11 +0,0 @@ -2004-01-18 Ulrich Drepper <drepper@redhat.com> - - * Makefile.in.in: Set PACKAGE to libelf. - -2004-01-17 Ulrich Drepper <drepper@redhat.com> - - * Makefile.in.in: Find mkinstalldirs script in right directory. - -2003-08-11 Ulrich Drepper <drepper@redhat.com> - - * Moved to CVS archive. diff --git a/libelf-po/Makefile b/libelf-po/Makefile deleted file mode 100644 index afd56475..00000000 --- a/libelf-po/Makefile +++ /dev/null @@ -1,369 +0,0 @@ -# Makefile for PO directory in any package using GNU gettext. -# Copyright (C) 1995-1997, 2000-2002 by Ulrich Drepper <drepper@gnu.ai.mit.edu> -# -# This file can be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU General Public -# License but which still want to provide support for the GNU gettext -# functionality. -# Please note that the actual code of GNU gettext is covered by the GNU -# General Public License and is *not* in the public domain. - -PACKAGE = libelf -VERSION = 0.97 - -SHELL = /bin/sh - - -srcdir = . -top_srcdir = .. - - -prefix = /work/elfutils/google/linux-install-elfutils-0.97/ -exec_prefix = ${prefix} -datadir = ${prefix}/share -localedir = $(datadir)/locale -gettextsrcdir = $(datadir)/gettext/po -top_builddir = .. - -INSTALL = /usr/bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 -MKINSTALLDIRS = config/mkinstalldirs -mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` - -GMSGFMT = /usr/bin/msgfmt -MSGFMT = /usr/bin/msgfmt -XGETTEXT = /usr/bin/xgettext -MSGMERGE = msgmerge -MSGMERGE_UPDATE = /usr/bin/msgmerge --update -MSGINIT = msginit -MSGCONV = msgconv -MSGFILTER = msgfilter - -POFILES = -GMOFILES = -UPDATEPOFILES = -DUMMYPOFILES = -DISTFILES.common = Makefile.in.in Makevars \ -$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) -DISTFILES = $(DISTFILES.common) POTFILES.in $(DOMAIN).pot \ -$(POFILES) $(GMOFILES) \ -$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) - -POTFILES = \ - ../libelf/elf_error.c - -CATALOGS = - -# Makevars gets inserted here. (Don't remove this line!) -# Makefile variables for PO directory in any package using GNU gettext. - -# Usually the message domain is the same as the package name. -DOMAIN = $(PACKAGE) - -# These two variables depend on the location of this directory. -subdir = po -top_builddir = .. - -# These options get passed to xgettext. -XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ - -# This is the copyright holder that gets inserted into the header of the -# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding -# package. (Note that the msgstr strings, extracted from the package's -# sources, belong to the copyright holder of the package.) Translators are -# expected to transfer the copyright for their translations to this person -# or entity, or to disclaim their copyright. The empty string stands for -# the public domain; in this case the translators are expected to disclaim -# their copyright. -COPYRIGHT_HOLDER = Red Hat, Inc. - -# This is the list of locale categories, beyond LC_MESSAGES, for which the -# message catalogs shall be used. It is usually empty. -EXTRA_LOCALE_CATEGORIES = - -.SUFFIXES: -.SUFFIXES: .po .gmo .mo .nop .po-update - -.po.mo: - $(MSGFMT) -c -o $@ $< - -.po.gmo: - @lang=`echo $* | sed -e 's,.*/,,'`; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ - cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po - - -all: all-yes - -all-yes: $(CATALOGS) -all-no: - -# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', -# otherwise packages like GCC can not be built if only parts of the source -# have been downloaded. - -$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in - $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ - --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ - --files-from=$(srcdir)/POTFILES.in \ - --copyright-holder='$(COPYRIGHT_HOLDER)' \ - && test ! -f $(DOMAIN).po \ - || ( rm -f $(srcdir)/$(DOMAIN).pot \ - && mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot ) - -$(srcdir)/$(DOMAIN).pot: - $(MAKE) $(DOMAIN).pot-update - -$(POFILES): $(srcdir)/$(DOMAIN).pot - @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ - cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot - - -install: install-exec install-data -install-exec: -install-data: install-data-yes - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - for file in $(DISTFILES.common); do \ - $(INSTALL_DATA) $(srcdir)/$$file \ - $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi -install-data-no: all -install-data-yes: all - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ - $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ - echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ - for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ - if test -n "$$lc"; then \ - if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ - link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ - mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ - for file in *; do \ - if test -f $$file; then \ - ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ - fi; \ - done); \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - else \ - if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ - :; \ - else \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - fi; \ - fi; \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ - ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ - cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ - fi; \ - done; \ - done - -install-strip: install - -installdirs: installdirs-exec installdirs-data -installdirs-exec: -installdirs-data: installdirs-data-yes - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - else \ - : ; \ - fi -installdirs-data-no: -installdirs-data-yes: - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ - if test -n "$$lc"; then \ - if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ - link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ - mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ - for file in *; do \ - if test -f $$file; then \ - ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ - fi; \ - done); \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - else \ - if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ - :; \ - else \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - fi; \ - fi; \ - fi; \ - done; \ - done - -# Define this as empty until I found a useful application. -installcheck: - -uninstall: uninstall-exec uninstall-data -uninstall-exec: -uninstall-data: uninstall-data-yes - if test "$(PACKAGE)" = "gettext"; then \ - for file in $(DISTFILES.common); do \ - rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi -uninstall-data-no: -uninstall-data-yes: - catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - done; \ - done - -check: all - -dvi info tags TAGS ID: - -mostlyclean: - rm -f core core.* $(DOMAIN).po *.new.po - rm -fr *.o - -clean: mostlyclean - -distclean: clean - rm -f Makefile Makefile.in POTFILES *.mo - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f $(GMOFILES) - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: - $(MAKE) update-po - @$(MAKE) dist2 -# This is a separate target because 'update-po' must be executed before. -dist2: $(DISTFILES) - dists="$(DISTFILES)"; \ - if test -f $(srcdir)/ChangeLog; then dists="$$dists ChangeLog"; fi; \ - if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ - for file in $$dists; do \ - if test -f $$file; then \ - cp -p $$file $(distdir); \ - else \ - cp -p $(srcdir)/$$file $(distdir); \ - fi; \ - done - -update-po: Makefile - $(MAKE) $(DOMAIN).pot-update - $(MAKE) $(UPDATEPOFILES) - $(MAKE) update-gmo - -# General rule for updating PO files. - -.nop.po-update: - @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \ - tmpdir=`pwd`; \ - echo "$$lang:"; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ - cd $(srcdir); \ - if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ - if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ - rm -f $$tmpdir/$$lang.new.po; \ - else \ - if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ - :; \ - else \ - echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ - exit 1; \ - fi; \ - fi; \ - else \ - echo "msgmerge for $$lang.po failed!" 1>&2; \ - rm -f $$tmpdir/$$lang.new.po; \ - fi - -$(DUMMYPOFILES): - -update-gmo: Makefile $(GMOFILES) - @: - -Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ - $(SHELL) ./config.status - -force: - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: -# Special Makefile rules for English message catalogs with quotation marks. - -DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot - -.SUFFIXES: .insert-header .po-update-en - -en@quot.po-update: en@quot.po-update-en -en@boldquot.po-update: en@boldquot.po-update-en - -.insert-header.po-update-en: - @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ - tmpdir=`pwd`; \ - echo "$$lang:"; \ - ll=`echo $$lang | sed -e 's/@.*//'`; \ - LC_ALL=C; export LC_ALL; \ - cd $(srcdir); \ - if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ - if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ - rm -f $$tmpdir/$$lang.new.po; \ - else \ - if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ - :; \ - else \ - echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ - exit 1; \ - fi; \ - fi; \ - else \ - echo "creation of $$lang.po failed!" 1>&2; \ - rm -f $$tmpdir/$$lang.new.po; \ - fi - -en@quot.insert-header: insert-header.sin - sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header - -en@boldquot.insert-header: insert-header.sin - sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header - -mostlyclean: mostlyclean-quot -mostlyclean-quot: - rm -f *.insert-header diff --git a/libelf-po/Makefile.in b/libelf-po/Makefile.in deleted file mode 100644 index 21eb20d3..00000000 --- a/libelf-po/Makefile.in +++ /dev/null @@ -1,301 +0,0 @@ -# Makefile for PO directory in any package using GNU gettext. -# Copyright (C) 1995-1997, 2000-2002 by Ulrich Drepper <drepper@gnu.ai.mit.edu> -# -# This file can be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU General Public -# License but which still want to provide support for the GNU gettext -# functionality. -# Please note that the actual code of GNU gettext is covered by the GNU -# General Public License and is *not* in the public domain. - -PACKAGE = libelf -VERSION = 0.97 - -SHELL = /bin/sh - - -srcdir = . -top_srcdir = .. - - -prefix = /work/elfutils/google/linux-install-elfutils-0.97/ -exec_prefix = ${prefix} -datadir = ${prefix}/share -localedir = $(datadir)/locale -gettextsrcdir = $(datadir)/gettext/po -top_builddir = .. - -INSTALL = /usr/bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 -MKINSTALLDIRS = config/mkinstalldirs -mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` - -GMSGFMT = /usr/bin/msgfmt -MSGFMT = /usr/bin/msgfmt -XGETTEXT = /usr/bin/xgettext -MSGMERGE = msgmerge -MSGMERGE_UPDATE = /usr/bin/msgmerge --update -MSGINIT = msginit -MSGCONV = msgconv -MSGFILTER = msgfilter - -POFILES = @POFILES@ -GMOFILES = @GMOFILES@ -UPDATEPOFILES = @UPDATEPOFILES@ -DUMMYPOFILES = @DUMMYPOFILES@ -DISTFILES.common = Makefile.in.in Makevars \ -$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) -DISTFILES = $(DISTFILES.common) POTFILES.in $(DOMAIN).pot \ -$(POFILES) $(GMOFILES) \ -$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) - -POTFILES = \ - -CATALOGS = @CATALOGS@ - -# Makevars gets inserted here. (Don't remove this line!) - -.SUFFIXES: -.SUFFIXES: .po .gmo .mo .nop .po-update - -.po.mo: - $(MSGFMT) -c -o $@ $< - -.po.gmo: - @lang=`echo $* | sed -e 's,.*/,,'`; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ - cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po - - -all: all-yes - -all-yes: $(CATALOGS) -all-no: - -# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', -# otherwise packages like GCC can not be built if only parts of the source -# have been downloaded. - -$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in - $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ - --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ - --files-from=$(srcdir)/POTFILES.in \ - --copyright-holder='$(COPYRIGHT_HOLDER)' \ - && test ! -f $(DOMAIN).po \ - || ( rm -f $(srcdir)/$(DOMAIN).pot \ - && mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot ) - -$(srcdir)/$(DOMAIN).pot: - $(MAKE) $(DOMAIN).pot-update - -$(POFILES): $(srcdir)/$(DOMAIN).pot - @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ - cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot - - -install: install-exec install-data -install-exec: -install-data: install-data-yes - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - for file in $(DISTFILES.common); do \ - $(INSTALL_DATA) $(srcdir)/$$file \ - $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi -install-data-no: all -install-data-yes: all - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ - $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ - echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ - for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ - if test -n "$$lc"; then \ - if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ - link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ - mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ - for file in *; do \ - if test -f $$file; then \ - ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ - fi; \ - done); \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - else \ - if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ - :; \ - else \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - fi; \ - fi; \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ - ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ - cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ - fi; \ - done; \ - done - -install-strip: install - -installdirs: installdirs-exec installdirs-data -installdirs-exec: -installdirs-data: installdirs-data-yes - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - else \ - : ; \ - fi -installdirs-data-no: -installdirs-data-yes: - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ - if test -n "$$lc"; then \ - if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ - link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ - mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ - for file in *; do \ - if test -f $$file; then \ - ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ - fi; \ - done); \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - else \ - if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ - :; \ - else \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - fi; \ - fi; \ - fi; \ - done; \ - done - -# Define this as empty until I found a useful application. -installcheck: - -uninstall: uninstall-exec uninstall-data -uninstall-exec: -uninstall-data: uninstall-data-yes - if test "$(PACKAGE)" = "gettext"; then \ - for file in $(DISTFILES.common); do \ - rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi -uninstall-data-no: -uninstall-data-yes: - catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - done; \ - done - -check: all - -dvi info tags TAGS ID: - -mostlyclean: - rm -f core core.* $(DOMAIN).po *.new.po - rm -fr *.o - -clean: mostlyclean - -distclean: clean - rm -f Makefile Makefile.in POTFILES *.mo - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f $(GMOFILES) - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: - $(MAKE) update-po - @$(MAKE) dist2 -# This is a separate target because 'update-po' must be executed before. -dist2: $(DISTFILES) - dists="$(DISTFILES)"; \ - if test -f $(srcdir)/ChangeLog; then dists="$$dists ChangeLog"; fi; \ - if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ - for file in $$dists; do \ - if test -f $$file; then \ - cp -p $$file $(distdir); \ - else \ - cp -p $(srcdir)/$$file $(distdir); \ - fi; \ - done - -update-po: Makefile - $(MAKE) $(DOMAIN).pot-update - $(MAKE) $(UPDATEPOFILES) - $(MAKE) update-gmo - -# General rule for updating PO files. - -.nop.po-update: - @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \ - tmpdir=`pwd`; \ - echo "$$lang:"; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ - cd $(srcdir); \ - if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ - if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ - rm -f $$tmpdir/$$lang.new.po; \ - else \ - if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ - :; \ - else \ - echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ - exit 1; \ - fi; \ - fi; \ - else \ - echo "msgmerge for $$lang.po failed!" 1>&2; \ - rm -f $$tmpdir/$$lang.new.po; \ - fi - -$(DUMMYPOFILES): - -update-gmo: Makefile $(GMOFILES) - @: - -Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ - $(SHELL) ./config.status - -force: - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/libelf-po/Makefile.in.in b/libelf-po/Makefile.in.in deleted file mode 100644 index 4a7a2688..00000000 --- a/libelf-po/Makefile.in.in +++ /dev/null @@ -1,301 +0,0 @@ -# Makefile for PO directory in any package using GNU gettext. -# Copyright (C) 1995-1997, 2000-2002 by Ulrich Drepper <drepper@gnu.ai.mit.edu> -# -# This file can be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU General Public -# License but which still want to provide support for the GNU gettext -# functionality. -# Please note that the actual code of GNU gettext is covered by the GNU -# General Public License and is *not* in the public domain. - -PACKAGE = libelf -VERSION = @VERSION@ - -SHELL = /bin/sh -@SET_MAKE@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ - -prefix = @prefix@ -exec_prefix = @exec_prefix@ -datadir = @datadir@ -localedir = $(datadir)/locale -gettextsrcdir = $(datadir)/gettext/po -top_builddir = .. - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` - -GMSGFMT = @GMSGFMT@ -MSGFMT = @MSGFMT@ -XGETTEXT = @XGETTEXT@ -MSGMERGE = msgmerge -MSGMERGE_UPDATE = @MSGMERGE@ --update -MSGINIT = msginit -MSGCONV = msgconv -MSGFILTER = msgfilter - -POFILES = @POFILES@ -GMOFILES = @GMOFILES@ -UPDATEPOFILES = @UPDATEPOFILES@ -DUMMYPOFILES = @DUMMYPOFILES@ -DISTFILES.common = Makefile.in.in Makevars \ -$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) -DISTFILES = $(DISTFILES.common) POTFILES.in $(DOMAIN).pot \ -$(POFILES) $(GMOFILES) \ -$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) - -POTFILES = \ - -CATALOGS = @CATALOGS@ - -# Makevars gets inserted here. (Don't remove this line!) - -.SUFFIXES: -.SUFFIXES: .po .gmo .mo .nop .po-update - -.po.mo: - $(MSGFMT) -c -o $@ $< - -.po.gmo: - @lang=`echo $* | sed -e 's,.*/,,'`; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ - cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po - - -all: all-@USE_NLS@ - -all-yes: $(CATALOGS) -all-no: - -# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', -# otherwise packages like GCC can not be built if only parts of the source -# have been downloaded. - -$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in - $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ - --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ - --files-from=$(srcdir)/POTFILES.in \ - --copyright-holder='$(COPYRIGHT_HOLDER)' \ - && test ! -f $(DOMAIN).po \ - || ( rm -f $(srcdir)/$(DOMAIN).pot \ - && mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot ) - -$(srcdir)/$(DOMAIN).pot: - $(MAKE) $(DOMAIN).pot-update - -$(POFILES): $(srcdir)/$(DOMAIN).pot - @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ - cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot - - -install: install-exec install-data -install-exec: -install-data: install-data-@USE_NLS@ - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - for file in $(DISTFILES.common); do \ - $(INSTALL_DATA) $(srcdir)/$$file \ - $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi -install-data-no: all -install-data-yes: all - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ - $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ - echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ - for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ - if test -n "$$lc"; then \ - if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ - link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ - mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ - for file in *; do \ - if test -f $$file; then \ - ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ - fi; \ - done); \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - else \ - if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ - :; \ - else \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - fi; \ - fi; \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ - ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ - cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ - fi; \ - done; \ - done - -install-strip: install - -installdirs: installdirs-exec installdirs-data -installdirs-exec: -installdirs-data: installdirs-data-@USE_NLS@ - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - else \ - : ; \ - fi -installdirs-data-no: -installdirs-data-yes: - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ - if test -n "$$lc"; then \ - if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ - link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ - mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ - for file in *; do \ - if test -f $$file; then \ - ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ - fi; \ - done); \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - else \ - if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ - :; \ - else \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - fi; \ - fi; \ - fi; \ - done; \ - done - -# Define this as empty until I found a useful application. -installcheck: - -uninstall: uninstall-exec uninstall-data -uninstall-exec: -uninstall-data: uninstall-data-@USE_NLS@ - if test "$(PACKAGE)" = "gettext"; then \ - for file in $(DISTFILES.common); do \ - rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi -uninstall-data-no: -uninstall-data-yes: - catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - done; \ - done - -check: all - -dvi info tags TAGS ID: - -mostlyclean: - rm -f core core.* $(DOMAIN).po *.new.po - rm -fr *.o - -clean: mostlyclean - -distclean: clean - rm -f Makefile Makefile.in POTFILES *.mo - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f $(GMOFILES) - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: - $(MAKE) update-po - @$(MAKE) dist2 -# This is a separate target because 'update-po' must be executed before. -dist2: $(DISTFILES) - dists="$(DISTFILES)"; \ - if test -f $(srcdir)/ChangeLog; then dists="$$dists ChangeLog"; fi; \ - if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ - for file in $$dists; do \ - if test -f $$file; then \ - cp -p $$file $(distdir); \ - else \ - cp -p $(srcdir)/$$file $(distdir); \ - fi; \ - done - -update-po: Makefile - $(MAKE) $(DOMAIN).pot-update - $(MAKE) $(UPDATEPOFILES) - $(MAKE) update-gmo - -# General rule for updating PO files. - -.nop.po-update: - @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \ - tmpdir=`pwd`; \ - echo "$$lang:"; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ - cd $(srcdir); \ - if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ - if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ - rm -f $$tmpdir/$$lang.new.po; \ - else \ - if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ - :; \ - else \ - echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ - exit 1; \ - fi; \ - fi; \ - else \ - echo "msgmerge for $$lang.po failed!" 1>&2; \ - rm -f $$tmpdir/$$lang.new.po; \ - fi - -$(DUMMYPOFILES): - -update-gmo: Makefile $(GMOFILES) - @: - -Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ - $(SHELL) ./config.status - -force: - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/libelf-po/Makevars b/libelf-po/Makevars deleted file mode 100644 index 0accb70a..00000000 --- a/libelf-po/Makevars +++ /dev/null @@ -1,25 +0,0 @@ -# Makefile variables for PO directory in any package using GNU gettext. - -# Usually the message domain is the same as the package name. -DOMAIN = $(PACKAGE) - -# These two variables depend on the location of this directory. -subdir = po -top_builddir = .. - -# These options get passed to xgettext. -XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ - -# This is the copyright holder that gets inserted into the header of the -# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding -# package. (Note that the msgstr strings, extracted from the package's -# sources, belong to the copyright holder of the package.) Translators are -# expected to transfer the copyright for their translations to this person -# or entity, or to disclaim their copyright. The empty string stands for -# the public domain; in this case the translators are expected to disclaim -# their copyright. -COPYRIGHT_HOLDER = Red Hat, Inc. - -# This is the list of locale categories, beyond LC_MESSAGES, for which the -# message catalogs shall be used. It is usually empty. -EXTRA_LOCALE_CATEGORIES = diff --git a/libelf-po/POTFILES b/libelf-po/POTFILES deleted file mode 100644 index f17f924d..00000000 --- a/libelf-po/POTFILES +++ /dev/null @@ -1 +0,0 @@ - ../libelf/elf_error.c diff --git a/libelf-po/POTFILES.in b/libelf-po/POTFILES.in deleted file mode 100644 index b25620fb..00000000 --- a/libelf-po/POTFILES.in +++ /dev/null @@ -1,5 +0,0 @@ -# List of files which containing translatable strings. -# Copyright (C) 2000 Red Hat, Inc. - -# Library sources -libelf/elf_error.c diff --git a/libelf-po/Rules-quot b/libelf-po/Rules-quot deleted file mode 100644 index 5f46d237..00000000 --- a/libelf-po/Rules-quot +++ /dev/null @@ -1,42 +0,0 @@ -# Special Makefile rules for English message catalogs with quotation marks. - -DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot - -.SUFFIXES: .insert-header .po-update-en - -en@quot.po-update: en@quot.po-update-en -en@boldquot.po-update: en@boldquot.po-update-en - -.insert-header.po-update-en: - @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ - tmpdir=`pwd`; \ - echo "$$lang:"; \ - ll=`echo $$lang | sed -e 's/@.*//'`; \ - LC_ALL=C; export LC_ALL; \ - cd $(srcdir); \ - if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ - if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ - rm -f $$tmpdir/$$lang.new.po; \ - else \ - if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ - :; \ - else \ - echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ - exit 1; \ - fi; \ - fi; \ - else \ - echo "creation of $$lang.po failed!" 1>&2; \ - rm -f $$tmpdir/$$lang.new.po; \ - fi - -en@quot.insert-header: insert-header.sin - sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header - -en@boldquot.insert-header: insert-header.sin - sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header - -mostlyclean: mostlyclean-quot -mostlyclean-quot: - rm -f *.insert-header diff --git a/libelf-po/boldquot.sed b/libelf-po/boldquot.sed deleted file mode 100644 index 4b937aa5..00000000 --- a/libelf-po/boldquot.sed +++ /dev/null @@ -1,10 +0,0 @@ -s/"\([^"]*\)"/“\1”/g -s/`\([^`']*\)'/‘\1’/g -s/ '\([^`']*\)' / ‘\1’ /g -s/ '\([^`']*\)'$/ ‘\1’/g -s/^'\([^`']*\)' /‘\1’ /g -s/“”/""/g -s/“/“[1m/g -s/”/[0m”/g -s/‘/‘[1m/g -s/’/[0m’/g diff --git a/libelf-po/insert-header.sin b/libelf-po/insert-header.sin deleted file mode 100644 index b26de01f..00000000 --- a/libelf-po/insert-header.sin +++ /dev/null @@ -1,23 +0,0 @@ -# Sed script that inserts the file called HEADER before the header entry. -# -# At each occurrence of a line starting with "msgid ", we execute the following -# commands. At the first occurrence, insert the file. At the following -# occurrences, do nothing. The distinction between the first and the following -# occurrences is achieved by looking at the hold space. -/^msgid /{ -x -# Test if the hold space is empty. -s/m/m/ -ta -# Yes it was empty. First occurrence. Read the file. -r HEADER -# Output the file's contents by reading the next line. But don't lose the -# current line while doing this. -g -N -bb -:a -# The hold space was nonempty. Following occurrences. Do nothing. -x -:b -} diff --git a/libelf-po/libelf.pot b/libelf-po/libelf.pot deleted file mode 100644 index dfcd7704..00000000 --- a/libelf-po/libelf.pot +++ /dev/null @@ -1,177 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Red Hat, Inc. -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2004-09-25 12:42-0700\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL@li.org>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: libelf/elf_error.c:80 -msgid "no error" -msgstr "" - -#: libelf/elf_error.c:83 -msgid "unknown error" -msgstr "" - -#: libelf/elf_error.c:87 -msgid "unknown version" -msgstr "" - -#: libelf/elf_error.c:91 -msgid "unknown type" -msgstr "" - -#: libelf/elf_error.c:95 -msgid "invalid `Elf' handle" -msgstr "" - -#: libelf/elf_error.c:99 -msgid "invalid size of source operand" -msgstr "" - -#: libelf/elf_error.c:103 -msgid "invalid size of destination operand" -msgstr "" - -#: libelf/elf_error.c:107 -msgid "invalid encoding" -msgstr "" - -#: libelf/elf_error.c:111 -msgid "out of memory" -msgstr "" - -#: libelf/elf_error.c:115 -msgid "invalid file descriptor" -msgstr "" - -#: libelf/elf_error.c:119 -msgid "invalid operation" -msgstr "" - -#: libelf/elf_error.c:123 -msgid "ELF version not set" -msgstr "" - -#: libelf/elf_error.c:127 libelf/elf_error.c:175 -msgid "invalid command" -msgstr "" - -#: libelf/elf_error.c:131 libelf/elf_error.c:191 -msgid "offset out of range" -msgstr "" - -#: libelf/elf_error.c:135 -msgid "invalid fmag field in archive header" -msgstr "" - -#: libelf/elf_error.c:139 -msgid "invalid archive file" -msgstr "" - -#: libelf/elf_error.c:143 -msgid "descriptor is not for an archive" -msgstr "" - -#: libelf/elf_error.c:147 -msgid "no index available" -msgstr "" - -#: libelf/elf_error.c:151 -msgid "cannot read data from file" -msgstr "" - -#: libelf/elf_error.c:155 -msgid "cannot write data to file" -msgstr "" - -#: libelf/elf_error.c:159 -msgid "invalid binary class" -msgstr "" - -#: libelf/elf_error.c:163 -msgid "invalid section index" -msgstr "" - -#: libelf/elf_error.c:167 -msgid "invalid operand" -msgstr "" - -#: libelf/elf_error.c:171 -msgid "invalid section" -msgstr "" - -#: libelf/elf_error.c:179 -msgid "executable header not created first" -msgstr "" - -#: libelf/elf_error.c:183 -msgid "file descriptor disabled" -msgstr "" - -#: libelf/elf_error.c:187 -msgid "archive/member fildes mismatch" -msgstr "" - -#: libelf/elf_error.c:195 -msgid "cannot manipulate null section" -msgstr "" - -#: libelf/elf_error.c:199 -msgid "data/scn mismatch" -msgstr "" - -#: libelf/elf_error.c:203 -msgid "invalid section header" -msgstr "" - -#: libelf/elf_error.c:207 -msgid "invalid data" -msgstr "" - -#: libelf/elf_error.c:211 -msgid "unknown data encoding" -msgstr "" - -#: libelf/elf_error.c:215 -msgid "section `sh_size' too small for data" -msgstr "" - -#: libelf/elf_error.c:219 -msgid "invalid section alignment" -msgstr "" - -#: libelf/elf_error.c:223 -msgid "invalid section entry size" -msgstr "" - -#: libelf/elf_error.c:227 -msgid "update() for write on read-only file" -msgstr "" - -#: libelf/elf_error.c:231 -msgid "no such file" -msgstr "" - -#: libelf/elf_error.c:235 -msgid "only relocatable files can contain section groups" -msgstr "" - -#: libelf/elf_error.c:240 -msgid "program header only allowed in executables and shared objects" -msgstr "" - -#: libelf/elf_error.c:245 -msgid "file has no program header" -msgstr "" diff --git a/libelf-po/quot.sed b/libelf-po/quot.sed deleted file mode 100644 index 0122c463..00000000 --- a/libelf-po/quot.sed +++ /dev/null @@ -1,6 +0,0 @@ -s/"\([^"]*\)"/“\1”/g -s/`\([^`']*\)'/‘\1’/g -s/ '\([^`']*\)' / ‘\1’ /g -s/ '\([^`']*\)'$/ ‘\1’/g -s/^'\([^`']*\)' /‘\1’ /g -s/“”/""/g diff --git a/libelf/ChangeLog b/libelf/ChangeLog deleted file mode 100644 index a92c1915..00000000 --- a/libelf/ChangeLog +++ /dev/null @@ -1,62 +0,0 @@ -2004-09-25 Ulrich Drepper <drepper@redhat.com> - - * elf32_checksum.c: Make compile with gcc 4.0. - * elf32_updatefile.c: Likewise. - * elf32_updatenull.c: Likewise. - * elf_begin.c: Likewise. - * elf_error.c: Likewise. - * elf_getdata.c: Likewise. - * elf_getident.c: Likewise. - -2004-04-01 Ulrich Drepper <drepper@redhat.com> - - * elf.h: Update from glibc. - -2004-01-23 Ulrich Drepper <drepper@redhat.com> - - * elf_update.c: Fix locking. - * elf_clone.c: Likewise. - - * libelf.h: Define ELF_T_LIB. - * gelf_getlib.c: New file. - * gelf_update_lib.c: New file. - * gelf.h: Declare the new functions. Define GElf_Lib. - * abstract.h: Define Lib, Lib32, Lib64. - * gelf_xlate.c (__elf_xfctstom): Add ELF_T_LIB entry. - * gelf_xlate.h: Add entry for ElfXX_Lib. - * elf_getdata.c: Recognize SHT_GNU_LIBLIST as a known section type. - * libelf.map: Add new symbols to ELFUTILS_1.1. - * Makefile.am (libelf_a_SOURCES): Add gelf_getlib.c and - gelf_update_lib.c. - -2004-01-17 Ulrich Drepper <drepper@redhat.com> - - * Makefile.am: Support building with mudflap. - - * gelf_xlate.c (INLINE3): Avoid using cast as lvalue. - * dl-hash.h (_dl_elf_hash): Likewise. - -2004-01-05 Ulrich Drepper <drepper@redhat.com> - - * elf-knowledge.h: New file. From libelf subdir. - * Makefile.am (euincludedir): Define. - (euinclude_HEADERS): Add elf-knowledge.h. - -2003-09-24 Ulrich Drepper <drepper@redhat.com> - - * elf.h: Define some PT_IA_64_HP_* constants. - -2003-09-23 Jakub Jelinek <jakub@redhat.com> - - * libelfP.h (struct Elf): Move state.elf64.sizestr_offset after - state.elf64.scnincr to match state.elf{,32}. - -2003-08-12 Ulrich Drepper <drepper@redhat.com> - - * elf32_updatefile.c (__updatemmap): When writing back file where - some sections have not been read in, count their sizes based on - the section header. - -2003-08-11 Ulrich Drepper <drepper@redhat.com> - - * Moved to CVS archive. diff --git a/libelf/Makefile b/libelf/Makefile deleted file mode 100644 index 064e57bd..00000000 --- a/libelf/Makefile +++ /dev/null @@ -1,758 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# libelf/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - - - -SOURCES = $(libelf_a_SOURCES) $(libelf_pic_a_SOURCES) $(libelf_so_SOURCES) - -srcdir = . -top_srcdir = .. - -pkgdatadir = $(datadir)/elfutils -pkglibdir = $(libdir)/elfutils -pkgincludedir = $(includedir)/elfutils -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = /usr/bin/install -c -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = i686-pc-linux-gnu -host_triplet = i686-pc-linux-gnu -noinst_PROGRAMS = $(am__EXEEXT_1) -#am_libelf_pic_a_OBJECTS = -subdir = libelf -DIST_COMMON = $(euinclude_HEADERS) $(include_HEADERS) \ - $(noinst_HEADERS) $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - ChangeLog -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(euincludedir)" \ - "$(DESTDIR)$(includedir)" -libLIBRARIES_INSTALL = $(INSTALL_DATA) -LIBRARIES = $(lib_LIBRARIES) $(noinst_LIBRARIES) -AR = ar -ARFLAGS = cru -libelf_a_AR = $(AR) $(ARFLAGS) -libelf_a_LIBADD = -am_libelf_a_OBJECTS = elf_version.$(OBJEXT) elf_hash.$(OBJEXT) \ - elf_error.$(OBJEXT) elf_fill.$(OBJEXT) elf_begin.$(OBJEXT) \ - elf_next.$(OBJEXT) elf_rand.$(OBJEXT) elf_end.$(OBJEXT) \ - elf_kind.$(OBJEXT) gelf_getclass.$(OBJEXT) \ - elf_getbase.$(OBJEXT) elf_getident.$(OBJEXT) \ - elf32_fsize.$(OBJEXT) elf64_fsize.$(OBJEXT) \ - gelf_fsize.$(OBJEXT) elf32_xlatetof.$(OBJEXT) \ - elf32_xlatetom.$(OBJEXT) elf64_xlatetof.$(OBJEXT) \ - elf64_xlatetom.$(OBJEXT) gelf_xlate.$(OBJEXT) \ - elf32_getehdr.$(OBJEXT) elf64_getehdr.$(OBJEXT) \ - gelf_getehdr.$(OBJEXT) elf32_newehdr.$(OBJEXT) \ - elf64_newehdr.$(OBJEXT) gelf_newehdr.$(OBJEXT) \ - gelf_update_ehdr.$(OBJEXT) elf32_getphdr.$(OBJEXT) \ - elf64_getphdr.$(OBJEXT) gelf_getphdr.$(OBJEXT) \ - elf32_newphdr.$(OBJEXT) elf64_newphdr.$(OBJEXT) \ - gelf_newphdr.$(OBJEXT) gelf_update_phdr.$(OBJEXT) \ - elf_getarhdr.$(OBJEXT) elf_getarsym.$(OBJEXT) \ - elf_rawfile.$(OBJEXT) elf_readall.$(OBJEXT) elf_cntl.$(OBJEXT) \ - elf_getscn.$(OBJEXT) elf_nextscn.$(OBJEXT) \ - elf_ndxscn.$(OBJEXT) elf_newscn.$(OBJEXT) \ - elf32_getshdr.$(OBJEXT) elf64_getshdr.$(OBJEXT) \ - gelf_getshdr.$(OBJEXT) gelf_update_shdr.$(OBJEXT) \ - elf_strptr.$(OBJEXT) elf_rawdata.$(OBJEXT) \ - elf_getdata.$(OBJEXT) elf_newdata.$(OBJEXT) \ - elf_flagelf.$(OBJEXT) elf_flagehdr.$(OBJEXT) \ - elf_flagphdr.$(OBJEXT) elf_flagscn.$(OBJEXT) \ - elf_flagshdr.$(OBJEXT) elf_flagdata.$(OBJEXT) \ - elf_memory.$(OBJEXT) elf_update.$(OBJEXT) \ - elf32_updatenull.$(OBJEXT) elf64_updatenull.$(OBJEXT) \ - elf32_updatefile.$(OBJEXT) elf64_updatefile.$(OBJEXT) \ - gelf_getsym.$(OBJEXT) gelf_update_sym.$(OBJEXT) \ - gelf_getversym.$(OBJEXT) gelf_getverneed.$(OBJEXT) \ - gelf_getvernaux.$(OBJEXT) gelf_getverdef.$(OBJEXT) \ - gelf_getverdaux.$(OBJEXT) gelf_getrel.$(OBJEXT) \ - gelf_getrela.$(OBJEXT) gelf_update_rel.$(OBJEXT) \ - gelf_update_rela.$(OBJEXT) gelf_getdyn.$(OBJEXT) \ - gelf_update_dyn.$(OBJEXT) gelf_getmove.$(OBJEXT) \ - gelf_update_move.$(OBJEXT) gelf_getsyminfo.$(OBJEXT) \ - gelf_update_syminfo.$(OBJEXT) gelf_xlatetof.$(OBJEXT) \ - gelf_xlatetom.$(OBJEXT) nlist.$(OBJEXT) \ - gelf_getsymshndx.$(OBJEXT) gelf_update_symshndx.$(OBJEXT) \ - gelf_update_versym.$(OBJEXT) gelf_update_verneed.$(OBJEXT) \ - gelf_update_vernaux.$(OBJEXT) gelf_update_verdef.$(OBJEXT) \ - gelf_update_verdaux.$(OBJEXT) elf_getshnum.$(OBJEXT) \ - elf_getshstrndx.$(OBJEXT) gelf_checksum.$(OBJEXT) \ - elf32_checksum.$(OBJEXT) elf64_checksum.$(OBJEXT) \ - gelf_rawchunk.$(OBJEXT) gelf_freechunk.$(OBJEXT) \ - libelf_crc32.$(OBJEXT) libelf_next_prime.$(OBJEXT) \ - elf_clone.$(OBJEXT) gelf_getlib.$(OBJEXT) \ - gelf_update_lib.$(OBJEXT) -libelf_a_OBJECTS = $(am_libelf_a_OBJECTS) -libelf_pic_a_AR = $(AR) $(ARFLAGS) -libelf_pic_a_LIBADD = -libelf_pic_a_OBJECTS = $(am_libelf_pic_a_OBJECTS) -am__EXEEXT_1 = libelf.so$(EXEEXT) -PROGRAMS = $(noinst_PROGRAMS) -am_libelf_so_OBJECTS = -libelf_so_OBJECTS = $(am_libelf_so_OBJECTS) -libelf_so_LDADD = $(LDADD) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(libelf_a_SOURCES) $(libelf_pic_a_SOURCES) \ - $(libelf_so_SOURCES) -DIST_SOURCES = $(libelf_a_SOURCES) $(libelf_pic_a_SOURCES) \ - $(libelf_so_SOURCES) -euincludeHEADERS_INSTALL = $(INSTALL_HEADER) -includeHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(euinclude_HEADERS) $(include_HEADERS) $(noinst_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run aclocal-1.9 -AMDEP_FALSE = # -AMDEP_TRUE = -AMTAR = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run tar -AUTOCONF = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoconf -AUTOHEADER = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoheader -AUTOMAKE = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run automake-1.9 -AWK = gawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -CPP = gcc -E -CPPFLAGS = -CYGPATH_W = echo -DATADIRNAME = ${prefix}/share -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DEPDIR = .deps -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = grep -E -EXEEXT = -GMSGFMT = /usr/bin/msgfmt -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s -INTLLIBS = -LDFLAGS = -LEX = flex -LEXLIB = -lfl -LEX_OUTPUT_ROOT = lex.yy -LIBICONV = -liconv -LIBINTL = -LIBOBJS = -LIBS = -LOCALEDIR = ${prefix}/share -LTLIBICONV = -liconv -LTLIBINTL = -LTLIBOBJS = -MAKEINFO = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run makeinfo -MKINSTALLDIRS = config/mkinstalldirs -MSGFMT = /usr/bin/msgfmt -MSGMERGE = /usr/bin/msgmerge -MUDFLAP_FALSE = -MUDFLAP_TRUE = # -NATIVE_LD_FALSE = -NATIVE_LD_TRUE = # -OBJEXT = o -PACKAGE = elfutils -PACKAGE_BUGREPORT = http://bugzilla.redhat.com/bugzilla/ -PACKAGE_NAME = Red Hat elfutils -PACKAGE_STRING = Red Hat elfutils 0.97 -PACKAGE_TARNAME = elfutils -PACKAGE_VERSION = 0.97 -PATH_SEPARATOR = : -POSUB = po -RANLIB = ranlib -SET_MAKE = -SHELL = /bin/sh -STRIP = -USE_NLS = yes -VERSION = 1 -XGETTEXT = /usr/bin/xgettext -YACC = bison -y -ac_ct_CC = gcc -ac_ct_RANLIB = ranlib -ac_ct_STRIP = -am__fastdepCC_FALSE = # -am__fastdepCC_TRUE = -am__include = include -am__leading_dot = . -am__quote = -am__tar = ${AMTAR} chof - "$$tardir" -am__untar = ${AMTAR} xf - -base_cpu = none -bindir = ${exec_prefix}/bin -build = i686-pc-linux-gnu -build_alias = -build_cpu = i686 -build_os = linux-gnu -build_vendor = pc -datadir = ${prefix}/share -exec_prefix = ${prefix} -host = i686-pc-linux-gnu -host_alias = -host_cpu = i686 -host_os = linux-gnu -host_vendor = pc -includedir = ${prefix}/include -infodir = ${prefix}/info -install_sh = /work/elfutils/stock/elfutils-0.97/config/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localstatedir = ${prefix}/var -mandir = ${prefix}/man -mkdir_p = mkdir -p -- -oldincludedir = /usr/include -prefix = /work/elfutils/google/linux-install-elfutils-0.97/ -program_transform_name = s,x,x, -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -sysconfdir = ${prefix}/etc -target_alias = -AM_CFLAGS = -Wall -Werror -Wshadow -# XXX gcc has a bug in that it generates warnings for internal symbols. -# XXX Remove the conditional when gcc is fxied. -#AM_CFLAGS = -Wall -Wshadow -INCLUDES = -I$(srcdir) -I$(top_srcdir)/lib -I.. -GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include) -LINT = splint -lib_LIBRARIES = libelf.a -noinst_LIBRARIES = libelf_pic.a -include_HEADERS = libelf.h gelf.h nlist.h -euincludedir = $(includedir)/elfutils -euinclude_HEADERS = elf-knowledge.h -libelf_a_SOURCES = elf_version.c elf_hash.c elf_error.c elf_fill.c \ - elf_begin.c elf_next.c elf_rand.c elf_end.c elf_kind.c \ - gelf_getclass.c elf_getbase.c elf_getident.c \ - elf32_fsize.c elf64_fsize.c gelf_fsize.c \ - elf32_xlatetof.c elf32_xlatetom.c elf64_xlatetof.c \ - elf64_xlatetom.c gelf_xlate.c \ - elf32_getehdr.c elf64_getehdr.c gelf_getehdr.c \ - elf32_newehdr.c elf64_newehdr.c gelf_newehdr.c \ - gelf_update_ehdr.c \ - elf32_getphdr.c elf64_getphdr.c gelf_getphdr.c \ - elf32_newphdr.c elf64_newphdr.c gelf_newphdr.c \ - gelf_update_phdr.c \ - elf_getarhdr.c elf_getarsym.c \ - elf_rawfile.c elf_readall.c elf_cntl.c \ - elf_getscn.c elf_nextscn.c elf_ndxscn.c elf_newscn.c \ - elf32_getshdr.c elf64_getshdr.c gelf_getshdr.c \ - gelf_update_shdr.c \ - elf_strptr.c elf_rawdata.c elf_getdata.c elf_newdata.c \ - elf_flagelf.c elf_flagehdr.c elf_flagphdr.c elf_flagscn.c \ - elf_flagshdr.c elf_flagdata.c elf_memory.c \ - elf_update.c elf32_updatenull.c elf64_updatenull.c \ - elf32_updatefile.c elf64_updatefile.c \ - gelf_getsym.c gelf_update_sym.c \ - gelf_getversym.c gelf_getverneed.c gelf_getvernaux.c \ - gelf_getverdef.c gelf_getverdaux.c \ - gelf_getrel.c gelf_getrela.c \ - gelf_update_rel.c gelf_update_rela.c \ - gelf_getdyn.c gelf_update_dyn.c \ - gelf_getmove.c gelf_update_move.c \ - gelf_getsyminfo.c gelf_update_syminfo.c \ - gelf_xlatetof.c gelf_xlatetom.c \ - nlist.c \ - gelf_getsymshndx.c gelf_update_symshndx.c \ - gelf_update_versym.c gelf_update_verneed.c \ - gelf_update_vernaux.c gelf_update_verdef.c \ - gelf_update_verdaux.c \ - elf_getshnum.c elf_getshstrndx.c \ - gelf_checksum.c elf32_checksum.c elf64_checksum.c \ - gelf_rawchunk.c gelf_freechunk.c \ - libelf_crc32.c libelf_next_prime.c \ - elf_clone.c \ - gelf_getlib.c gelf_update_lib.c - -libelf_pic_a_SOURCES = -am_libelf_pic_a_OBJECTS = $(libelf_a_SOURCES:.c=.os) -libelf_so_SOURCES = -noinst_HEADERS = elf.h abstract.h common.h exttypes.h gelf_xlate.h libelfP.h \ - version_xlate.h dl-hash.h - -EXTRA_DIST = libelf.map -CLEANFILES = $(am_libelf_pic_a_OBJECTS) -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits libelf/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits libelf/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -install-libLIBRARIES: $(lib_LIBRARIES) - @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - f=$(am__strip_dir) \ - echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ - $(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ - else :; fi; \ - done - @$(POST_INSTALL) - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - p=$(am__strip_dir) \ - echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \ - $(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \ - else :; fi; \ - done - -uninstall-libLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - p=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \ - rm -f "$(DESTDIR)$(libdir)/$$p"; \ - done - -clean-libLIBRARIES: - -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libelf.a: $(libelf_a_OBJECTS) $(libelf_a_DEPENDENCIES) - -rm -f libelf.a - $(libelf_a_AR) libelf.a $(libelf_a_OBJECTS) $(libelf_a_LIBADD) - $(RANLIB) libelf.a -libelf_pic.a: $(libelf_pic_a_OBJECTS) $(libelf_pic_a_DEPENDENCIES) - -rm -f libelf_pic.a - $(libelf_pic_a_AR) libelf_pic.a $(libelf_pic_a_OBJECTS) $(libelf_pic_a_LIBADD) - $(RANLIB) libelf_pic.a - -clean-noinstPROGRAMS: - -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) -#libelf.so$(EXEEXT): $(libelf_so_OBJECTS) $(libelf_so_DEPENDENCIES) -# @rm -f libelf.so$(EXEEXT) -# $(LINK) $(libelf_so_LDFLAGS) $(libelf_so_OBJECTS) $(libelf_so_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -include ./$(DEPDIR)/elf32_checksum.Po -include ./$(DEPDIR)/elf32_fsize.Po -include ./$(DEPDIR)/elf32_getehdr.Po -include ./$(DEPDIR)/elf32_getphdr.Po -include ./$(DEPDIR)/elf32_getshdr.Po -include ./$(DEPDIR)/elf32_newehdr.Po -include ./$(DEPDIR)/elf32_newphdr.Po -include ./$(DEPDIR)/elf32_updatefile.Po -include ./$(DEPDIR)/elf32_updatenull.Po -include ./$(DEPDIR)/elf32_xlatetof.Po -include ./$(DEPDIR)/elf32_xlatetom.Po -include ./$(DEPDIR)/elf64_checksum.Po -include ./$(DEPDIR)/elf64_fsize.Po -include ./$(DEPDIR)/elf64_getehdr.Po -include ./$(DEPDIR)/elf64_getphdr.Po -include ./$(DEPDIR)/elf64_getshdr.Po -include ./$(DEPDIR)/elf64_newehdr.Po -include ./$(DEPDIR)/elf64_newphdr.Po -include ./$(DEPDIR)/elf64_updatefile.Po -include ./$(DEPDIR)/elf64_updatenull.Po -include ./$(DEPDIR)/elf64_xlatetof.Po -include ./$(DEPDIR)/elf64_xlatetom.Po -include ./$(DEPDIR)/elf_begin.Po -include ./$(DEPDIR)/elf_clone.Po -include ./$(DEPDIR)/elf_cntl.Po -include ./$(DEPDIR)/elf_end.Po -include ./$(DEPDIR)/elf_error.Po -include ./$(DEPDIR)/elf_fill.Po -include ./$(DEPDIR)/elf_flagdata.Po -include ./$(DEPDIR)/elf_flagehdr.Po -include ./$(DEPDIR)/elf_flagelf.Po -include ./$(DEPDIR)/elf_flagphdr.Po -include ./$(DEPDIR)/elf_flagscn.Po -include ./$(DEPDIR)/elf_flagshdr.Po -include ./$(DEPDIR)/elf_getarhdr.Po -include ./$(DEPDIR)/elf_getarsym.Po -include ./$(DEPDIR)/elf_getbase.Po -include ./$(DEPDIR)/elf_getdata.Po -include ./$(DEPDIR)/elf_getident.Po -include ./$(DEPDIR)/elf_getscn.Po -include ./$(DEPDIR)/elf_getshnum.Po -include ./$(DEPDIR)/elf_getshstrndx.Po -include ./$(DEPDIR)/elf_hash.Po -include ./$(DEPDIR)/elf_kind.Po -include ./$(DEPDIR)/elf_memory.Po -include ./$(DEPDIR)/elf_ndxscn.Po -include ./$(DEPDIR)/elf_newdata.Po -include ./$(DEPDIR)/elf_newscn.Po -include ./$(DEPDIR)/elf_next.Po -include ./$(DEPDIR)/elf_nextscn.Po -include ./$(DEPDIR)/elf_rand.Po -include ./$(DEPDIR)/elf_rawdata.Po -include ./$(DEPDIR)/elf_rawfile.Po -include ./$(DEPDIR)/elf_readall.Po -include ./$(DEPDIR)/elf_strptr.Po -include ./$(DEPDIR)/elf_update.Po -include ./$(DEPDIR)/elf_version.Po -include ./$(DEPDIR)/gelf_checksum.Po -include ./$(DEPDIR)/gelf_freechunk.Po -include ./$(DEPDIR)/gelf_fsize.Po -include ./$(DEPDIR)/gelf_getclass.Po -include ./$(DEPDIR)/gelf_getdyn.Po -include ./$(DEPDIR)/gelf_getehdr.Po -include ./$(DEPDIR)/gelf_getlib.Po -include ./$(DEPDIR)/gelf_getmove.Po -include ./$(DEPDIR)/gelf_getphdr.Po -include ./$(DEPDIR)/gelf_getrel.Po -include ./$(DEPDIR)/gelf_getrela.Po -include ./$(DEPDIR)/gelf_getshdr.Po -include ./$(DEPDIR)/gelf_getsym.Po -include ./$(DEPDIR)/gelf_getsyminfo.Po -include ./$(DEPDIR)/gelf_getsymshndx.Po -include ./$(DEPDIR)/gelf_getverdaux.Po -include ./$(DEPDIR)/gelf_getverdef.Po -include ./$(DEPDIR)/gelf_getvernaux.Po -include ./$(DEPDIR)/gelf_getverneed.Po -include ./$(DEPDIR)/gelf_getversym.Po -include ./$(DEPDIR)/gelf_newehdr.Po -include ./$(DEPDIR)/gelf_newphdr.Po -include ./$(DEPDIR)/gelf_rawchunk.Po -include ./$(DEPDIR)/gelf_update_dyn.Po -include ./$(DEPDIR)/gelf_update_ehdr.Po -include ./$(DEPDIR)/gelf_update_lib.Po -include ./$(DEPDIR)/gelf_update_move.Po -include ./$(DEPDIR)/gelf_update_phdr.Po -include ./$(DEPDIR)/gelf_update_rel.Po -include ./$(DEPDIR)/gelf_update_rela.Po -include ./$(DEPDIR)/gelf_update_shdr.Po -include ./$(DEPDIR)/gelf_update_sym.Po -include ./$(DEPDIR)/gelf_update_syminfo.Po -include ./$(DEPDIR)/gelf_update_symshndx.Po -include ./$(DEPDIR)/gelf_update_verdaux.Po -include ./$(DEPDIR)/gelf_update_verdef.Po -include ./$(DEPDIR)/gelf_update_vernaux.Po -include ./$(DEPDIR)/gelf_update_verneed.Po -include ./$(DEPDIR)/gelf_update_versym.Po -include ./$(DEPDIR)/gelf_xlate.Po -include ./$(DEPDIR)/gelf_xlatetof.Po -include ./$(DEPDIR)/gelf_xlatetom.Po -include ./$(DEPDIR)/libelf_crc32.Po -include ./$(DEPDIR)/libelf_next_prime.Po -include ./$(DEPDIR)/nlist.Po - -.c.o: - if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ - then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c $< - -.c.obj: - if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ - then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c `$(CYGPATH_W) '$<'` -uninstall-info-am: -install-euincludeHEADERS: $(euinclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(euincludedir)" || $(mkdir_p) "$(DESTDIR)$(euincludedir)" - @list='$(euinclude_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(euincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(euincludedir)/$$f'"; \ - $(euincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(euincludedir)/$$f"; \ - done - -uninstall-euincludeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(euinclude_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(euincludedir)/$$f'"; \ - rm -f "$(DESTDIR)$(euincludedir)/$$f"; \ - done -install-includeHEADERS: $(include_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(includedir)" || $(mkdir_p) "$(DESTDIR)$(includedir)" - @list='$(include_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \ - $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \ - done - -uninstall-includeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(include_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \ - rm -f "$(DESTDIR)$(includedir)/$$f"; \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(euincludedir)" "$(DESTDIR)$(includedir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ - done -#install: install-am -install-exec: install-exec-am -install-data: install-data-am -#uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libLIBRARIES clean-noinstLIBRARIES \ - clean-noinstPROGRAMS mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-euincludeHEADERS install-includeHEADERS - -install-exec-am: install-libLIBRARIES - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-euincludeHEADERS uninstall-includeHEADERS \ - uninstall-info-am uninstall-libLIBRARIES - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libLIBRARIES clean-noinstLIBRARIES clean-noinstPROGRAMS \ - ctags distclean distclean-compile distclean-generic \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am \ - install-euincludeHEADERS install-exec install-exec-am \ - install-includeHEADERS install-info install-info-am \ - install-libLIBRARIES install-man install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-euincludeHEADERS \ - uninstall-includeHEADERS uninstall-info-am \ - uninstall-libLIBRARIES - -libelf.so: libelf_pic.a libelf.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libelf.map,--no-undefined \ - -Wl,--soname,$@.$(VERSION),-z-defs - ln -fs $@ $@.$(VERSION) - -%.os: %.c %.o - if $(COMPILE) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \ - -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \ - then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \ - rm -f "$(DEPDIR)/$*.Tpo"; \ - else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ - fi - -install: install-am libelf.so - $(mkinstalldirs) $(DESTDIR)$(libdir) - $(INSTALL_PROGRAM) libelf.so $(DESTDIR)$(libdir)/libelf-$(PACKAGE_VERSION).so - ln -fs libelf-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/libelf.so.$(VERSION) - ln -fs libelf.so.$(VERSION) $(DESTDIR)$(libdir)/libelf.so - -uninstall: uninstall-am - rm -f $(DESTDIR)$(libdir)/libelf-$(PACKAGE_VERSION).so - rm -f $(DESTDIR)$(libdir)/libelf.so.$(VERSION) - rm -f $(DESTDIR)$(libdir)/libelf.so - -.PSEUDO: lint -lint: - $(LINT) $(DEFS) $(INCLUDES) $(GCC_INCLUDE) -f $(top_srcdir)/splint.rc \ - $(addprefix $(srcdir)/,$(libelf_a_SOURCES)) -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/libelf/Makefile.am b/libelf/Makefile.am deleted file mode 100644 index 3481858e..00000000 --- a/libelf/Makefile.am +++ /dev/null @@ -1,127 +0,0 @@ -## Process this file with automake to create Makefile.in -## Configure input file for elfutils. -## -## Copyright (C) 1996-2001, 2002, 2003, 2004 Red Hat, Inc. -## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation, version 2. -## -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software Foundation, -## Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -## -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -# XXX gcc has a bug in that it generates warnings for internal symbols. -# XXX Remove the conditional when gcc is fxied. -if MUDFLAP -AM_CFLAGS = -Wall -Wshadow -else -AM_CFLAGS = -Wall -Werror -Wshadow -endif -INCLUDES = -I$(srcdir) -I$(top_srcdir)/lib -I.. -GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include) -VERSION = 1 -PACKAGE_VERSION = @PACKAGE_VERSION@ - -LINT = splint - -lib_LIBRARIES = libelf.a -if !MUDFLAP -noinst_LIBRARIES = libelf_pic.a -noinst_PROGRAMS = $(noinst_LIBRARIES:_pic.a=.so) -endif -include_HEADERS = libelf.h gelf.h nlist.h - -euincludedir = $(includedir)/elfutils -euinclude_HEADERS = elf-knowledge.h - -libelf_a_SOURCES = elf_version.c elf_hash.c elf_error.c elf_fill.c \ - elf_begin.c elf_next.c elf_rand.c elf_end.c elf_kind.c \ - gelf_getclass.c elf_getbase.c elf_getident.c \ - elf32_fsize.c elf64_fsize.c gelf_fsize.c \ - elf32_xlatetof.c elf32_xlatetom.c elf64_xlatetof.c \ - elf64_xlatetom.c gelf_xlate.c \ - elf32_getehdr.c elf64_getehdr.c gelf_getehdr.c \ - elf32_newehdr.c elf64_newehdr.c gelf_newehdr.c \ - gelf_update_ehdr.c \ - elf32_getphdr.c elf64_getphdr.c gelf_getphdr.c \ - elf32_newphdr.c elf64_newphdr.c gelf_newphdr.c \ - gelf_update_phdr.c \ - elf_getarhdr.c elf_getarsym.c \ - elf_rawfile.c elf_readall.c elf_cntl.c \ - elf_getscn.c elf_nextscn.c elf_ndxscn.c elf_newscn.c \ - elf32_getshdr.c elf64_getshdr.c gelf_getshdr.c \ - gelf_update_shdr.c \ - elf_strptr.c elf_rawdata.c elf_getdata.c elf_newdata.c \ - elf_flagelf.c elf_flagehdr.c elf_flagphdr.c elf_flagscn.c \ - elf_flagshdr.c elf_flagdata.c elf_memory.c \ - elf_update.c elf32_updatenull.c elf64_updatenull.c \ - elf32_updatefile.c elf64_updatefile.c \ - gelf_getsym.c gelf_update_sym.c \ - gelf_getversym.c gelf_getverneed.c gelf_getvernaux.c \ - gelf_getverdef.c gelf_getverdaux.c \ - gelf_getrel.c gelf_getrela.c \ - gelf_update_rel.c gelf_update_rela.c \ - gelf_getdyn.c gelf_update_dyn.c \ - gelf_getmove.c gelf_update_move.c \ - gelf_getsyminfo.c gelf_update_syminfo.c \ - gelf_xlatetof.c gelf_xlatetom.c \ - nlist.c \ - gelf_getsymshndx.c gelf_update_symshndx.c \ - gelf_update_versym.c gelf_update_verneed.c \ - gelf_update_vernaux.c gelf_update_verdef.c \ - gelf_update_verdaux.c \ - elf_getshnum.c elf_getshstrndx.c \ - gelf_checksum.c elf32_checksum.c elf64_checksum.c \ - gelf_rawchunk.c gelf_freechunk.c \ - libelf_crc32.c libelf_next_prime.c \ - elf_clone.c \ - gelf_getlib.c gelf_update_lib.c - -if !MUDFLAP -libelf_pic_a_SOURCES = -am_libelf_pic_a_OBJECTS = $(libelf_a_SOURCES:.c=.os) - -libelf_so_SOURCES = -libelf.so: libelf_pic.a libelf.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - -Wl,--version-script,$(srcdir)/libelf.map,--no-undefined \ - -Wl,--soname,$@.$(VERSION),-z-defs - ln -fs $@ $@.$(VERSION) - -%.os: %.c %.o - if $(COMPILE) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \ - -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \ - then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \ - rm -f "$(DEPDIR)/$*.Tpo"; \ - else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ - fi - -install: install-am libelf.so - $(mkinstalldirs) $(DESTDIR)$(libdir) - $(INSTALL_PROGRAM) libelf.so $(DESTDIR)$(libdir)/libelf-$(PACKAGE_VERSION).so - ln -fs libelf-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/libelf.so.$(VERSION) - ln -fs libelf.so.$(VERSION) $(DESTDIR)$(libdir)/libelf.so - -uninstall: uninstall-am - rm -f $(DESTDIR)$(libdir)/libelf-$(PACKAGE_VERSION).so - rm -f $(DESTDIR)$(libdir)/libelf.so.$(VERSION) - rm -f $(DESTDIR)$(libdir)/libelf.so -endif - -.PSEUDO: lint -lint: - $(LINT) $(DEFS) $(INCLUDES) $(GCC_INCLUDE) -f $(top_srcdir)/splint.rc \ - $(addprefix $(srcdir)/,$(libelf_a_SOURCES)) - -noinst_HEADERS = elf.h abstract.h common.h exttypes.h gelf_xlate.h libelfP.h \ - version_xlate.h dl-hash.h -EXTRA_DIST = libelf.map - -CLEANFILES = $(am_libelf_pic_a_OBJECTS) diff --git a/libelf/Makefile.in b/libelf/Makefile.in deleted file mode 100644 index eb76e52d..00000000 --- a/libelf/Makefile.in +++ /dev/null @@ -1,758 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - - -SOURCES = $(libelf_a_SOURCES) $(libelf_pic_a_SOURCES) $(libelf_so_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -@MUDFLAP_FALSE@noinst_PROGRAMS = $(am__EXEEXT_1) -@MUDFLAP_TRUE@am_libelf_pic_a_OBJECTS = -subdir = libelf -DIST_COMMON = $(euinclude_HEADERS) $(include_HEADERS) \ - $(noinst_HEADERS) $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - ChangeLog -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(euincludedir)" \ - "$(DESTDIR)$(includedir)" -libLIBRARIES_INSTALL = $(INSTALL_DATA) -LIBRARIES = $(lib_LIBRARIES) $(noinst_LIBRARIES) -AR = ar -ARFLAGS = cru -libelf_a_AR = $(AR) $(ARFLAGS) -libelf_a_LIBADD = -am_libelf_a_OBJECTS = elf_version.$(OBJEXT) elf_hash.$(OBJEXT) \ - elf_error.$(OBJEXT) elf_fill.$(OBJEXT) elf_begin.$(OBJEXT) \ - elf_next.$(OBJEXT) elf_rand.$(OBJEXT) elf_end.$(OBJEXT) \ - elf_kind.$(OBJEXT) gelf_getclass.$(OBJEXT) \ - elf_getbase.$(OBJEXT) elf_getident.$(OBJEXT) \ - elf32_fsize.$(OBJEXT) elf64_fsize.$(OBJEXT) \ - gelf_fsize.$(OBJEXT) elf32_xlatetof.$(OBJEXT) \ - elf32_xlatetom.$(OBJEXT) elf64_xlatetof.$(OBJEXT) \ - elf64_xlatetom.$(OBJEXT) gelf_xlate.$(OBJEXT) \ - elf32_getehdr.$(OBJEXT) elf64_getehdr.$(OBJEXT) \ - gelf_getehdr.$(OBJEXT) elf32_newehdr.$(OBJEXT) \ - elf64_newehdr.$(OBJEXT) gelf_newehdr.$(OBJEXT) \ - gelf_update_ehdr.$(OBJEXT) elf32_getphdr.$(OBJEXT) \ - elf64_getphdr.$(OBJEXT) gelf_getphdr.$(OBJEXT) \ - elf32_newphdr.$(OBJEXT) elf64_newphdr.$(OBJEXT) \ - gelf_newphdr.$(OBJEXT) gelf_update_phdr.$(OBJEXT) \ - elf_getarhdr.$(OBJEXT) elf_getarsym.$(OBJEXT) \ - elf_rawfile.$(OBJEXT) elf_readall.$(OBJEXT) elf_cntl.$(OBJEXT) \ - elf_getscn.$(OBJEXT) elf_nextscn.$(OBJEXT) \ - elf_ndxscn.$(OBJEXT) elf_newscn.$(OBJEXT) \ - elf32_getshdr.$(OBJEXT) elf64_getshdr.$(OBJEXT) \ - gelf_getshdr.$(OBJEXT) gelf_update_shdr.$(OBJEXT) \ - elf_strptr.$(OBJEXT) elf_rawdata.$(OBJEXT) \ - elf_getdata.$(OBJEXT) elf_newdata.$(OBJEXT) \ - elf_flagelf.$(OBJEXT) elf_flagehdr.$(OBJEXT) \ - elf_flagphdr.$(OBJEXT) elf_flagscn.$(OBJEXT) \ - elf_flagshdr.$(OBJEXT) elf_flagdata.$(OBJEXT) \ - elf_memory.$(OBJEXT) elf_update.$(OBJEXT) \ - elf32_updatenull.$(OBJEXT) elf64_updatenull.$(OBJEXT) \ - elf32_updatefile.$(OBJEXT) elf64_updatefile.$(OBJEXT) \ - gelf_getsym.$(OBJEXT) gelf_update_sym.$(OBJEXT) \ - gelf_getversym.$(OBJEXT) gelf_getverneed.$(OBJEXT) \ - gelf_getvernaux.$(OBJEXT) gelf_getverdef.$(OBJEXT) \ - gelf_getverdaux.$(OBJEXT) gelf_getrel.$(OBJEXT) \ - gelf_getrela.$(OBJEXT) gelf_update_rel.$(OBJEXT) \ - gelf_update_rela.$(OBJEXT) gelf_getdyn.$(OBJEXT) \ - gelf_update_dyn.$(OBJEXT) gelf_getmove.$(OBJEXT) \ - gelf_update_move.$(OBJEXT) gelf_getsyminfo.$(OBJEXT) \ - gelf_update_syminfo.$(OBJEXT) gelf_xlatetof.$(OBJEXT) \ - gelf_xlatetom.$(OBJEXT) nlist.$(OBJEXT) \ - gelf_getsymshndx.$(OBJEXT) gelf_update_symshndx.$(OBJEXT) \ - gelf_update_versym.$(OBJEXT) gelf_update_verneed.$(OBJEXT) \ - gelf_update_vernaux.$(OBJEXT) gelf_update_verdef.$(OBJEXT) \ - gelf_update_verdaux.$(OBJEXT) elf_getshnum.$(OBJEXT) \ - elf_getshstrndx.$(OBJEXT) gelf_checksum.$(OBJEXT) \ - elf32_checksum.$(OBJEXT) elf64_checksum.$(OBJEXT) \ - gelf_rawchunk.$(OBJEXT) gelf_freechunk.$(OBJEXT) \ - libelf_crc32.$(OBJEXT) libelf_next_prime.$(OBJEXT) \ - elf_clone.$(OBJEXT) gelf_getlib.$(OBJEXT) \ - gelf_update_lib.$(OBJEXT) -libelf_a_OBJECTS = $(am_libelf_a_OBJECTS) -libelf_pic_a_AR = $(AR) $(ARFLAGS) -libelf_pic_a_LIBADD = -libelf_pic_a_OBJECTS = $(am_libelf_pic_a_OBJECTS) -@MUDFLAP_FALSE@am__EXEEXT_1 = libelf.so$(EXEEXT) -PROGRAMS = $(noinst_PROGRAMS) -am_libelf_so_OBJECTS = -libelf_so_OBJECTS = $(am_libelf_so_OBJECTS) -libelf_so_LDADD = $(LDADD) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(libelf_a_SOURCES) $(libelf_pic_a_SOURCES) \ - $(libelf_so_SOURCES) -DIST_SOURCES = $(libelf_a_SOURCES) $(libelf_pic_a_SOURCES) \ - $(libelf_so_SOURCES) -euincludeHEADERS_INSTALL = $(INSTALL_HEADER) -includeHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(euinclude_HEADERS) $(include_HEADERS) $(noinst_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DATADIRNAME = @DATADIRNAME@ -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DEPDIR = @DEPDIR@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -GMSGFMT = @GMSGFMT@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTLLIBS = @INTLLIBS@ -LDFLAGS = @LDFLAGS@ -LEX = @LEX@ -LEXLIB = @LEXLIB@ -LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LOCALEDIR = @LOCALEDIR@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -MSGMERGE = @MSGMERGE@ -MUDFLAP_FALSE = @MUDFLAP_FALSE@ -MUDFLAP_TRUE = @MUDFLAP_TRUE@ -NATIVE_LD_FALSE = @NATIVE_LD_FALSE@ -NATIVE_LD_TRUE = @NATIVE_LD_TRUE@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USE_NLS = @USE_NLS@ -VERSION = 1 -XGETTEXT = @XGETTEXT@ -YACC = @YACC@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -base_cpu = @base_cpu@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -datadir = @datadir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -@MUDFLAP_FALSE@AM_CFLAGS = -Wall -Werror -Wshadow -# XXX gcc has a bug in that it generates warnings for internal symbols. -# XXX Remove the conditional when gcc is fxied. -@MUDFLAP_TRUE@AM_CFLAGS = -Wall -Wshadow -INCLUDES = -I$(srcdir) -I$(top_srcdir)/lib -I.. -GCC_INCLUDE = -I$(shell $(CC) -print-file-name=include) -LINT = splint -lib_LIBRARIES = libelf.a -@MUDFLAP_FALSE@noinst_LIBRARIES = libelf_pic.a -include_HEADERS = libelf.h gelf.h nlist.h -euincludedir = $(includedir)/elfutils -euinclude_HEADERS = elf-knowledge.h -libelf_a_SOURCES = elf_version.c elf_hash.c elf_error.c elf_fill.c \ - elf_begin.c elf_next.c elf_rand.c elf_end.c elf_kind.c \ - gelf_getclass.c elf_getbase.c elf_getident.c \ - elf32_fsize.c elf64_fsize.c gelf_fsize.c \ - elf32_xlatetof.c elf32_xlatetom.c elf64_xlatetof.c \ - elf64_xlatetom.c gelf_xlate.c \ - elf32_getehdr.c elf64_getehdr.c gelf_getehdr.c \ - elf32_newehdr.c elf64_newehdr.c gelf_newehdr.c \ - gelf_update_ehdr.c \ - elf32_getphdr.c elf64_getphdr.c gelf_getphdr.c \ - elf32_newphdr.c elf64_newphdr.c gelf_newphdr.c \ - gelf_update_phdr.c \ - elf_getarhdr.c elf_getarsym.c \ - elf_rawfile.c elf_readall.c elf_cntl.c \ - elf_getscn.c elf_nextscn.c elf_ndxscn.c elf_newscn.c \ - elf32_getshdr.c elf64_getshdr.c gelf_getshdr.c \ - gelf_update_shdr.c \ - elf_strptr.c elf_rawdata.c elf_getdata.c elf_newdata.c \ - elf_flagelf.c elf_flagehdr.c elf_flagphdr.c elf_flagscn.c \ - elf_flagshdr.c elf_flagdata.c elf_memory.c \ - elf_update.c elf32_updatenull.c elf64_updatenull.c \ - elf32_updatefile.c elf64_updatefile.c \ - gelf_getsym.c gelf_update_sym.c \ - gelf_getversym.c gelf_getverneed.c gelf_getvernaux.c \ - gelf_getverdef.c gelf_getverdaux.c \ - gelf_getrel.c gelf_getrela.c \ - gelf_update_rel.c gelf_update_rela.c \ - gelf_getdyn.c gelf_update_dyn.c \ - gelf_getmove.c gelf_update_move.c \ - gelf_getsyminfo.c gelf_update_syminfo.c \ - gelf_xlatetof.c gelf_xlatetom.c \ - nlist.c \ - gelf_getsymshndx.c gelf_update_symshndx.c \ - gelf_update_versym.c gelf_update_verneed.c \ - gelf_update_vernaux.c gelf_update_verdef.c \ - gelf_update_verdaux.c \ - elf_getshnum.c elf_getshstrndx.c \ - gelf_checksum.c elf32_checksum.c elf64_checksum.c \ - gelf_rawchunk.c gelf_freechunk.c \ - libelf_crc32.c libelf_next_prime.c \ - elf_clone.c \ - gelf_getlib.c gelf_update_lib.c - -@MUDFLAP_FALSE@libelf_pic_a_SOURCES = -@MUDFLAP_FALSE@am_libelf_pic_a_OBJECTS = $(libelf_a_SOURCES:.c=.os) -@MUDFLAP_FALSE@libelf_so_SOURCES = -noinst_HEADERS = elf.h abstract.h common.h exttypes.h gelf_xlate.h libelfP.h \ - version_xlate.h dl-hash.h - -EXTRA_DIST = libelf.map -CLEANFILES = $(am_libelf_pic_a_OBJECTS) -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits libelf/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits libelf/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -install-libLIBRARIES: $(lib_LIBRARIES) - @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - f=$(am__strip_dir) \ - echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ - $(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ - else :; fi; \ - done - @$(POST_INSTALL) - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - p=$(am__strip_dir) \ - echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \ - $(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \ - else :; fi; \ - done - -uninstall-libLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LIBRARIES)'; for p in $$list; do \ - p=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \ - rm -f "$(DESTDIR)$(libdir)/$$p"; \ - done - -clean-libLIBRARIES: - -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libelf.a: $(libelf_a_OBJECTS) $(libelf_a_DEPENDENCIES) - -rm -f libelf.a - $(libelf_a_AR) libelf.a $(libelf_a_OBJECTS) $(libelf_a_LIBADD) - $(RANLIB) libelf.a -libelf_pic.a: $(libelf_pic_a_OBJECTS) $(libelf_pic_a_DEPENDENCIES) - -rm -f libelf_pic.a - $(libelf_pic_a_AR) libelf_pic.a $(libelf_pic_a_OBJECTS) $(libelf_pic_a_LIBADD) - $(RANLIB) libelf_pic.a - -clean-noinstPROGRAMS: - -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) -@MUDFLAP_TRUE@libelf.so$(EXEEXT): $(libelf_so_OBJECTS) $(libelf_so_DEPENDENCIES) -@MUDFLAP_TRUE@ @rm -f libelf.so$(EXEEXT) -@MUDFLAP_TRUE@ $(LINK) $(libelf_so_LDFLAGS) $(libelf_so_OBJECTS) $(libelf_so_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32_checksum.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32_fsize.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32_getehdr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32_getphdr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32_getshdr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32_newehdr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32_newphdr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32_updatefile.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32_updatenull.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32_xlatetof.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32_xlatetom.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64_checksum.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64_fsize.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64_getehdr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64_getphdr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64_getshdr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64_newehdr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64_newphdr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64_updatefile.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64_updatenull.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64_xlatetof.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64_xlatetom.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_begin.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_clone.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_cntl.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_end.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_error.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_fill.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_flagdata.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_flagehdr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_flagelf.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_flagphdr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_flagscn.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_flagshdr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_getarhdr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_getarsym.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_getbase.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_getdata.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_getident.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_getscn.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_getshnum.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_getshstrndx.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_hash.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_kind.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_memory.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_ndxscn.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_newdata.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_newscn.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_next.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_nextscn.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_rand.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_rawdata.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_rawfile.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_readall.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_strptr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_update.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf_version.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_checksum.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_freechunk.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_fsize.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_getclass.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_getdyn.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_getehdr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_getlib.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_getmove.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_getphdr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_getrel.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_getrela.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_getshdr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_getsym.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_getsyminfo.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_getsymshndx.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_getverdaux.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_getverdef.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_getvernaux.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_getverneed.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_getversym.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_newehdr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_newphdr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_rawchunk.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_update_dyn.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_update_ehdr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_update_lib.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_update_move.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_update_phdr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_update_rel.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_update_rela.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_update_shdr.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_update_sym.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_update_syminfo.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_update_symshndx.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_update_verdaux.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_update_verdef.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_update_vernaux.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_update_verneed.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_update_versym.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_xlate.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_xlatetof.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gelf_xlatetom.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libelf_crc32.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libelf_next_prime.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlist.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` -uninstall-info-am: -install-euincludeHEADERS: $(euinclude_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(euincludedir)" || $(mkdir_p) "$(DESTDIR)$(euincludedir)" - @list='$(euinclude_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(euincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(euincludedir)/$$f'"; \ - $(euincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(euincludedir)/$$f"; \ - done - -uninstall-euincludeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(euinclude_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(euincludedir)/$$f'"; \ - rm -f "$(DESTDIR)$(euincludedir)/$$f"; \ - done -install-includeHEADERS: $(include_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(includedir)" || $(mkdir_p) "$(DESTDIR)$(includedir)" - @list='$(include_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \ - $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \ - done - -uninstall-includeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(include_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \ - rm -f "$(DESTDIR)$(includedir)/$$f"; \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(euincludedir)" "$(DESTDIR)$(includedir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ - done -@MUDFLAP_TRUE@install: install-am -install-exec: install-exec-am -install-data: install-data-am -@MUDFLAP_TRUE@uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libLIBRARIES clean-noinstLIBRARIES \ - clean-noinstPROGRAMS mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-euincludeHEADERS install-includeHEADERS - -install-exec-am: install-libLIBRARIES - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-euincludeHEADERS uninstall-includeHEADERS \ - uninstall-info-am uninstall-libLIBRARIES - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libLIBRARIES clean-noinstLIBRARIES clean-noinstPROGRAMS \ - ctags distclean distclean-compile distclean-generic \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am \ - install-euincludeHEADERS install-exec install-exec-am \ - install-includeHEADERS install-info install-info-am \ - install-libLIBRARIES install-man install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-euincludeHEADERS \ - uninstall-includeHEADERS uninstall-info-am \ - uninstall-libLIBRARIES - -@MUDFLAP_FALSE@libelf.so: libelf_pic.a libelf.map -@MUDFLAP_FALSE@ $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ -@MUDFLAP_FALSE@ -Wl,--version-script,$(srcdir)/libelf.map,--no-undefined \ -@MUDFLAP_FALSE@ -Wl,--soname,$@.$(VERSION),-z-defs -@MUDFLAP_FALSE@ ln -fs $@ $@.$(VERSION) - -@MUDFLAP_FALSE@%.os: %.c %.o -@MUDFLAP_FALSE@ if $(COMPILE) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \ -@MUDFLAP_FALSE@ -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \ -@MUDFLAP_FALSE@ then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \ -@MUDFLAP_FALSE@ rm -f "$(DEPDIR)/$*.Tpo"; \ -@MUDFLAP_FALSE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ -@MUDFLAP_FALSE@ fi - -@MUDFLAP_FALSE@install: install-am libelf.so -@MUDFLAP_FALSE@ $(mkinstalldirs) $(DESTDIR)$(libdir) -@MUDFLAP_FALSE@ $(INSTALL_PROGRAM) libelf.so $(DESTDIR)$(libdir)/libelf-$(PACKAGE_VERSION).so -@MUDFLAP_FALSE@ ln -fs libelf-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/libelf.so.$(VERSION) -@MUDFLAP_FALSE@ ln -fs libelf.so.$(VERSION) $(DESTDIR)$(libdir)/libelf.so - -@MUDFLAP_FALSE@uninstall: uninstall-am -@MUDFLAP_FALSE@ rm -f $(DESTDIR)$(libdir)/libelf-$(PACKAGE_VERSION).so -@MUDFLAP_FALSE@ rm -f $(DESTDIR)$(libdir)/libelf.so.$(VERSION) -@MUDFLAP_FALSE@ rm -f $(DESTDIR)$(libdir)/libelf.so - -.PSEUDO: lint -lint: - $(LINT) $(DEFS) $(INCLUDES) $(GCC_INCLUDE) -f $(top_srcdir)/splint.rc \ - $(addprefix $(srcdir)/,$(libelf_a_SOURCES)) -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/libelf/abstract.h b/libelf/abstract.h deleted file mode 100644 index d14034eb..00000000 --- a/libelf/abstract.h +++ /dev/null @@ -1,283 +0,0 @@ -/* Abstract description of component ELF types. - Copyright (C) 1998, 1999, 2000, 2002, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* ELF header. */ -#define Ehdr(Bits, Ext) \ -START (Bits, Ehdr, Ext##Ehdr) \ - TYPE_EXTRA (unsigned char e_ident[EI_NIDENT];) \ - TYPE_XLATE (memmove (tdest->e_ident, tsrc->e_ident, EI_NIDENT);) \ - TYPE_NAME (ElfW2(Bits, Ext##Half), e_type) \ - TYPE_NAME (ElfW2(Bits, Ext##Half), e_machine) \ - TYPE_NAME (ElfW2(Bits, Ext##Word), e_version) \ - TYPE_NAME (ElfW2(Bits, Ext##Addr), e_entry) \ - TYPE_NAME (ElfW2(Bits, Ext##Off), e_phoff) \ - TYPE_NAME (ElfW2(Bits, Ext##Off), e_shoff) \ - TYPE_NAME (ElfW2(Bits, Ext##Word), e_flags) \ - TYPE_NAME (ElfW2(Bits, Ext##Half), e_ehsize) \ - TYPE_NAME (ElfW2(Bits, Ext##Half), e_phentsize) \ - TYPE_NAME (ElfW2(Bits, Ext##Half), e_phnum) \ - TYPE_NAME (ElfW2(Bits, Ext##Half), e_shentsize) \ - TYPE_NAME (ElfW2(Bits, Ext##Half), e_shnum) \ - TYPE_NAME (ElfW2(Bits, Ext##Half), e_shstrndx) \ -END (Bits, Ext##Ehdr) - -#define Ehdr32(Ext) \ - Ehdr(32, Ext) -#define Ehdr64(Ext) \ - Ehdr(64, Ext) - - -/* Program header. */ -#define Phdr32(Ext) \ -START (32, Phdr, Ext##Phdr) \ - TYPE_NAME (ElfW2(32, Ext##Word), p_type) \ - TYPE_NAME (ElfW2(32, Ext##Off), p_offset) \ - TYPE_NAME (ElfW2(32, Ext##Addr), p_vaddr) \ - TYPE_NAME (ElfW2(32, Ext##Addr), p_paddr) \ - TYPE_NAME (ElfW2(32, Ext##Word), p_filesz) \ - TYPE_NAME (ElfW2(32, Ext##Word), p_memsz) \ - TYPE_NAME (ElfW2(32, Ext##Word), p_flags) \ - TYPE_NAME (ElfW2(32, Ext##Word), p_align) \ -END (32, Ext##Phdr) -#define Phdr64(Ext) \ -START (64, Phdr, Ext##Phdr) \ - TYPE_NAME (ElfW2(64, Ext##Word), p_type) \ - TYPE_NAME (ElfW2(64, Ext##Word), p_flags) \ - TYPE_NAME (ElfW2(64, Ext##Off), p_offset) \ - TYPE_NAME (ElfW2(64, Ext##Addr), p_vaddr) \ - TYPE_NAME (ElfW2(64, Ext##Addr), p_paddr) \ - TYPE_NAME (ElfW2(64, Ext##Xword), p_filesz) \ - TYPE_NAME (ElfW2(64, Ext##Xword), p_memsz) \ - TYPE_NAME (ElfW2(64, Ext##Xword), p_align) \ -END (64, Ext##Phdr) - - -/* Section header. */ -#define Shdr32(Ext) \ -START (32, Shdr, Ext##Shdr) \ - TYPE_NAME (ElfW2(32, Ext##Word), sh_name) \ - TYPE_NAME (ElfW2(32, Ext##Word), sh_type) \ - TYPE_NAME (ElfW2(32, Ext##Word), sh_flags) \ - TYPE_NAME (ElfW2(32, Ext##Addr), sh_addr) \ - TYPE_NAME (ElfW2(32, Ext##Off), sh_offset) \ - TYPE_NAME (ElfW2(32, Ext##Word), sh_size) \ - TYPE_NAME (ElfW2(32, Ext##Word), sh_link) \ - TYPE_NAME (ElfW2(32, Ext##Word), sh_info) \ - TYPE_NAME (ElfW2(32, Ext##Word), sh_addralign) \ - TYPE_NAME (ElfW2(32, Ext##Word), sh_entsize) \ -END (32, Ext##Shdr) -#define Shdr64(Ext) \ -START (64, Shdr, Ext##Shdr) \ - TYPE_NAME (ElfW2(64, Ext##Word), sh_name) \ - TYPE_NAME (ElfW2(64, Ext##Word), sh_type) \ - TYPE_NAME (ElfW2(64, Ext##Xword), sh_flags) \ - TYPE_NAME (ElfW2(64, Ext##Addr), sh_addr) \ - TYPE_NAME (ElfW2(64, Ext##Off), sh_offset) \ - TYPE_NAME (ElfW2(64, Ext##Xword), sh_size) \ - TYPE_NAME (ElfW2(64, Ext##Word), sh_link) \ - TYPE_NAME (ElfW2(64, Ext##Word), sh_info) \ - TYPE_NAME (ElfW2(64, Ext##Xword), sh_addralign) \ - TYPE_NAME (ElfW2(64, Ext##Xword), sh_entsize) \ -END (64, Ext##Shdr) - - -/* Symbol table. */ -#define Sym32(Ext) \ -START (32, Sym, Ext##Sym) \ - TYPE_NAME (ElfW2(32, Ext##Word), st_name) \ - TYPE_NAME (ElfW2(32, Ext##Addr), st_value) \ - TYPE_NAME (ElfW2(32, Ext##Word), st_size) \ - TYPE_EXTRA (unsigned char st_info;) \ - TYPE_XLATE (tdest->st_info = tsrc->st_info;) \ - TYPE_EXTRA (unsigned char st_other;) \ - TYPE_XLATE (tdest->st_other = tsrc->st_other;) \ - TYPE_NAME (ElfW2(32, Ext##Half), st_shndx) \ -END (32, Ext##Sym) -#define Sym64(Ext) \ -START (64, Sym, Ext##Sym) \ - TYPE_NAME (ElfW2(64, Ext##Word), st_name) \ - TYPE_EXTRA (unsigned char st_info;) \ - TYPE_XLATE (tdest->st_info = tsrc->st_info;) \ - TYPE_EXTRA (unsigned char st_other;) \ - TYPE_XLATE (tdest->st_other = tsrc->st_other;) \ - TYPE_NAME (ElfW2(64, Ext##Half), st_shndx) \ - TYPE_NAME (ElfW2(64, Ext##Addr), st_value) \ - TYPE_NAME (ElfW2(64, Ext##Xword), st_size) \ -END (64, Ext##Sym) - - -/* Relocation. */ -#define Rel32(Ext) \ -START (32, Rel, Ext##Rel) \ - TYPE_NAME (ElfW2(32, Ext##Addr), r_offset) \ - TYPE_NAME (ElfW2(32, Ext##Word), r_info) \ -END (32, Ext##Rel) -#define Rel64(Ext) \ -START (64, Rel, Ext##Rel) \ - TYPE_NAME (ElfW2(64, Ext##Addr), r_offset) \ - TYPE_NAME (ElfW2(64, Ext##Xword), r_info) \ -END (64, Ext##Rel) - -#define Rela32(Ext) \ -START (32, Rela, Ext##Rela) \ - TYPE_NAME (ElfW2(32, Ext##Addr), r_offset) \ - TYPE_NAME (ElfW2(32, Ext##Word), r_info) \ - TYPE_NAME (ElfW2(32, Ext##Sword), r_addend) \ -END (32, Ext##Rela) -#define Rela64(Ext) \ -START (64, Rela, Ext##Rela) \ - TYPE_NAME (ElfW2(64, Ext##Addr), r_offset) \ - TYPE_NAME (ElfW2(64, Ext##Xword), r_info) \ - TYPE_NAME (ElfW2(64, Ext##Sxword), r_addend) \ -END (64, Ext##Rela) - - -/* Note entry header. */ -#define Note(Bits, Ext) \ -START (Bits, Nhdr, Ext##Nhdr) \ - TYPE_NAME (ElfW2(Bits, Ext##Word), n_namesz) \ - TYPE_NAME (ElfW2(Bits, Ext##Word), n_descsz) \ - TYPE_NAME (ElfW2(Bits, Ext##Word), n_type) \ -END (Bits, Ext##Nhdr) - -#define Note32(Ext) \ - Note (32, Ext) -#define Note64(Ext) \ - Note (64, Ext) - - -/* Dynamic section data. */ -#define Dyn32(Ext) \ -START (32, Dyn, Ext##Dyn) \ - TYPE_NAME (ElfW2(32, Ext##Sword), d_tag) \ - TYPE_EXTRA (union {) \ - TYPE_EXTRA (ElfW2(32, Ext##Word) d_val;) \ - TYPE_EXTRA (ElfW2(32, Ext##Addr) d_ptr;) \ - TYPE_XLATE (Elf32_cvt_Addr1 (&tdest->d_un.d_val, &tsrc->d_un.d_val);) \ - TYPE_EXTRA (ElfW2(32, Ext##Off) d_off;) \ - TYPE_EXTRA (} d_un;) \ -END (32, Ext##Dyn) -#define Dyn64(Ext) \ -START (64, Dyn, Ext##Dyn) \ - TYPE_NAME (ElfW2(64, Ext##Xword), d_tag) \ - TYPE_EXTRA (union {) \ - TYPE_EXTRA (ElfW2(64, Ext##Xword) d_val;) \ - TYPE_EXTRA (ElfW2(64, Ext##Addr) d_ptr;) \ - TYPE_XLATE (Elf64_cvt_Addr1 (&tdest->d_un.d_val, &tsrc->d_un.d_val);) \ - TYPE_EXTRA (} d_un;) \ -END (64, Ext##Dyn) - - -#ifndef GENERATE_CONVERSION -/* Version definitions. */ -# define Verdef(Bits, Ext) \ -START (Bits, Verdef, Ext##Verdef) \ - TYPE_NAME (ElfW2(Bits, Ext##Half), vd_version) \ - TYPE_NAME (ElfW2(Bits, Ext##Half), vd_flags) \ - TYPE_NAME (ElfW2(Bits, Ext##Half), vd_ndx) \ - TYPE_NAME (ElfW2(Bits, Ext##Half), vd_cnt) \ - TYPE_NAME (ElfW2(Bits, Ext##Word), vd_hash) \ - TYPE_NAME (ElfW2(Bits, Ext##Word), vd_aux) \ - TYPE_NAME (ElfW2(Bits, Ext##Word), vd_next) \ -END (Bits, Ext##Verdef) - -# define Verdef32(Ext) \ - Verdef (32, Ext) -# define Verdef64(Ext) \ - Verdef (64, Ext) - -# define Verdaux(Bits, Ext) \ -START (Bits, Verdaux, Ext##Verdaux) \ - TYPE_NAME (ElfW2(Bits, Ext##Word), vda_name) \ - TYPE_NAME (ElfW2(Bits, Ext##Word), vda_next) \ -END (Bits, Ext##Verdaux) - -# define Verdaux32(Ext) \ - Verdaux (32, Ext) -# define Verdaux64(Ext) \ - Verdaux (64, Ext) - -/* Required versions. */ -# define Verneed(Bits, Ext) \ -START (Bits, Verneed, Ext##Verneed) \ - TYPE_NAME (ElfW2(Bits, Ext##Half), vn_version) \ - TYPE_NAME (ElfW2(Bits, Ext##Half), vn_cnt) \ - TYPE_NAME (ElfW2(Bits, Ext##Word), vn_file) \ - TYPE_NAME (ElfW2(Bits, Ext##Word), vn_aux) \ - TYPE_NAME (ElfW2(Bits, Ext##Word), vn_next) \ -END (Bits, Ext##Verneed) - -# define Verneed32(Ext) \ - Verneed (32, Ext) -# define Verneed64(Ext) \ - Verneed (64, Ext) - -# define Vernaux(Bits, Ext) \ -START (Bits, Vernaux, Ext##Vernaux) \ - TYPE_NAME (ElfW2(Bits, Ext##Word), vna_hash) \ - TYPE_NAME (ElfW2(Bits, Ext##Half), vna_flags) \ - TYPE_NAME (ElfW2(Bits, Ext##Half), vna_other) \ - TYPE_NAME (ElfW2(Bits, Ext##Word), vna_name) \ - TYPE_NAME (ElfW2(Bits, Ext##Word), vna_next) \ -END (Bits, Ext##Vernaux) - -# define Vernaux32(Ext) \ - Vernaux (32, Ext) -# define Vernaux64(Ext) \ - Vernaux (64, Ext) -#endif - -/* Symbol information. */ -#define Syminfo(Bits, Ext) \ -START (Bits, Syminfo, Ext##Syminfo) \ - TYPE_NAME (ElfW2(Bits, Ext##Half), si_boundto) \ - TYPE_NAME (ElfW2(Bits, Ext##Half), si_flags) \ -END (Bits, Ext##Syminfo) - -#define Syminfo32(Ext) \ - Syminfo (32, Ext) -#define Syminfo64(Ext) \ - Syminfo (64, Ext) - -/* Move information. */ -#define Move(Bits, Ext) \ -START (Bits, Move, Ext##Move) \ - TYPE_NAME (ElfW2(Bits, Ext##Xword), m_value) \ - TYPE_NAME (ElfW2(Bits, Ext##Xword), m_info) \ - TYPE_NAME (ElfW2(Bits, Ext##Xword), m_poffset) \ - TYPE_NAME (ElfW2(Bits, Ext##Half), m_repeat) \ - TYPE_NAME (ElfW2(Bits, Ext##Half), m_stride) \ -END (Bits, Ext##Move) - -#define Move32(Ext) \ - Move (32, Ext) -#define Move64(Ext) \ - Move (64, Ext) - -#define Lib(Bits, Ext) \ -START (Bits, Lib, Ext##Lib) \ - TYPE_NAME (ElfW2(Bits, Ext##Word), l_name) \ - TYPE_NAME (ElfW2(Bits, Ext##Word), l_time_stamp) \ - TYPE_NAME (ElfW2(Bits, Ext##Word), l_checksum) \ - TYPE_NAME (ElfW2(Bits, Ext##Word), l_version) \ - TYPE_NAME (ElfW2(Bits, Ext##Word), l_flags) \ -END (Bits, Ext##Lib) - -#define Lib32(Ext) \ - Lib (32, Ext) -#define Lib64(Ext) \ - Lib (64, Ext) diff --git a/libelf/common.h b/libelf/common.h deleted file mode 100644 index ad41bb98..00000000 --- a/libelf/common.h +++ /dev/null @@ -1,146 +0,0 @@ -/* Common definitions for handling files in memory or only on disk. - Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef _COMMON_H -#define _COMMON_H 1 - -#include <ar.h> -//#include <byteswap.h> -//#include <endian.h> -#include <stdlib.h> -#include <string.h> - - -static inline Elf_Kind -determine_kind (void *buf, size_t len) -{ - /* First test for an archive. */ - if (len >= SARMAG && memcmp (buf, ARMAG, SARMAG) == 0) - return ELF_K_AR; - - /* Next try ELF files. */ - if (len >= EI_NIDENT && memcmp (buf, ELFMAG, SELFMAG) == 0) - { - /* Could be an ELF file. */ - int eclass = (int) ((unsigned char *) buf)[EI_CLASS]; - int data = (int) ((unsigned char *) buf)[EI_DATA]; - int version = (int) ((unsigned char *) buf)[EI_VERSION]; - - if (eclass > ELFCLASSNONE && eclass < ELFCLASSNUM - && data > ELFDATANONE && data < ELFDATANUM - && version > EV_NONE && version < EV_NUM) - return ELF_K_ELF; - } - - /* We do not know this file type. */ - return ELF_K_NONE; -} - - -/* Allocate an Elf descriptor and fill in the generic information. */ -static inline Elf * -allocate_elf (int fildes, void *map_address, off_t offset, size_t maxsize, - Elf_Cmd cmd, Elf *parent, Elf_Kind kind, size_t extra) -{ - Elf *result = (Elf *) calloc (1, sizeof (Elf) + extra); - if (result == NULL) - __libelf_seterrno (ELF_E_NOMEM); - else - { - result->kind = kind; - result->ref_count = 1; - result->cmd = cmd; - result->fildes = fildes; - result->start_offset = offset; - result->maximum_size = maxsize; - result->map_address = map_address; - result->parent = parent; - - rwlock_init (result->lock); - } - - return result; -} - - -/* Acquire lock for the descriptor and all children. */ -static void -libelf_acquire_all (Elf *elf) -{ - rwlock_wrlock (elf->lock); - - if (elf->kind == ELF_K_AR) - { - Elf *child = elf->state.ar.children; - - while (child != NULL) - { - if (child->ref_count != 0) - libelf_acquire_all (child); - child = child->next; - } - } -} - -/* Release own lock and those of the children. */ -static void -libelf_release_all (Elf *elf) -{ - if (elf->kind == ELF_K_AR) - { - Elf *child = elf->state.ar.children; - - while (child != NULL) - { - if (child->ref_count != 0) - libelf_release_all (child); - child = child->next; - } - } - - rwlock_unlock (elf->lock); -} - - -/* Macro to convert endianess in place. It determines the function it - has to use itself. */ -#define CONVERT(Var) \ - (Var) = (sizeof (Var) == 1 \ - ? (Var) \ - : (sizeof (Var) == 2 \ - ? bswap_16 (Var) \ - : (sizeof (Var) == 4 \ - ? bswap_32 (Var) \ - : bswap_64 (Var)))) - -#define CONVERT_TO(Dst, Var) \ - (Dst) = (sizeof (Var) == 1 \ - ? (Var) \ - : (sizeof (Var) == 2 \ - ? bswap_16 (Var) \ - : (sizeof (Var) == 4 \ - ? bswap_32 (Var) \ - : bswap_64 (Var)))) - - -#if __BYTE_ORDER == __LITTLE_ENDIAN -# define MY_ELFDATA ELFDATA2LSB -#else -# define MY_ELFDATA ELFDATA2MSB -#endif - -#endif /* common.h */ diff --git a/libelf/dl-hash.h b/libelf/dl-hash.h deleted file mode 100644 index c8e89626..00000000 --- a/libelf/dl-hash.h +++ /dev/null @@ -1,70 +0,0 @@ -/* Compute hash value for given string according to ELF standard. - Copyright (C) 1995-1998, 2002, 2004 Free Software Foundation, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1995. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef _DL_HASH_H -#define _DL_HASH_H 1 - - -/* This is the hashing function specified by the ELF ABI. In the - first five operations no overflow is possible so we optimized it a - bit. */ -static inline unsigned int -__attribute__ ((__pure__)) -_dl_elf_hash (const char *name) -{ - const unsigned char *iname = (const unsigned char *) name; - unsigned int hash = (unsigned int) *iname++; - if (*iname != '\0') - { - hash = (hash << 4) + (unsigned int) *iname++; - if (*iname != '\0') - { - hash = (hash << 4) + (unsigned int) *iname++; - if (*iname != '\0') - { - hash = (hash << 4) + (unsigned int) *iname++; - if (*iname != '\0') - { - hash = (hash << 4) + (unsigned int) *iname++; - while (*iname != '\0') - { - unsigned int hi; - hash = (hash << 4) + (unsigned int) *iname++; - hi = hash & 0xf0000000; - - /* The algorithm specified in the ELF ABI is as - follows: - - if (hi != 0) - hash ^= hi >> 24; - - hash &= ~hi; - - But the following is equivalent and a lot - faster, especially on modern processors. */ - - hash ^= hi; - hash ^= hi >> 24; - } - } - } - } - } - return hash; -} - -#endif /* dl-hash.h */ diff --git a/libelf/elf-knowledge.h b/libelf/elf-knowledge.h deleted file mode 100644 index c44e37f7..00000000 --- a/libelf/elf-knowledge.h +++ /dev/null @@ -1,105 +0,0 @@ -/* Accumulation of various pieces of knowledge about ELF. - Copyright (C) 2000, 2001, 2002, 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef _ELF_KNOWLEDGE_H -#define _ELF_KNOWLEDGE_H 1 - - -/* Test whether a section can be stripped or not. */ -#define SECTION_STRIP_P(ebl, elf, ehdr, shdr, name, remove_comment, remove_debug) \ - (/* Sections which are allocated are not removed. */ \ - ((shdr)->sh_flags & SHF_ALLOC) == 0 \ - /* We never remove .note sections. */ \ - && (shdr)->sh_type != SHT_NOTE \ - /* If only debug information should be removed check the name. There \ - is unfortunately no way. */ \ - && (!remove_debug \ - || ebl_debugscn_p (ebl, name) \ - || (((shdr)->sh_type == SHT_RELA || (shdr)->sh_type == SHT_REL) \ - && ({ Elf_Scn *scn_l = elf_getscn (elf, (shdr)->sh_info); \ - GElf_Shdr shdr_mem_l; \ - GElf_Shdr *shdr_l = gelf_getshdr (scn_l, &shdr_mem_l); \ - const char *s_l; \ - shdr_l != NULL \ - && (s_l = elf_strptr (elf, \ - ((GElf_Ehdr *) (ehdr))->e_shstrndx, \ - shdr_l->sh_name)) != NULL \ - && ebl_debugscn_p (ebl, s_l); }))) \ - && ((shdr)->sh_type != SHT_PROGBITS \ - /* Never remove .gnu.warning.* sections. */ \ - || (strncmp (name, ".gnu.warning.", sizeof ".gnu.warning." - 1) != 0 \ - /* We remove .comment sections only if explicitly told to do so. */ \ - && ((remove_comment) || strcmp (name, ".comment") != 0))) \ - /* So far we do not remove any of the non-standard sections. \ - XXX Maybe in future. */ \ - && (shdr)->sh_type < SHT_NUM) - - -/* Test whether `sh_info' field in section header contains a section - index. There are two kinds of sections doing this: - - - the sections containing relocation information reference in this - field the section to which the relocations apply; - - - section with the SHF_INFO_LINK flag set to signal that `sh_info' - references a section. This allows correct handling of unknown - sections. */ -#define SH_INFO_LINK_P(Shdr) \ - ((Shdr)->sh_type == SHT_REL || (Shdr)->sh_type == SHT_RELA \ - || ((Shdr)->sh_flags & SHF_INFO_LINK) != 0) - - -/* When combining ELF section flags we must distinguish two kinds: - - - flags which cause problem if not added to the result even if not - present in all input sections - - - flags which cause problem if added to the result if not present - in all input sections - - The following definition is for the general case. There might be - machine specific extensions. */ -#define SH_FLAGS_COMBINE(Flags1, Flags2) \ - (((Flags1 | Flags2) \ - & (SHF_WRITE | SHF_ALLOC | SHF_EXECINSTR | SHF_LINK_ORDER \ - | SHF_OS_NONCONFORMING | SHF_GROUP)) \ - | (Flags1 & Flags2 & (SHF_MERGE | SHF_STRINGS | SHF_INFO_LINK))) - -/* Similar macro: return the bits of the flags which necessarily must - match if two sections are automatically combined. Sections still - can be forcefully combined in which case SH_FLAGS_COMBINE can be - used to determine the combined flags. */ -#define SH_FLAGS_IMPORTANT(Flags) \ - ((Flags) & ~((GElf_Xword) 0 | SHF_LINK_ORDER | SHF_OS_NONCONFORMING)) - - -/* Size of an entry in the hash table. The ELF specification says all - entries are regardless of platform 32-bits in size. Early 64-bit - ports (namely Alpha for Linux) got this wrong. The wording was not - clear. - - Several years later the ABI for the 64-bit S390s was developed. - Many things were copied from the IA-64 ABI (which uses the correct - 32-bit entry size) but what do these people do? They use 64-bit - entries. It is really shocking to see what kind of morons are out - there. And even worse: they are allowed to design ABIs. */ -#define SH_ENTSIZE_HASH(Ehdr) \ - ((Ehdr)->e_machine == EM_ALPHA \ - || ((Ehdr)->e_machine == EM_S390 \ - && (Ehdr)->e_ident[EI_CLASS] == ELFCLASS64) ? 8 : 4) - -#endif /* elf-knowledge.h */ diff --git a/libelf/elf.h b/libelf/elf.h deleted file mode 100644 index f963eac5..00000000 --- a/libelf/elf.h +++ /dev/null @@ -1,2457 +0,0 @@ -/* This file defines standard ELF types, structures, and macros. - Copyright (C) 1995-2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#ifndef _ELF_H -#define _ELF_H 1 - -//#include <features.h> - -/* Standard ELF types. */ - -#include <stdint.h> - -/* Type for a 16-bit quantity. */ -typedef uint16_t Elf32_Half; -typedef uint16_t Elf64_Half; - -/* Types for signed and unsigned 32-bit quantities. */ -typedef uint32_t Elf32_Word; -typedef int32_t Elf32_Sword; -typedef uint32_t Elf64_Word; -typedef int32_t Elf64_Sword; - -/* Types for signed and unsigned 64-bit quantities. */ -typedef uint64_t Elf32_Xword; -typedef int64_t Elf32_Sxword; -typedef uint64_t Elf64_Xword; -typedef int64_t Elf64_Sxword; - -/* Type of addresses. */ -typedef uint32_t Elf32_Addr; -typedef uint64_t Elf64_Addr; - -/* Type of file offsets. */ -typedef uint32_t Elf32_Off; -typedef uint64_t Elf64_Off; - -/* Type for section indices, which are 16-bit quantities. */ -typedef uint16_t Elf32_Section; -typedef uint16_t Elf64_Section; - -/* Type for version symbol information. */ -typedef Elf32_Half Elf32_Versym; -typedef Elf64_Half Elf64_Versym; - - -/* The ELF file header. This appears at the start of every ELF file. */ - -#define EI_NIDENT (16) - -typedef struct -{ - unsigned char e_ident[EI_NIDENT]; /* Magic number and other info */ - Elf32_Half e_type; /* Object file type */ - Elf32_Half e_machine; /* Architecture */ - Elf32_Word e_version; /* Object file version */ - Elf32_Addr e_entry; /* Entry point virtual address */ - Elf32_Off e_phoff; /* Program header table file offset */ - Elf32_Off e_shoff; /* Section header table file offset */ - Elf32_Word e_flags; /* Processor-specific flags */ - Elf32_Half e_ehsize; /* ELF header size in bytes */ - Elf32_Half e_phentsize; /* Program header table entry size */ - Elf32_Half e_phnum; /* Program header table entry count */ - Elf32_Half e_shentsize; /* Section header table entry size */ - Elf32_Half e_shnum; /* Section header table entry count */ - Elf32_Half e_shstrndx; /* Section header string table index */ -} Elf32_Ehdr; - -typedef struct -{ - unsigned char e_ident[EI_NIDENT]; /* Magic number and other info */ - Elf64_Half e_type; /* Object file type */ - Elf64_Half e_machine; /* Architecture */ - Elf64_Word e_version; /* Object file version */ - Elf64_Addr e_entry; /* Entry point virtual address */ - Elf64_Off e_phoff; /* Program header table file offset */ - Elf64_Off e_shoff; /* Section header table file offset */ - Elf64_Word e_flags; /* Processor-specific flags */ - Elf64_Half e_ehsize; /* ELF header size in bytes */ - Elf64_Half e_phentsize; /* Program header table entry size */ - Elf64_Half e_phnum; /* Program header table entry count */ - Elf64_Half e_shentsize; /* Section header table entry size */ - Elf64_Half e_shnum; /* Section header table entry count */ - Elf64_Half e_shstrndx; /* Section header string table index */ -} Elf64_Ehdr; - -/* Fields in the e_ident array. The EI_* macros are indices into the - array. The macros under each EI_* macro are the values the byte - may have. */ - -#define EI_MAG0 0 /* File identification byte 0 index */ -#define ELFMAG0 0x7f /* Magic number byte 0 */ - -#define EI_MAG1 1 /* File identification byte 1 index */ -#define ELFMAG1 'E' /* Magic number byte 1 */ - -#define EI_MAG2 2 /* File identification byte 2 index */ -#define ELFMAG2 'L' /* Magic number byte 2 */ - -#define EI_MAG3 3 /* File identification byte 3 index */ -#define ELFMAG3 'F' /* Magic number byte 3 */ - -/* Conglomeration of the identification bytes, for easy testing as a word. */ -#define ELFMAG "\177ELF" -#define SELFMAG 4 - -#define EI_CLASS 4 /* File class byte index */ -#define ELFCLASSNONE 0 /* Invalid class */ -#define ELFCLASS32 1 /* 32-bit objects */ -#define ELFCLASS64 2 /* 64-bit objects */ -#define ELFCLASSNUM 3 - -#define EI_DATA 5 /* Data encoding byte index */ -#define ELFDATANONE 0 /* Invalid data encoding */ -#define ELFDATA2LSB 1 /* 2's complement, little endian */ -#define ELFDATA2MSB 2 /* 2's complement, big endian */ -#define ELFDATANUM 3 - -#define EI_VERSION 6 /* File version byte index */ - /* Value must be EV_CURRENT */ - -#define EI_OSABI 7 /* OS ABI identification */ -#define ELFOSABI_NONE 0 /* UNIX System V ABI */ -#define ELFOSABI_SYSV 0 /* Alias. */ -#define ELFOSABI_HPUX 1 /* HP-UX */ -#define ELFOSABI_NETBSD 2 /* NetBSD. */ -#define ELFOSABI_LINUX 3 /* Linux. */ -#define ELFOSABI_SOLARIS 6 /* Sun Solaris. */ -#define ELFOSABI_AIX 7 /* IBM AIX. */ -#define ELFOSABI_IRIX 8 /* SGI Irix. */ -#define ELFOSABI_FREEBSD 9 /* FreeBSD. */ -#define ELFOSABI_TRU64 10 /* Compaq TRU64 UNIX. */ -#define ELFOSABI_MODESTO 11 /* Novell Modesto. */ -#define ELFOSABI_OPENBSD 12 /* OpenBSD. */ -#define ELFOSABI_ARM 97 /* ARM */ -#define ELFOSABI_STANDALONE 255 /* Standalone (embedded) application */ - -#define EI_ABIVERSION 8 /* ABI version */ - -#define EI_PAD 9 /* Byte index of padding bytes */ - -/* Legal values for e_type (object file type). */ - -#define ET_NONE 0 /* No file type */ -#define ET_REL 1 /* Relocatable file */ -#define ET_EXEC 2 /* Executable file */ -#define ET_DYN 3 /* Shared object file */ -#define ET_CORE 4 /* Core file */ -#define ET_NUM 5 /* Number of defined types */ -#define ET_LOOS 0xfe00 /* OS-specific range start */ -#define ET_HIOS 0xfeff /* OS-specific range end */ -#define ET_LOPROC 0xff00 /* Processor-specific range start */ -#define ET_HIPROC 0xffff /* Processor-specific range end */ - -/* Legal values for e_machine (architecture). */ - -#define EM_NONE 0 /* No machine */ -#define EM_M32 1 /* AT&T WE 32100 */ -#define EM_SPARC 2 /* SUN SPARC */ -#define EM_386 3 /* Intel 80386 */ -#define EM_68K 4 /* Motorola m68k family */ -#define EM_88K 5 /* Motorola m88k family */ -#define EM_860 7 /* Intel 80860 */ -#define EM_MIPS 8 /* MIPS R3000 big-endian */ -#define EM_S370 9 /* IBM System/370 */ -#define EM_MIPS_RS3_LE 10 /* MIPS R3000 little-endian */ - -#define EM_PARISC 15 /* HPPA */ -#define EM_VPP500 17 /* Fujitsu VPP500 */ -#define EM_SPARC32PLUS 18 /* Sun's "v8plus" */ -#define EM_960 19 /* Intel 80960 */ -#define EM_PPC 20 /* PowerPC */ -#define EM_PPC64 21 /* PowerPC 64-bit */ -#define EM_S390 22 /* IBM S390 */ - -#define EM_V800 36 /* NEC V800 series */ -#define EM_FR20 37 /* Fujitsu FR20 */ -#define EM_RH32 38 /* TRW RH-32 */ -#define EM_RCE 39 /* Motorola RCE */ -#define EM_ARM 40 /* ARM */ -#define EM_FAKE_ALPHA 41 /* Digital Alpha */ -#define EM_SH 42 /* Hitachi SH */ -#define EM_SPARCV9 43 /* SPARC v9 64-bit */ -#define EM_TRICORE 44 /* Siemens Tricore */ -#define EM_ARC 45 /* Argonaut RISC Core */ -#define EM_H8_300 46 /* Hitachi H8/300 */ -#define EM_H8_300H 47 /* Hitachi H8/300H */ -#define EM_H8S 48 /* Hitachi H8S */ -#define EM_H8_500 49 /* Hitachi H8/500 */ -#define EM_IA_64 50 /* Intel Merced */ -#define EM_MIPS_X 51 /* Stanford MIPS-X */ -#define EM_COLDFIRE 52 /* Motorola Coldfire */ -#define EM_68HC12 53 /* Motorola M68HC12 */ -#define EM_MMA 54 /* Fujitsu MMA Multimedia Accelerator*/ -#define EM_PCP 55 /* Siemens PCP */ -#define EM_NCPU 56 /* Sony nCPU embeeded RISC */ -#define EM_NDR1 57 /* Denso NDR1 microprocessor */ -#define EM_STARCORE 58 /* Motorola Start*Core processor */ -#define EM_ME16 59 /* Toyota ME16 processor */ -#define EM_ST100 60 /* STMicroelectronic ST100 processor */ -#define EM_TINYJ 61 /* Advanced Logic Corp. Tinyj emb.fam*/ -#define EM_X86_64 62 /* AMD x86-64 architecture */ -#define EM_PDSP 63 /* Sony DSP Processor */ - -#define EM_FX66 66 /* Siemens FX66 microcontroller */ -#define EM_ST9PLUS 67 /* STMicroelectronics ST9+ 8/16 mc */ -#define EM_ST7 68 /* STmicroelectronics ST7 8 bit mc */ -#define EM_68HC16 69 /* Motorola MC68HC16 microcontroller */ -#define EM_68HC11 70 /* Motorola MC68HC11 microcontroller */ -#define EM_68HC08 71 /* Motorola MC68HC08 microcontroller */ -#define EM_68HC05 72 /* Motorola MC68HC05 microcontroller */ -#define EM_SVX 73 /* Silicon Graphics SVx */ -#define EM_ST19 74 /* STMicroelectronics ST19 8 bit mc */ -#define EM_VAX 75 /* Digital VAX */ -#define EM_CRIS 76 /* Axis Communications 32-bit embedded processor */ -#define EM_JAVELIN 77 /* Infineon Technologies 32-bit embedded processor */ -#define EM_FIREPATH 78 /* Element 14 64-bit DSP Processor */ -#define EM_ZSP 79 /* LSI Logic 16-bit DSP Processor */ -#define EM_MMIX 80 /* Donald Knuth's educational 64-bit processor */ -#define EM_HUANY 81 /* Harvard University machine-independent object files */ -#define EM_PRISM 82 /* SiTera Prism */ -#define EM_AVR 83 /* Atmel AVR 8-bit microcontroller */ -#define EM_FR30 84 /* Fujitsu FR30 */ -#define EM_D10V 85 /* Mitsubishi D10V */ -#define EM_D30V 86 /* Mitsubishi D30V */ -#define EM_V850 87 /* NEC v850 */ -#define EM_M32R 88 /* Mitsubishi M32R */ -#define EM_MN10300 89 /* Matsushita MN10300 */ -#define EM_MN10200 90 /* Matsushita MN10200 */ -#define EM_PJ 91 /* picoJava */ -#define EM_OPENRISC 92 /* OpenRISC 32-bit embedded processor */ -#define EM_ARC_A5 93 /* ARC Cores Tangent-A5 */ -#define EM_XTENSA 94 /* Tensilica Xtensa Architecture */ -#define EM_NUM 95 - -/* If it is necessary to assign new unofficial EM_* values, please - pick large random numbers (0x8523, 0xa7f2, etc.) to minimize the - chances of collision with official or non-GNU unofficial values. */ - -#define EM_ALPHA 0x9026 - -/* Legal values for e_version (version). */ - -#define EV_NONE 0 /* Invalid ELF version */ -#define EV_CURRENT 1 /* Current version */ -#define EV_NUM 2 - -/* Section header. */ - -typedef struct -{ - Elf32_Word sh_name; /* Section name (string tbl index) */ - Elf32_Word sh_type; /* Section type */ - Elf32_Word sh_flags; /* Section flags */ - Elf32_Addr sh_addr; /* Section virtual addr at execution */ - Elf32_Off sh_offset; /* Section file offset */ - Elf32_Word sh_size; /* Section size in bytes */ - Elf32_Word sh_link; /* Link to another section */ - Elf32_Word sh_info; /* Additional section information */ - Elf32_Word sh_addralign; /* Section alignment */ - Elf32_Word sh_entsize; /* Entry size if section holds table */ -} Elf32_Shdr; - -typedef struct -{ - Elf64_Word sh_name; /* Section name (string tbl index) */ - Elf64_Word sh_type; /* Section type */ - Elf64_Xword sh_flags; /* Section flags */ - Elf64_Addr sh_addr; /* Section virtual addr at execution */ - Elf64_Off sh_offset; /* Section file offset */ - Elf64_Xword sh_size; /* Section size in bytes */ - Elf64_Word sh_link; /* Link to another section */ - Elf64_Word sh_info; /* Additional section information */ - Elf64_Xword sh_addralign; /* Section alignment */ - Elf64_Xword sh_entsize; /* Entry size if section holds table */ -} Elf64_Shdr; - -/* Special section indices. */ - -#define SHN_UNDEF 0 /* Undefined section */ -#define SHN_LORESERVE 0xff00 /* Start of reserved indices */ -#define SHN_LOPROC 0xff00 /* Start of processor-specific */ -#define SHN_BEFORE 0xff00 /* Order section before all others - (Solaris). */ -#define SHN_AFTER 0xff01 /* Order section after all others - (Solaris). */ -#define SHN_HIPROC 0xff1f /* End of processor-specific */ -#define SHN_LOOS 0xff20 /* Start of OS-specific */ -#define SHN_HIOS 0xff3f /* End of OS-specific */ -#define SHN_ABS 0xfff1 /* Associated symbol is absolute */ -#define SHN_COMMON 0xfff2 /* Associated symbol is common */ -#define SHN_XINDEX 0xffff /* Index is in extra table. */ -#define SHN_HIRESERVE 0xffff /* End of reserved indices */ - -/* Legal values for sh_type (section type). */ - -#define SHT_NULL 0 /* Section header table entry unused */ -#define SHT_PROGBITS 1 /* Program data */ -#define SHT_SYMTAB 2 /* Symbol table */ -#define SHT_STRTAB 3 /* String table */ -#define SHT_RELA 4 /* Relocation entries with addends */ -#define SHT_HASH 5 /* Symbol hash table */ -#define SHT_DYNAMIC 6 /* Dynamic linking information */ -#define SHT_NOTE 7 /* Notes */ -#define SHT_NOBITS 8 /* Program space with no data (bss) */ -#define SHT_REL 9 /* Relocation entries, no addends */ -#define SHT_SHLIB 10 /* Reserved */ -#define SHT_DYNSYM 11 /* Dynamic linker symbol table */ -#define SHT_INIT_ARRAY 14 /* Array of constructors */ -#define SHT_FINI_ARRAY 15 /* Array of destructors */ -#define SHT_PREINIT_ARRAY 16 /* Array of pre-constructors */ -#define SHT_GROUP 17 /* Section group */ -#define SHT_SYMTAB_SHNDX 18 /* Extended section indeces */ -#define SHT_NUM 19 /* Number of defined types. */ -#define SHT_LOOS 0x60000000 /* Start OS-specific */ -#define SHT_GNU_LIBLIST 0x6ffffff7 /* Prelink library list */ -#define SHT_CHECKSUM 0x6ffffff8 /* Checksum for DSO content. */ -#define SHT_LOSUNW 0x6ffffffa /* Sun-specific low bound. */ -#define SHT_SUNW_move 0x6ffffffa -#define SHT_SUNW_COMDAT 0x6ffffffb -#define SHT_SUNW_syminfo 0x6ffffffc -#define SHT_GNU_verdef 0x6ffffffd /* Version definition section. */ -#define SHT_GNU_verneed 0x6ffffffe /* Version needs section. */ -#define SHT_GNU_versym 0x6fffffff /* Version symbol table. */ -#define SHT_HISUNW 0x6fffffff /* Sun-specific high bound. */ -#define SHT_HIOS 0x6fffffff /* End OS-specific type */ -#define SHT_LOPROC 0x70000000 /* Start of processor-specific */ -#define SHT_HIPROC 0x7fffffff /* End of processor-specific */ -#define SHT_LOUSER 0x80000000 /* Start of application-specific */ -#define SHT_HIUSER 0x8fffffff /* End of application-specific */ - -/* Legal values for sh_flags (section flags). */ - -#define SHF_WRITE (1 << 0) /* Writable */ -#define SHF_ALLOC (1 << 1) /* Occupies memory during execution */ -#define SHF_EXECINSTR (1 << 2) /* Executable */ -#define SHF_MERGE (1 << 4) /* Might be merged */ -#define SHF_STRINGS (1 << 5) /* Contains nul-terminated strings */ -#define SHF_INFO_LINK (1 << 6) /* `sh_info' contains SHT index */ -#define SHF_LINK_ORDER (1 << 7) /* Preserve order after combining */ -#define SHF_OS_NONCONFORMING (1 << 8) /* Non-standard OS specific handling - required */ -#define SHF_GROUP (1 << 9) /* Section is member of a group. */ -#define SHF_TLS (1 << 10) /* Section hold thread-local data. */ -#define SHF_MASKOS 0x0ff00000 /* OS-specific. */ -#define SHF_MASKPROC 0xf0000000 /* Processor-specific */ -#define SHF_ORDERED (1 << 30) /* Special ordering requirement - (Solaris). */ -#define SHF_EXCLUDE (1 << 31) /* Section is excluded unless - referenced or allocated (Solaris).*/ - -/* Section group handling. */ -#define GRP_COMDAT 0x1 /* Mark group as COMDAT. */ - -/* Symbol table entry. */ - -typedef struct -{ - Elf32_Word st_name; /* Symbol name (string tbl index) */ - Elf32_Addr st_value; /* Symbol value */ - Elf32_Word st_size; /* Symbol size */ - unsigned char st_info; /* Symbol type and binding */ - unsigned char st_other; /* Symbol visibility */ - Elf32_Section st_shndx; /* Section index */ -} Elf32_Sym; - -typedef struct -{ - Elf64_Word st_name; /* Symbol name (string tbl index) */ - unsigned char st_info; /* Symbol type and binding */ - unsigned char st_other; /* Symbol visibility */ - Elf64_Section st_shndx; /* Section index */ - Elf64_Addr st_value; /* Symbol value */ - Elf64_Xword st_size; /* Symbol size */ -} Elf64_Sym; - -/* The syminfo section if available contains additional information about - every dynamic symbol. */ - -typedef struct -{ - Elf32_Half si_boundto; /* Direct bindings, symbol bound to */ - Elf32_Half si_flags; /* Per symbol flags */ -} Elf32_Syminfo; - -typedef struct -{ - Elf64_Half si_boundto; /* Direct bindings, symbol bound to */ - Elf64_Half si_flags; /* Per symbol flags */ -} Elf64_Syminfo; - -/* Possible values for si_boundto. */ -#define SYMINFO_BT_SELF 0xffff /* Symbol bound to self */ -#define SYMINFO_BT_PARENT 0xfffe /* Symbol bound to parent */ -#define SYMINFO_BT_LOWRESERVE 0xff00 /* Beginning of reserved entries */ - -/* Possible bitmasks for si_flags. */ -#define SYMINFO_FLG_DIRECT 0x0001 /* Direct bound symbol */ -#define SYMINFO_FLG_PASSTHRU 0x0002 /* Pass-thru symbol for translator */ -#define SYMINFO_FLG_COPY 0x0004 /* Symbol is a copy-reloc */ -#define SYMINFO_FLG_LAZYLOAD 0x0008 /* Symbol bound to object to be lazy - loaded */ -/* Syminfo version values. */ -#define SYMINFO_NONE 0 -#define SYMINFO_CURRENT 1 -#define SYMINFO_NUM 2 - - -/* How to extract and insert information held in the st_info field. */ - -#define ELF32_ST_BIND(val) (((unsigned char) (val)) >> 4) -#define ELF32_ST_TYPE(val) ((val) & 0xf) -#define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf)) - -/* Both Elf32_Sym and Elf64_Sym use the same one-byte st_info field. */ -#define ELF64_ST_BIND(val) ELF32_ST_BIND (val) -#define ELF64_ST_TYPE(val) ELF32_ST_TYPE (val) -#define ELF64_ST_INFO(bind, type) ELF32_ST_INFO ((bind), (type)) - -/* Legal values for ST_BIND subfield of st_info (symbol binding). */ - -#define STB_LOCAL 0 /* Local symbol */ -#define STB_GLOBAL 1 /* Global symbol */ -#define STB_WEAK 2 /* Weak symbol */ -#define STB_NUM 3 /* Number of defined types. */ -#define STB_LOOS 10 /* Start of OS-specific */ -#define STB_HIOS 12 /* End of OS-specific */ -#define STB_LOPROC 13 /* Start of processor-specific */ -#define STB_HIPROC 15 /* End of processor-specific */ - -/* Legal values for ST_TYPE subfield of st_info (symbol type). */ - -#define STT_NOTYPE 0 /* Symbol type is unspecified */ -#define STT_OBJECT 1 /* Symbol is a data object */ -#define STT_FUNC 2 /* Symbol is a code object */ -#define STT_SECTION 3 /* Symbol associated with a section */ -#define STT_FILE 4 /* Symbol's name is file name */ -#define STT_COMMON 5 /* Symbol is a common data object */ -#define STT_TLS 6 /* Symbol is thread-local data object*/ -#define STT_NUM 7 /* Number of defined types. */ -#define STT_LOOS 10 /* Start of OS-specific */ -#define STT_HIOS 12 /* End of OS-specific */ -#define STT_LOPROC 13 /* Start of processor-specific */ -#define STT_HIPROC 15 /* End of processor-specific */ - - -/* Symbol table indices are found in the hash buckets and chain table - of a symbol hash table section. This special index value indicates - the end of a chain, meaning no further symbols are found in that bucket. */ - -#define STN_UNDEF 0 /* End of a chain. */ - - -/* How to extract and insert information held in the st_other field. */ - -#define ELF32_ST_VISIBILITY(o) ((o) & 0x03) - -/* For ELF64 the definitions are the same. */ -#define ELF64_ST_VISIBILITY(o) ELF32_ST_VISIBILITY (o) - -/* Symbol visibility specification encoded in the st_other field. */ -#define STV_DEFAULT 0 /* Default symbol visibility rules */ -#define STV_INTERNAL 1 /* Processor specific hidden class */ -#define STV_HIDDEN 2 /* Sym unavailable in other modules */ -#define STV_PROTECTED 3 /* Not preemptible, not exported */ - - -/* Relocation table entry without addend (in section of type SHT_REL). */ - -typedef struct -{ - Elf32_Addr r_offset; /* Address */ - Elf32_Word r_info; /* Relocation type and symbol index */ -} Elf32_Rel; - -/* I have seen two different definitions of the Elf64_Rel and - Elf64_Rela structures, so we'll leave them out until Novell (or - whoever) gets their act together. */ -/* The following, at least, is used on Sparc v9, MIPS, and Alpha. */ - -typedef struct -{ - Elf64_Addr r_offset; /* Address */ - Elf64_Xword r_info; /* Relocation type and symbol index */ -} Elf64_Rel; - -/* Relocation table entry with addend (in section of type SHT_RELA). */ - -typedef struct -{ - Elf32_Addr r_offset; /* Address */ - Elf32_Word r_info; /* Relocation type and symbol index */ - Elf32_Sword r_addend; /* Addend */ -} Elf32_Rela; - -typedef struct -{ - Elf64_Addr r_offset; /* Address */ - Elf64_Xword r_info; /* Relocation type and symbol index */ - Elf64_Sxword r_addend; /* Addend */ -} Elf64_Rela; - -/* How to extract and insert information held in the r_info field. */ - -#define ELF32_R_SYM(val) ((val) >> 8) -#define ELF32_R_TYPE(val) ((val) & 0xff) -#define ELF32_R_INFO(sym, type) (((sym) << 8) + ((type) & 0xff)) - -#define ELF64_R_SYM(i) ((i) >> 32) -#define ELF64_R_TYPE(i) ((i) & 0xffffffff) -#define ELF64_R_INFO(sym,type) ((((Elf64_Xword) (sym)) << 32) + (type)) - -/* Program segment header. */ - -typedef struct -{ - Elf32_Word p_type; /* Segment type */ - Elf32_Off p_offset; /* Segment file offset */ - Elf32_Addr p_vaddr; /* Segment virtual address */ - Elf32_Addr p_paddr; /* Segment physical address */ - Elf32_Word p_filesz; /* Segment size in file */ - Elf32_Word p_memsz; /* Segment size in memory */ - Elf32_Word p_flags; /* Segment flags */ - Elf32_Word p_align; /* Segment alignment */ -} Elf32_Phdr; - -typedef struct -{ - Elf64_Word p_type; /* Segment type */ - Elf64_Word p_flags; /* Segment flags */ - Elf64_Off p_offset; /* Segment file offset */ - Elf64_Addr p_vaddr; /* Segment virtual address */ - Elf64_Addr p_paddr; /* Segment physical address */ - Elf64_Xword p_filesz; /* Segment size in file */ - Elf64_Xword p_memsz; /* Segment size in memory */ - Elf64_Xword p_align; /* Segment alignment */ -} Elf64_Phdr; - -/* Legal values for p_type (segment type). */ - -#define PT_NULL 0 /* Program header table entry unused */ -#define PT_LOAD 1 /* Loadable program segment */ -#define PT_DYNAMIC 2 /* Dynamic linking information */ -#define PT_INTERP 3 /* Program interpreter */ -#define PT_NOTE 4 /* Auxiliary information */ -#define PT_SHLIB 5 /* Reserved */ -#define PT_PHDR 6 /* Entry for header table itself */ -#define PT_TLS 7 /* Thread-local storage segment */ -#define PT_NUM 8 /* Number of defined types */ -#define PT_LOOS 0x60000000 /* Start of OS-specific */ -#define PT_GNU_EH_FRAME 0x6474e550 /* GCC .eh_frame_hdr segment */ -#define PT_GNU_STACK 0x6474e551 /* Indicates stack executability */ -#define PT_GNU_RELRO 0x6474e552 /* Read-only after relocation */ -#define PT_LOSUNW 0x6ffffffa -#define PT_SUNWBSS 0x6ffffffa /* Sun Specific segment */ -#define PT_SUNWSTACK 0x6ffffffb /* Stack segment */ -#define PT_HISUNW 0x6fffffff -#define PT_HIOS 0x6fffffff /* End of OS-specific */ -#define PT_LOPROC 0x70000000 /* Start of processor-specific */ -#define PT_HIPROC 0x7fffffff /* End of processor-specific */ - -/* Legal values for p_flags (segment flags). */ - -#define PF_X (1 << 0) /* Segment is executable */ -#define PF_W (1 << 1) /* Segment is writable */ -#define PF_R (1 << 2) /* Segment is readable */ -#define PF_MASKOS 0x0ff00000 /* OS-specific */ -#define PF_MASKPROC 0xf0000000 /* Processor-specific */ - -/* Legal values for note segment descriptor types for core files. */ - -#define NT_PRSTATUS 1 /* Contains copy of prstatus struct */ -#define NT_FPREGSET 2 /* Contains copy of fpregset struct */ -#define NT_PRPSINFO 3 /* Contains copy of prpsinfo struct */ -#define NT_PRXREG 4 /* Contains copy of prxregset struct */ -#define NT_TASKSTRUCT 4 /* Contains copy of task structure */ -#define NT_PLATFORM 5 /* String from sysinfo(SI_PLATFORM) */ -#define NT_AUXV 6 /* Contains copy of auxv array */ -#define NT_GWINDOWS 7 /* Contains copy of gwindows struct */ -#define NT_ASRS 8 /* Contains copy of asrset struct */ -#define NT_PSTATUS 10 /* Contains copy of pstatus struct */ -#define NT_PSINFO 13 /* Contains copy of psinfo struct */ -#define NT_PRCRED 14 /* Contains copy of prcred struct */ -#define NT_UTSNAME 15 /* Contains copy of utsname struct */ -#define NT_LWPSTATUS 16 /* Contains copy of lwpstatus struct */ -#define NT_LWPSINFO 17 /* Contains copy of lwpinfo struct */ -#define NT_PRFPXREG 20 /* Contains copy of fprxregset struct*/ - -/* Legal values for the note segment descriptor types for object files. */ - -#define NT_VERSION 1 /* Contains a version string. */ - - -/* Dynamic section entry. */ - -typedef struct -{ - Elf32_Sword d_tag; /* Dynamic entry type */ - union - { - Elf32_Word d_val; /* Integer value */ - Elf32_Addr d_ptr; /* Address value */ - } d_un; -} Elf32_Dyn; - -typedef struct -{ - Elf64_Sxword d_tag; /* Dynamic entry type */ - union - { - Elf64_Xword d_val; /* Integer value */ - Elf64_Addr d_ptr; /* Address value */ - } d_un; -} Elf64_Dyn; - -/* Legal values for d_tag (dynamic entry type). */ - -#define DT_NULL 0 /* Marks end of dynamic section */ -#define DT_NEEDED 1 /* Name of needed library */ -#define DT_PLTRELSZ 2 /* Size in bytes of PLT relocs */ -#define DT_PLTGOT 3 /* Processor defined value */ -#define DT_HASH 4 /* Address of symbol hash table */ -#define DT_STRTAB 5 /* Address of string table */ -#define DT_SYMTAB 6 /* Address of symbol table */ -#define DT_RELA 7 /* Address of Rela relocs */ -#define DT_RELASZ 8 /* Total size of Rela relocs */ -#define DT_RELAENT 9 /* Size of one Rela reloc */ -#define DT_STRSZ 10 /* Size of string table */ -#define DT_SYMENT 11 /* Size of one symbol table entry */ -#define DT_INIT 12 /* Address of init function */ -#define DT_FINI 13 /* Address of termination function */ -#define DT_SONAME 14 /* Name of shared object */ -#define DT_RPATH 15 /* Library search path (deprecated) */ -#define DT_SYMBOLIC 16 /* Start symbol search here */ -#define DT_REL 17 /* Address of Rel relocs */ -#define DT_RELSZ 18 /* Total size of Rel relocs */ -#define DT_RELENT 19 /* Size of one Rel reloc */ -#define DT_PLTREL 20 /* Type of reloc in PLT */ -#define DT_DEBUG 21 /* For debugging; unspecified */ -#define DT_TEXTREL 22 /* Reloc might modify .text */ -#define DT_JMPREL 23 /* Address of PLT relocs */ -#define DT_BIND_NOW 24 /* Process relocations of object */ -#define DT_INIT_ARRAY 25 /* Array with addresses of init fct */ -#define DT_FINI_ARRAY 26 /* Array with addresses of fini fct */ -#define DT_INIT_ARRAYSZ 27 /* Size in bytes of DT_INIT_ARRAY */ -#define DT_FINI_ARRAYSZ 28 /* Size in bytes of DT_FINI_ARRAY */ -#define DT_RUNPATH 29 /* Library search path */ -#define DT_FLAGS 30 /* Flags for the object being loaded */ -#define DT_ENCODING 32 /* Start of encoded range */ -#define DT_PREINIT_ARRAY 32 /* Array with addresses of preinit fct*/ -#define DT_PREINIT_ARRAYSZ 33 /* size in bytes of DT_PREINIT_ARRAY */ -#define DT_NUM 34 /* Number used */ -#define DT_LOOS 0x6000000d /* Start of OS-specific */ -#define DT_HIOS 0x6ffff000 /* End of OS-specific */ -#define DT_LOPROC 0x70000000 /* Start of processor-specific */ -#define DT_HIPROC 0x7fffffff /* End of processor-specific */ -#define DT_PROCNUM DT_MIPS_NUM /* Most used by any processor */ - -/* DT_* entries which fall between DT_VALRNGHI & DT_VALRNGLO use the - Dyn.d_un.d_val field of the Elf*_Dyn structure. This follows Sun's - approach. */ -#define DT_VALRNGLO 0x6ffffd00 -#define DT_GNU_PRELINKED 0x6ffffdf5 /* Prelinking timestamp */ -#define DT_GNU_CONFLICTSZ 0x6ffffdf6 /* Size of conflict section */ -#define DT_GNU_LIBLISTSZ 0x6ffffdf7 /* Size of library list */ -#define DT_CHECKSUM 0x6ffffdf8 -#define DT_PLTPADSZ 0x6ffffdf9 -#define DT_MOVEENT 0x6ffffdfa -#define DT_MOVESZ 0x6ffffdfb -#define DT_FEATURE_1 0x6ffffdfc /* Feature selection (DTF_*). */ -#define DT_POSFLAG_1 0x6ffffdfd /* Flags for DT_* entries, effecting - the following DT_* entry. */ -#define DT_SYMINSZ 0x6ffffdfe /* Size of syminfo table (in bytes) */ -#define DT_SYMINENT 0x6ffffdff /* Entry size of syminfo */ -#define DT_VALRNGHI 0x6ffffdff -#define DT_VALTAGIDX(tag) (DT_VALRNGHI - (tag)) /* Reverse order! */ -#define DT_VALNUM 12 - -/* DT_* entries which fall between DT_ADDRRNGHI & DT_ADDRRNGLO use the - Dyn.d_un.d_ptr field of the Elf*_Dyn structure. - - If any adjustment is made to the ELF object after it has been - built these entries will need to be adjusted. */ -#define DT_ADDRRNGLO 0x6ffffe00 -#define DT_GNU_CONFLICT 0x6ffffef8 /* Start of conflict section */ -#define DT_GNU_LIBLIST 0x6ffffef9 /* Library list */ -#define DT_CONFIG 0x6ffffefa /* Configuration information. */ -#define DT_DEPAUDIT 0x6ffffefb /* Dependency auditing. */ -#define DT_AUDIT 0x6ffffefc /* Object auditing. */ -#define DT_PLTPAD 0x6ffffefd /* PLT padding. */ -#define DT_MOVETAB 0x6ffffefe /* Move table. */ -#define DT_SYMINFO 0x6ffffeff /* Syminfo table. */ -#define DT_ADDRRNGHI 0x6ffffeff -#define DT_ADDRTAGIDX(tag) (DT_ADDRRNGHI - (tag)) /* Reverse order! */ -#define DT_ADDRNUM 10 - -/* The versioning entry types. The next are defined as part of the - GNU extension. */ -#define DT_VERSYM 0x6ffffff0 - -#define DT_RELACOUNT 0x6ffffff9 -#define DT_RELCOUNT 0x6ffffffa - -/* These were chosen by Sun. */ -#define DT_FLAGS_1 0x6ffffffb /* State flags, see DF_1_* below. */ -#define DT_VERDEF 0x6ffffffc /* Address of version definition - table */ -#define DT_VERDEFNUM 0x6ffffffd /* Number of version definitions */ -#define DT_VERNEED 0x6ffffffe /* Address of table with needed - versions */ -#define DT_VERNEEDNUM 0x6fffffff /* Number of needed versions */ -#define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag)) /* Reverse order! */ -#define DT_VERSIONTAGNUM 16 - -/* Sun added these machine-independent extensions in the "processor-specific" - range. Be compatible. */ -#define DT_AUXILIARY 0x7ffffffd /* Shared object to load before self */ -#define DT_FILTER 0x7fffffff /* Shared object to get values from */ -#define DT_EXTRATAGIDX(tag) ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1) -#define DT_EXTRANUM 3 - -/* Values of `d_un.d_val' in the DT_FLAGS entry. */ -#define DF_ORIGIN 0x00000001 /* Object may use DF_ORIGIN */ -#define DF_SYMBOLIC 0x00000002 /* Symbol resolutions starts here */ -#define DF_TEXTREL 0x00000004 /* Object contains text relocations */ -#define DF_BIND_NOW 0x00000008 /* No lazy binding for this object */ -#define DF_STATIC_TLS 0x00000010 /* Module uses the static TLS model */ - -/* State flags selectable in the `d_un.d_val' element of the DT_FLAGS_1 - entry in the dynamic section. */ -#define DF_1_NOW 0x00000001 /* Set RTLD_NOW for this object. */ -#define DF_1_GLOBAL 0x00000002 /* Set RTLD_GLOBAL for this object. */ -#define DF_1_GROUP 0x00000004 /* Set RTLD_GROUP for this object. */ -#define DF_1_NODELETE 0x00000008 /* Set RTLD_NODELETE for this object.*/ -#define DF_1_LOADFLTR 0x00000010 /* Trigger filtee loading at runtime.*/ -#define DF_1_INITFIRST 0x00000020 /* Set RTLD_INITFIRST for this object*/ -#define DF_1_NOOPEN 0x00000040 /* Set RTLD_NOOPEN for this object. */ -#define DF_1_ORIGIN 0x00000080 /* $ORIGIN must be handled. */ -#define DF_1_DIRECT 0x00000100 /* Direct binding enabled. */ -#define DF_1_TRANS 0x00000200 -#define DF_1_INTERPOSE 0x00000400 /* Object is used to interpose. */ -#define DF_1_NODEFLIB 0x00000800 /* Ignore default lib search path. */ -#define DF_1_NODUMP 0x00001000 /* Object can't be dldump'ed. */ -#define DF_1_CONFALT 0x00002000 /* Configuration alternative created.*/ -#define DF_1_ENDFILTEE 0x00004000 /* Filtee terminates filters search. */ -#define DF_1_DISPRELDNE 0x00008000 /* Disp reloc applied at build time. */ -#define DF_1_DISPRELPND 0x00010000 /* Disp reloc applied at run-time. */ - -/* Flags for the feature selection in DT_FEATURE_1. */ -#define DTF_1_PARINIT 0x00000001 -#define DTF_1_CONFEXP 0x00000002 - -/* Flags in the DT_POSFLAG_1 entry effecting only the next DT_* entry. */ -#define DF_P1_LAZYLOAD 0x00000001 /* Lazyload following object. */ -#define DF_P1_GROUPPERM 0x00000002 /* Symbols from next object are not - generally available. */ - -/* Version definition sections. */ - -typedef struct -{ - Elf32_Half vd_version; /* Version revision */ - Elf32_Half vd_flags; /* Version information */ - Elf32_Half vd_ndx; /* Version Index */ - Elf32_Half vd_cnt; /* Number of associated aux entries */ - Elf32_Word vd_hash; /* Version name hash value */ - Elf32_Word vd_aux; /* Offset in bytes to verdaux array */ - Elf32_Word vd_next; /* Offset in bytes to next verdef - entry */ -} Elf32_Verdef; - -typedef struct -{ - Elf64_Half vd_version; /* Version revision */ - Elf64_Half vd_flags; /* Version information */ - Elf64_Half vd_ndx; /* Version Index */ - Elf64_Half vd_cnt; /* Number of associated aux entries */ - Elf64_Word vd_hash; /* Version name hash value */ - Elf64_Word vd_aux; /* Offset in bytes to verdaux array */ - Elf64_Word vd_next; /* Offset in bytes to next verdef - entry */ -} Elf64_Verdef; - - -/* Legal values for vd_version (version revision). */ -#define VER_DEF_NONE 0 /* No version */ -#define VER_DEF_CURRENT 1 /* Current version */ -#define VER_DEF_NUM 2 /* Given version number */ - -/* Legal values for vd_flags (version information flags). */ -#define VER_FLG_BASE 0x1 /* Version definition of file itself */ -#define VER_FLG_WEAK 0x2 /* Weak version identifier */ - -/* Versym symbol index values. */ -#define VER_NDX_LOCAL 0 /* Symbol is local. */ -#define VER_NDX_GLOBAL 1 /* Symbol is global. */ -#define VER_NDX_LORESERVE 0xff00 /* Beginning of reserved entries. */ -#define VER_NDX_ELIMINATE 0xff01 /* Symbol is to be eliminated. */ - -/* Auxialiary version information. */ - -typedef struct -{ - Elf32_Word vda_name; /* Version or dependency names */ - Elf32_Word vda_next; /* Offset in bytes to next verdaux - entry */ -} Elf32_Verdaux; - -typedef struct -{ - Elf64_Word vda_name; /* Version or dependency names */ - Elf64_Word vda_next; /* Offset in bytes to next verdaux - entry */ -} Elf64_Verdaux; - - -/* Version dependency section. */ - -typedef struct -{ - Elf32_Half vn_version; /* Version of structure */ - Elf32_Half vn_cnt; /* Number of associated aux entries */ - Elf32_Word vn_file; /* Offset of filename for this - dependency */ - Elf32_Word vn_aux; /* Offset in bytes to vernaux array */ - Elf32_Word vn_next; /* Offset in bytes to next verneed - entry */ -} Elf32_Verneed; - -typedef struct -{ - Elf64_Half vn_version; /* Version of structure */ - Elf64_Half vn_cnt; /* Number of associated aux entries */ - Elf64_Word vn_file; /* Offset of filename for this - dependency */ - Elf64_Word vn_aux; /* Offset in bytes to vernaux array */ - Elf64_Word vn_next; /* Offset in bytes to next verneed - entry */ -} Elf64_Verneed; - - -/* Legal values for vn_version (version revision). */ -#define VER_NEED_NONE 0 /* No version */ -#define VER_NEED_CURRENT 1 /* Current version */ -#define VER_NEED_NUM 2 /* Given version number */ - -/* Auxiliary needed version information. */ - -typedef struct -{ - Elf32_Word vna_hash; /* Hash value of dependency name */ - Elf32_Half vna_flags; /* Dependency specific information */ - Elf32_Half vna_other; /* Unused */ - Elf32_Word vna_name; /* Dependency name string offset */ - Elf32_Word vna_next; /* Offset in bytes to next vernaux - entry */ -} Elf32_Vernaux; - -typedef struct -{ - Elf64_Word vna_hash; /* Hash value of dependency name */ - Elf64_Half vna_flags; /* Dependency specific information */ - Elf64_Half vna_other; /* Unused */ - Elf64_Word vna_name; /* Dependency name string offset */ - Elf64_Word vna_next; /* Offset in bytes to next vernaux - entry */ -} Elf64_Vernaux; - - -/* Legal values for vna_flags. */ -#define VER_FLG_WEAK 0x2 /* Weak version identifier */ - - -/* Auxiliary vector. */ - -/* This vector is normally only used by the program interpreter. The - usual definition in an ABI supplement uses the name auxv_t. The - vector is not usually defined in a standard <elf.h> file, but it - can't hurt. We rename it to avoid conflicts. The sizes of these - types are an arrangement between the exec server and the program - interpreter, so we don't fully specify them here. */ - -typedef struct -{ - int a_type; /* Entry type */ - union - { - long int a_val; /* Integer value */ - void *a_ptr; /* Pointer value */ - void (*a_fcn) (void); /* Function pointer value */ - } a_un; -} Elf32_auxv_t; - -typedef struct -{ - long int a_type; /* Entry type */ - union - { - long int a_val; /* Integer value */ - void *a_ptr; /* Pointer value */ - void (*a_fcn) (void); /* Function pointer value */ - } a_un; -} Elf64_auxv_t; - -/* Legal values for a_type (entry type). */ - -#define AT_NULL 0 /* End of vector */ -#define AT_IGNORE 1 /* Entry should be ignored */ -#define AT_EXECFD 2 /* File descriptor of program */ -#define AT_PHDR 3 /* Program headers for program */ -#define AT_PHENT 4 /* Size of program header entry */ -#define AT_PHNUM 5 /* Number of program headers */ -#define AT_PAGESZ 6 /* System page size */ -#define AT_BASE 7 /* Base address of interpreter */ -#define AT_FLAGS 8 /* Flags */ -#define AT_ENTRY 9 /* Entry point of program */ -#define AT_NOTELF 10 /* Program is not ELF */ -#define AT_UID 11 /* Real uid */ -#define AT_EUID 12 /* Effective uid */ -#define AT_GID 13 /* Real gid */ -#define AT_EGID 14 /* Effective gid */ -#define AT_CLKTCK 17 /* Frequency of times() */ - -/* Some more special a_type values describing the hardware. */ -#define AT_PLATFORM 15 /* String identifying platform. */ -#define AT_HWCAP 16 /* Machine dependent hints about - processor capabilities. */ - -/* This entry gives some information about the FPU initialization - performed by the kernel. */ -#define AT_FPUCW 18 /* Used FPU control word. */ - -/* Cache block sizes. */ -#define AT_DCACHEBSIZE 19 /* Data cache block size. */ -#define AT_ICACHEBSIZE 20 /* Instruction cache block size. */ -#define AT_UCACHEBSIZE 21 /* Unified cache block size. */ - -/* A special ignored value for PPC, used by the kernel to control the - interpretation of the AUXV. Must be > 16. */ -#define AT_IGNOREPPC 22 /* Entry should be ignored. */ - -#define AT_SECURE 23 /* Boolean, was exec setuid-like? */ - -/* Pointer to the global system page used for system calls and other - nice things. */ -#define AT_SYSINFO 32 -#define AT_SYSINFO_EHDR 33 - - -/* Note section contents. Each entry in the note section begins with - a header of a fixed form. */ - -typedef struct -{ - Elf32_Word n_namesz; /* Length of the note's name. */ - Elf32_Word n_descsz; /* Length of the note's descriptor. */ - Elf32_Word n_type; /* Type of the note. */ -} Elf32_Nhdr; - -typedef struct -{ - Elf64_Word n_namesz; /* Length of the note's name. */ - Elf64_Word n_descsz; /* Length of the note's descriptor. */ - Elf64_Word n_type; /* Type of the note. */ -} Elf64_Nhdr; - -/* Known names of notes. */ - -/* Solaris entries in the note section have this name. */ -#define ELF_NOTE_SOLARIS "SUNW Solaris" - -/* Note entries for GNU systems have this name. */ -#define ELF_NOTE_GNU "GNU" - - -/* Defined types of notes for Solaris. */ - -/* Value of descriptor (one word) is desired pagesize for the binary. */ -#define ELF_NOTE_PAGESIZE_HINT 1 - - -/* Defined note types for GNU systems. */ - -/* ABI information. The descriptor consists of words: - word 0: OS descriptor - word 1: major version of the ABI - word 2: minor version of the ABI - word 3: subminor version of the ABI -*/ -#define ELF_NOTE_ABI 1 - -/* Known OSes. These value can appear in word 0 of an ELF_NOTE_ABI - note section entry. */ -#define ELF_NOTE_OS_LINUX 0 -#define ELF_NOTE_OS_GNU 1 -#define ELF_NOTE_OS_SOLARIS2 2 -#define ELF_NOTE_OS_FREEBSD 3 - - -/* Move records. */ -typedef struct -{ - Elf32_Xword m_value; /* Symbol value. */ - Elf32_Word m_info; /* Size and index. */ - Elf32_Word m_poffset; /* Symbol offset. */ - Elf32_Half m_repeat; /* Repeat count. */ - Elf32_Half m_stride; /* Stride info. */ -} Elf32_Move; - -typedef struct -{ - Elf64_Xword m_value; /* Symbol value. */ - Elf64_Xword m_info; /* Size and index. */ - Elf64_Xword m_poffset; /* Symbol offset. */ - Elf64_Half m_repeat; /* Repeat count. */ - Elf64_Half m_stride; /* Stride info. */ -} Elf64_Move; - -/* Macro to construct move records. */ -#define ELF32_M_SYM(info) ((info) >> 8) -#define ELF32_M_SIZE(info) ((unsigned char) (info)) -#define ELF32_M_INFO(sym, size) (((sym) << 8) + (unsigned char) (size)) - -#define ELF64_M_SYM(info) ELF32_M_SYM (info) -#define ELF64_M_SIZE(info) ELF32_M_SIZE (info) -#define ELF64_M_INFO(sym, size) ELF32_M_INFO (sym, size) - - -/* Motorola 68k specific definitions. */ - -/* Values for Elf32_Ehdr.e_flags. */ -#define EF_CPU32 0x00810000 - -/* m68k relocs. */ - -#define R_68K_NONE 0 /* No reloc */ -#define R_68K_32 1 /* Direct 32 bit */ -#define R_68K_16 2 /* Direct 16 bit */ -#define R_68K_8 3 /* Direct 8 bit */ -#define R_68K_PC32 4 /* PC relative 32 bit */ -#define R_68K_PC16 5 /* PC relative 16 bit */ -#define R_68K_PC8 6 /* PC relative 8 bit */ -#define R_68K_GOT32 7 /* 32 bit PC relative GOT entry */ -#define R_68K_GOT16 8 /* 16 bit PC relative GOT entry */ -#define R_68K_GOT8 9 /* 8 bit PC relative GOT entry */ -#define R_68K_GOT32O 10 /* 32 bit GOT offset */ -#define R_68K_GOT16O 11 /* 16 bit GOT offset */ -#define R_68K_GOT8O 12 /* 8 bit GOT offset */ -#define R_68K_PLT32 13 /* 32 bit PC relative PLT address */ -#define R_68K_PLT16 14 /* 16 bit PC relative PLT address */ -#define R_68K_PLT8 15 /* 8 bit PC relative PLT address */ -#define R_68K_PLT32O 16 /* 32 bit PLT offset */ -#define R_68K_PLT16O 17 /* 16 bit PLT offset */ -#define R_68K_PLT8O 18 /* 8 bit PLT offset */ -#define R_68K_COPY 19 /* Copy symbol at runtime */ -#define R_68K_GLOB_DAT 20 /* Create GOT entry */ -#define R_68K_JMP_SLOT 21 /* Create PLT entry */ -#define R_68K_RELATIVE 22 /* Adjust by program base */ -/* Keep this the last entry. */ -#define R_68K_NUM 23 - -/* Intel 80386 specific definitions. */ - -/* i386 relocs. */ - -#define R_386_NONE 0 /* No reloc */ -#define R_386_32 1 /* Direct 32 bit */ -#define R_386_PC32 2 /* PC relative 32 bit */ -#define R_386_GOT32 3 /* 32 bit GOT entry */ -#define R_386_PLT32 4 /* 32 bit PLT address */ -#define R_386_COPY 5 /* Copy symbol at runtime */ -#define R_386_GLOB_DAT 6 /* Create GOT entry */ -#define R_386_JMP_SLOT 7 /* Create PLT entry */ -#define R_386_RELATIVE 8 /* Adjust by program base */ -#define R_386_GOTOFF 9 /* 32 bit offset to GOT */ -#define R_386_GOTPC 10 /* 32 bit PC relative offset to GOT */ -#define R_386_32PLT 11 -#define R_386_TLS_TPOFF 14 /* Offset in static TLS block */ -#define R_386_TLS_IE 15 /* Address of GOT entry for static TLS - block offset */ -#define R_386_TLS_GOTIE 16 /* GOT entry for static TLS block - offset */ -#define R_386_TLS_LE 17 /* Offset relative to static TLS - block */ -#define R_386_TLS_GD 18 /* Direct 32 bit for GNU version of - general dynamic thread local data */ -#define R_386_TLS_LDM 19 /* Direct 32 bit for GNU version of - local dynamic thread local data - in LE code */ -#define R_386_16 20 -#define R_386_PC16 21 -#define R_386_8 22 -#define R_386_PC8 23 -#define R_386_TLS_GD_32 24 /* Direct 32 bit for general dynamic - thread local data */ -#define R_386_TLS_GD_PUSH 25 /* Tag for pushl in GD TLS code */ -#define R_386_TLS_GD_CALL 26 /* Relocation for call to - __tls_get_addr() */ -#define R_386_TLS_GD_POP 27 /* Tag for popl in GD TLS code */ -#define R_386_TLS_LDM_32 28 /* Direct 32 bit for local dynamic - thread local data in LE code */ -#define R_386_TLS_LDM_PUSH 29 /* Tag for pushl in LDM TLS code */ -#define R_386_TLS_LDM_CALL 30 /* Relocation for call to - __tls_get_addr() in LDM code */ -#define R_386_TLS_LDM_POP 31 /* Tag for popl in LDM TLS code */ -#define R_386_TLS_LDO_32 32 /* Offset relative to TLS block */ -#define R_386_TLS_IE_32 33 /* GOT entry for negated static TLS - block offset */ -#define R_386_TLS_LE_32 34 /* Negated offset relative to static - TLS block */ -#define R_386_TLS_DTPMOD32 35 /* ID of module containing symbol */ -#define R_386_TLS_DTPOFF32 36 /* Offset in TLS block */ -#define R_386_TLS_TPOFF32 37 /* Negated offset in static TLS block */ -/* Keep this the last entry. */ -#define R_386_NUM 38 - -/* SUN SPARC specific definitions. */ - -/* Legal values for ST_TYPE subfield of st_info (symbol type). */ - -#define STT_SPARC_REGISTER 13 /* Global register reserved to app. */ - -/* Values for Elf64_Ehdr.e_flags. */ - -#define EF_SPARCV9_MM 3 -#define EF_SPARCV9_TSO 0 -#define EF_SPARCV9_PSO 1 -#define EF_SPARCV9_RMO 2 -#define EF_SPARC_LEDATA 0x800000 /* little endian data */ -#define EF_SPARC_EXT_MASK 0xFFFF00 -#define EF_SPARC_32PLUS 0x000100 /* generic V8+ features */ -#define EF_SPARC_SUN_US1 0x000200 /* Sun UltraSPARC1 extensions */ -#define EF_SPARC_HAL_R1 0x000400 /* HAL R1 extensions */ -#define EF_SPARC_SUN_US3 0x000800 /* Sun UltraSPARCIII extensions */ - -/* SPARC relocs. */ - -#define R_SPARC_NONE 0 /* No reloc */ -#define R_SPARC_8 1 /* Direct 8 bit */ -#define R_SPARC_16 2 /* Direct 16 bit */ -#define R_SPARC_32 3 /* Direct 32 bit */ -#define R_SPARC_DISP8 4 /* PC relative 8 bit */ -#define R_SPARC_DISP16 5 /* PC relative 16 bit */ -#define R_SPARC_DISP32 6 /* PC relative 32 bit */ -#define R_SPARC_WDISP30 7 /* PC relative 30 bit shifted */ -#define R_SPARC_WDISP22 8 /* PC relative 22 bit shifted */ -#define R_SPARC_HI22 9 /* High 22 bit */ -#define R_SPARC_22 10 /* Direct 22 bit */ -#define R_SPARC_13 11 /* Direct 13 bit */ -#define R_SPARC_LO10 12 /* Truncated 10 bit */ -#define R_SPARC_GOT10 13 /* Truncated 10 bit GOT entry */ -#define R_SPARC_GOT13 14 /* 13 bit GOT entry */ -#define R_SPARC_GOT22 15 /* 22 bit GOT entry shifted */ -#define R_SPARC_PC10 16 /* PC relative 10 bit truncated */ -#define R_SPARC_PC22 17 /* PC relative 22 bit shifted */ -#define R_SPARC_WPLT30 18 /* 30 bit PC relative PLT address */ -#define R_SPARC_COPY 19 /* Copy symbol at runtime */ -#define R_SPARC_GLOB_DAT 20 /* Create GOT entry */ -#define R_SPARC_JMP_SLOT 21 /* Create PLT entry */ -#define R_SPARC_RELATIVE 22 /* Adjust by program base */ -#define R_SPARC_UA32 23 /* Direct 32 bit unaligned */ - -/* Additional Sparc64 relocs. */ - -#define R_SPARC_PLT32 24 /* Direct 32 bit ref to PLT entry */ -#define R_SPARC_HIPLT22 25 /* High 22 bit PLT entry */ -#define R_SPARC_LOPLT10 26 /* Truncated 10 bit PLT entry */ -#define R_SPARC_PCPLT32 27 /* PC rel 32 bit ref to PLT entry */ -#define R_SPARC_PCPLT22 28 /* PC rel high 22 bit PLT entry */ -#define R_SPARC_PCPLT10 29 /* PC rel trunc 10 bit PLT entry */ -#define R_SPARC_10 30 /* Direct 10 bit */ -#define R_SPARC_11 31 /* Direct 11 bit */ -#define R_SPARC_64 32 /* Direct 64 bit */ -#define R_SPARC_OLO10 33 /* 10bit with secondary 13bit addend */ -#define R_SPARC_HH22 34 /* Top 22 bits of direct 64 bit */ -#define R_SPARC_HM10 35 /* High middle 10 bits of ... */ -#define R_SPARC_LM22 36 /* Low middle 22 bits of ... */ -#define R_SPARC_PC_HH22 37 /* Top 22 bits of pc rel 64 bit */ -#define R_SPARC_PC_HM10 38 /* High middle 10 bit of ... */ -#define R_SPARC_PC_LM22 39 /* Low miggle 22 bits of ... */ -#define R_SPARC_WDISP16 40 /* PC relative 16 bit shifted */ -#define R_SPARC_WDISP19 41 /* PC relative 19 bit shifted */ -#define R_SPARC_7 43 /* Direct 7 bit */ -#define R_SPARC_5 44 /* Direct 5 bit */ -#define R_SPARC_6 45 /* Direct 6 bit */ -#define R_SPARC_DISP64 46 /* PC relative 64 bit */ -#define R_SPARC_PLT64 47 /* Direct 64 bit ref to PLT entry */ -#define R_SPARC_HIX22 48 /* High 22 bit complemented */ -#define R_SPARC_LOX10 49 /* Truncated 11 bit complemented */ -#define R_SPARC_H44 50 /* Direct high 12 of 44 bit */ -#define R_SPARC_M44 51 /* Direct mid 22 of 44 bit */ -#define R_SPARC_L44 52 /* Direct low 10 of 44 bit */ -#define R_SPARC_REGISTER 53 /* Global register usage */ -#define R_SPARC_UA64 54 /* Direct 64 bit unaligned */ -#define R_SPARC_UA16 55 /* Direct 16 bit unaligned */ -#define R_SPARC_TLS_GD_HI22 56 -#define R_SPARC_TLS_GD_LO10 57 -#define R_SPARC_TLS_GD_ADD 58 -#define R_SPARC_TLS_GD_CALL 59 -#define R_SPARC_TLS_LDM_HI22 60 -#define R_SPARC_TLS_LDM_LO10 61 -#define R_SPARC_TLS_LDM_ADD 62 -#define R_SPARC_TLS_LDM_CALL 63 -#define R_SPARC_TLS_LDO_HIX22 64 -#define R_SPARC_TLS_LDO_LOX10 65 -#define R_SPARC_TLS_LDO_ADD 66 -#define R_SPARC_TLS_IE_HI22 67 -#define R_SPARC_TLS_IE_LO10 68 -#define R_SPARC_TLS_IE_LD 69 -#define R_SPARC_TLS_IE_LDX 70 -#define R_SPARC_TLS_IE_ADD 71 -#define R_SPARC_TLS_LE_HIX22 72 -#define R_SPARC_TLS_LE_LOX10 73 -#define R_SPARC_TLS_DTPMOD32 74 -#define R_SPARC_TLS_DTPMOD64 75 -#define R_SPARC_TLS_DTPOFF32 76 -#define R_SPARC_TLS_DTPOFF64 77 -#define R_SPARC_TLS_TPOFF32 78 -#define R_SPARC_TLS_TPOFF64 79 -/* Keep this the last entry. */ -#define R_SPARC_NUM 80 - -/* For Sparc64, legal values for d_tag of Elf64_Dyn. */ - -#define DT_SPARC_REGISTER 0x70000001 -#define DT_SPARC_NUM 2 - -/* Bits present in AT_HWCAP, primarily for Sparc32. */ - -#define HWCAP_SPARC_FLUSH 1 /* The cpu supports flush insn. */ -#define HWCAP_SPARC_STBAR 2 -#define HWCAP_SPARC_SWAP 4 -#define HWCAP_SPARC_MULDIV 8 -#define HWCAP_SPARC_V9 16 /* The cpu is v9, so v8plus is ok. */ -#define HWCAP_SPARC_ULTRA3 32 - -/* MIPS R3000 specific definitions. */ - -/* Legal values for e_flags field of Elf32_Ehdr. */ - -#define EF_MIPS_NOREORDER 1 /* A .noreorder directive was used */ -#define EF_MIPS_PIC 2 /* Contains PIC code */ -#define EF_MIPS_CPIC 4 /* Uses PIC calling sequence */ -#define EF_MIPS_XGOT 8 -#define EF_MIPS_64BIT_WHIRL 16 -#define EF_MIPS_ABI2 32 -#define EF_MIPS_ABI_ON32 64 -#define EF_MIPS_ARCH 0xf0000000 /* MIPS architecture level */ - -/* Legal values for MIPS architecture level. */ - -#define EF_MIPS_ARCH_1 0x00000000 /* -mips1 code. */ -#define EF_MIPS_ARCH_2 0x10000000 /* -mips2 code. */ -#define EF_MIPS_ARCH_3 0x20000000 /* -mips3 code. */ -#define EF_MIPS_ARCH_4 0x30000000 /* -mips4 code. */ -#define EF_MIPS_ARCH_5 0x40000000 /* -mips5 code. */ -#define EF_MIPS_ARCH_32 0x60000000 /* MIPS32 code. */ -#define EF_MIPS_ARCH_64 0x70000000 /* MIPS64 code. */ - -/* The following are non-official names and should not be used. */ - -#define E_MIPS_ARCH_1 0x00000000 /* -mips1 code. */ -#define E_MIPS_ARCH_2 0x10000000 /* -mips2 code. */ -#define E_MIPS_ARCH_3 0x20000000 /* -mips3 code. */ -#define E_MIPS_ARCH_4 0x30000000 /* -mips4 code. */ -#define E_MIPS_ARCH_5 0x40000000 /* -mips5 code. */ -#define E_MIPS_ARCH_32 0x60000000 /* MIPS32 code. */ -#define E_MIPS_ARCH_64 0x70000000 /* MIPS64 code. */ - -/* Special section indices. */ - -#define SHN_MIPS_ACOMMON 0xff00 /* Allocated common symbols */ -#define SHN_MIPS_TEXT 0xff01 /* Allocated test symbols. */ -#define SHN_MIPS_DATA 0xff02 /* Allocated data symbols. */ -#define SHN_MIPS_SCOMMON 0xff03 /* Small common symbols */ -#define SHN_MIPS_SUNDEFINED 0xff04 /* Small undefined symbols */ - -/* Legal values for sh_type field of Elf32_Shdr. */ - -#define SHT_MIPS_LIBLIST 0x70000000 /* Shared objects used in link */ -#define SHT_MIPS_MSYM 0x70000001 -#define SHT_MIPS_CONFLICT 0x70000002 /* Conflicting symbols */ -#define SHT_MIPS_GPTAB 0x70000003 /* Global data area sizes */ -#define SHT_MIPS_UCODE 0x70000004 /* Reserved for SGI/MIPS compilers */ -#define SHT_MIPS_DEBUG 0x70000005 /* MIPS ECOFF debugging information*/ -#define SHT_MIPS_REGINFO 0x70000006 /* Register usage information */ -#define SHT_MIPS_PACKAGE 0x70000007 -#define SHT_MIPS_PACKSYM 0x70000008 -#define SHT_MIPS_RELD 0x70000009 -#define SHT_MIPS_IFACE 0x7000000b -#define SHT_MIPS_CONTENT 0x7000000c -#define SHT_MIPS_OPTIONS 0x7000000d /* Miscellaneous options. */ -#define SHT_MIPS_SHDR 0x70000010 -#define SHT_MIPS_FDESC 0x70000011 -#define SHT_MIPS_EXTSYM 0x70000012 -#define SHT_MIPS_DENSE 0x70000013 -#define SHT_MIPS_PDESC 0x70000014 -#define SHT_MIPS_LOCSYM 0x70000015 -#define SHT_MIPS_AUXSYM 0x70000016 -#define SHT_MIPS_OPTSYM 0x70000017 -#define SHT_MIPS_LOCSTR 0x70000018 -#define SHT_MIPS_LINE 0x70000019 -#define SHT_MIPS_RFDESC 0x7000001a -#define SHT_MIPS_DELTASYM 0x7000001b -#define SHT_MIPS_DELTAINST 0x7000001c -#define SHT_MIPS_DELTACLASS 0x7000001d -#define SHT_MIPS_DWARF 0x7000001e /* DWARF debugging information. */ -#define SHT_MIPS_DELTADECL 0x7000001f -#define SHT_MIPS_SYMBOL_LIB 0x70000020 -#define SHT_MIPS_EVENTS 0x70000021 /* Event section. */ -#define SHT_MIPS_TRANSLATE 0x70000022 -#define SHT_MIPS_PIXIE 0x70000023 -#define SHT_MIPS_XLATE 0x70000024 -#define SHT_MIPS_XLATE_DEBUG 0x70000025 -#define SHT_MIPS_WHIRL 0x70000026 -#define SHT_MIPS_EH_REGION 0x70000027 -#define SHT_MIPS_XLATE_OLD 0x70000028 -#define SHT_MIPS_PDR_EXCEPTION 0x70000029 - -/* Legal values for sh_flags field of Elf32_Shdr. */ - -#define SHF_MIPS_GPREL 0x10000000 /* Must be part of global data area */ -#define SHF_MIPS_MERGE 0x20000000 -#define SHF_MIPS_ADDR 0x40000000 -#define SHF_MIPS_STRINGS 0x80000000 -#define SHF_MIPS_NOSTRIP 0x08000000 -#define SHF_MIPS_LOCAL 0x04000000 -#define SHF_MIPS_NAMES 0x02000000 -#define SHF_MIPS_NODUPE 0x01000000 - - -/* Symbol tables. */ - -/* MIPS specific values for `st_other'. */ -#define STO_MIPS_DEFAULT 0x0 -#define STO_MIPS_INTERNAL 0x1 -#define STO_MIPS_HIDDEN 0x2 -#define STO_MIPS_PROTECTED 0x3 -#define STO_MIPS_SC_ALIGN_UNUSED 0xff - -/* MIPS specific values for `st_info'. */ -#define STB_MIPS_SPLIT_COMMON 13 - -/* Entries found in sections of type SHT_MIPS_GPTAB. */ - -typedef union -{ - struct - { - Elf32_Word gt_current_g_value; /* -G value used for compilation */ - Elf32_Word gt_unused; /* Not used */ - } gt_header; /* First entry in section */ - struct - { - Elf32_Word gt_g_value; /* If this value were used for -G */ - Elf32_Word gt_bytes; /* This many bytes would be used */ - } gt_entry; /* Subsequent entries in section */ -} Elf32_gptab; - -/* Entry found in sections of type SHT_MIPS_REGINFO. */ - -typedef struct -{ - Elf32_Word ri_gprmask; /* General registers used */ - Elf32_Word ri_cprmask[4]; /* Coprocessor registers used */ - Elf32_Sword ri_gp_value; /* $gp register value */ -} Elf32_RegInfo; - -/* Entries found in sections of type SHT_MIPS_OPTIONS. */ - -typedef struct -{ - unsigned char kind; /* Determines interpretation of the - variable part of descriptor. */ - unsigned char size; /* Size of descriptor, including header. */ - Elf32_Section section; /* Section header index of section affected, - 0 for global options. */ - Elf32_Word info; /* Kind-specific information. */ -} Elf_Options; - -/* Values for `kind' field in Elf_Options. */ - -#define ODK_NULL 0 /* Undefined. */ -#define ODK_REGINFO 1 /* Register usage information. */ -#define ODK_EXCEPTIONS 2 /* Exception processing options. */ -#define ODK_PAD 3 /* Section padding options. */ -#define ODK_HWPATCH 4 /* Hardware workarounds performed */ -#define ODK_FILL 5 /* record the fill value used by the linker. */ -#define ODK_TAGS 6 /* reserve space for desktop tools to write. */ -#define ODK_HWAND 7 /* HW workarounds. 'AND' bits when merging. */ -#define ODK_HWOR 8 /* HW workarounds. 'OR' bits when merging. */ - -/* Values for `info' in Elf_Options for ODK_EXCEPTIONS entries. */ - -#define OEX_FPU_MIN 0x1f /* FPE's which MUST be enabled. */ -#define OEX_FPU_MAX 0x1f00 /* FPE's which MAY be enabled. */ -#define OEX_PAGE0 0x10000 /* page zero must be mapped. */ -#define OEX_SMM 0x20000 /* Force sequential memory mode? */ -#define OEX_FPDBUG 0x40000 /* Force floating point debug mode? */ -#define OEX_PRECISEFP OEX_FPDBUG -#define OEX_DISMISS 0x80000 /* Dismiss invalid address faults? */ - -#define OEX_FPU_INVAL 0x10 -#define OEX_FPU_DIV0 0x08 -#define OEX_FPU_OFLO 0x04 -#define OEX_FPU_UFLO 0x02 -#define OEX_FPU_INEX 0x01 - -/* Masks for `info' in Elf_Options for an ODK_HWPATCH entry. */ - -#define OHW_R4KEOP 0x1 /* R4000 end-of-page patch. */ -#define OHW_R8KPFETCH 0x2 /* may need R8000 prefetch patch. */ -#define OHW_R5KEOP 0x4 /* R5000 end-of-page patch. */ -#define OHW_R5KCVTL 0x8 /* R5000 cvt.[ds].l bug. clean=1. */ - -#define OPAD_PREFIX 0x1 -#define OPAD_POSTFIX 0x2 -#define OPAD_SYMBOL 0x4 - -/* Entry found in `.options' section. */ - -typedef struct -{ - Elf32_Word hwp_flags1; /* Extra flags. */ - Elf32_Word hwp_flags2; /* Extra flags. */ -} Elf_Options_Hw; - -/* Masks for `info' in ElfOptions for ODK_HWAND and ODK_HWOR entries. */ - -#define OHWA0_R4KEOP_CHECKED 0x00000001 -#define OHWA1_R4KEOP_CLEAN 0x00000002 - -/* MIPS relocs. */ - -#define R_MIPS_NONE 0 /* No reloc */ -#define R_MIPS_16 1 /* Direct 16 bit */ -#define R_MIPS_32 2 /* Direct 32 bit */ -#define R_MIPS_REL32 3 /* PC relative 32 bit */ -#define R_MIPS_26 4 /* Direct 26 bit shifted */ -#define R_MIPS_HI16 5 /* High 16 bit */ -#define R_MIPS_LO16 6 /* Low 16 bit */ -#define R_MIPS_GPREL16 7 /* GP relative 16 bit */ -#define R_MIPS_LITERAL 8 /* 16 bit literal entry */ -#define R_MIPS_GOT16 9 /* 16 bit GOT entry */ -#define R_MIPS_PC16 10 /* PC relative 16 bit */ -#define R_MIPS_CALL16 11 /* 16 bit GOT entry for function */ -#define R_MIPS_GPREL32 12 /* GP relative 32 bit */ - -#define R_MIPS_SHIFT5 16 -#define R_MIPS_SHIFT6 17 -#define R_MIPS_64 18 -#define R_MIPS_GOT_DISP 19 -#define R_MIPS_GOT_PAGE 20 -#define R_MIPS_GOT_OFST 21 -#define R_MIPS_GOT_HI16 22 -#define R_MIPS_GOT_LO16 23 -#define R_MIPS_SUB 24 -#define R_MIPS_INSERT_A 25 -#define R_MIPS_INSERT_B 26 -#define R_MIPS_DELETE 27 -#define R_MIPS_HIGHER 28 -#define R_MIPS_HIGHEST 29 -#define R_MIPS_CALL_HI16 30 -#define R_MIPS_CALL_LO16 31 -#define R_MIPS_SCN_DISP 32 -#define R_MIPS_REL16 33 -#define R_MIPS_ADD_IMMEDIATE 34 -#define R_MIPS_PJUMP 35 -#define R_MIPS_RELGOT 36 -#define R_MIPS_JALR 37 -/* Keep this the last entry. */ -#define R_MIPS_NUM 38 - -/* Legal values for p_type field of Elf32_Phdr. */ - -#define PT_MIPS_REGINFO 0x70000000 /* Register usage information */ -#define PT_MIPS_RTPROC 0x70000001 /* Runtime procedure table. */ -#define PT_MIPS_OPTIONS 0x70000002 - -/* Special program header types. */ - -#define PF_MIPS_LOCAL 0x10000000 - -/* Legal values for d_tag field of Elf32_Dyn. */ - -#define DT_MIPS_RLD_VERSION 0x70000001 /* Runtime linker interface version */ -#define DT_MIPS_TIME_STAMP 0x70000002 /* Timestamp */ -#define DT_MIPS_ICHECKSUM 0x70000003 /* Checksum */ -#define DT_MIPS_IVERSION 0x70000004 /* Version string (string tbl index) */ -#define DT_MIPS_FLAGS 0x70000005 /* Flags */ -#define DT_MIPS_BASE_ADDRESS 0x70000006 /* Base address */ -#define DT_MIPS_MSYM 0x70000007 -#define DT_MIPS_CONFLICT 0x70000008 /* Address of CONFLICT section */ -#define DT_MIPS_LIBLIST 0x70000009 /* Address of LIBLIST section */ -#define DT_MIPS_LOCAL_GOTNO 0x7000000a /* Number of local GOT entries */ -#define DT_MIPS_CONFLICTNO 0x7000000b /* Number of CONFLICT entries */ -#define DT_MIPS_LIBLISTNO 0x70000010 /* Number of LIBLIST entries */ -#define DT_MIPS_SYMTABNO 0x70000011 /* Number of DYNSYM entries */ -#define DT_MIPS_UNREFEXTNO 0x70000012 /* First external DYNSYM */ -#define DT_MIPS_GOTSYM 0x70000013 /* First GOT entry in DYNSYM */ -#define DT_MIPS_HIPAGENO 0x70000014 /* Number of GOT page table entries */ -#define DT_MIPS_RLD_MAP 0x70000016 /* Address of run time loader map. */ -#define DT_MIPS_DELTA_CLASS 0x70000017 /* Delta C++ class definition. */ -#define DT_MIPS_DELTA_CLASS_NO 0x70000018 /* Number of entries in - DT_MIPS_DELTA_CLASS. */ -#define DT_MIPS_DELTA_INSTANCE 0x70000019 /* Delta C++ class instances. */ -#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a /* Number of entries in - DT_MIPS_DELTA_INSTANCE. */ -#define DT_MIPS_DELTA_RELOC 0x7000001b /* Delta relocations. */ -#define DT_MIPS_DELTA_RELOC_NO 0x7000001c /* Number of entries in - DT_MIPS_DELTA_RELOC. */ -#define DT_MIPS_DELTA_SYM 0x7000001d /* Delta symbols that Delta - relocations refer to. */ -#define DT_MIPS_DELTA_SYM_NO 0x7000001e /* Number of entries in - DT_MIPS_DELTA_SYM. */ -#define DT_MIPS_DELTA_CLASSSYM 0x70000020 /* Delta symbols that hold the - class declaration. */ -#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021 /* Number of entries in - DT_MIPS_DELTA_CLASSSYM. */ -#define DT_MIPS_CXX_FLAGS 0x70000022 /* Flags indicating for C++ flavor. */ -#define DT_MIPS_PIXIE_INIT 0x70000023 -#define DT_MIPS_SYMBOL_LIB 0x70000024 -#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025 -#define DT_MIPS_LOCAL_GOTIDX 0x70000026 -#define DT_MIPS_HIDDEN_GOTIDX 0x70000027 -#define DT_MIPS_PROTECTED_GOTIDX 0x70000028 -#define DT_MIPS_OPTIONS 0x70000029 /* Address of .options. */ -#define DT_MIPS_INTERFACE 0x7000002a /* Address of .interface. */ -#define DT_MIPS_DYNSTR_ALIGN 0x7000002b -#define DT_MIPS_INTERFACE_SIZE 0x7000002c /* Size of the .interface section. */ -#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d /* Address of rld_text_rsolve - function stored in GOT. */ -#define DT_MIPS_PERF_SUFFIX 0x7000002e /* Default suffix of dso to be added - by rld on dlopen() calls. */ -#define DT_MIPS_COMPACT_SIZE 0x7000002f /* (O32)Size of compact rel section. */ -#define DT_MIPS_GP_VALUE 0x70000030 /* GP value for aux GOTs. */ -#define DT_MIPS_AUX_DYNAMIC 0x70000031 /* Address of aux .dynamic. */ -#define DT_MIPS_NUM 0x32 - -/* Legal values for DT_MIPS_FLAGS Elf32_Dyn entry. */ - -#define RHF_NONE 0 /* No flags */ -#define RHF_QUICKSTART (1 << 0) /* Use quickstart */ -#define RHF_NOTPOT (1 << 1) /* Hash size not power of 2 */ -#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2) /* Ignore LD_LIBRARY_PATH */ -#define RHF_NO_MOVE (1 << 3) -#define RHF_SGI_ONLY (1 << 4) -#define RHF_GUARANTEE_INIT (1 << 5) -#define RHF_DELTA_C_PLUS_PLUS (1 << 6) -#define RHF_GUARANTEE_START_INIT (1 << 7) -#define RHF_PIXIE (1 << 8) -#define RHF_DEFAULT_DELAY_LOAD (1 << 9) -#define RHF_REQUICKSTART (1 << 10) -#define RHF_REQUICKSTARTED (1 << 11) -#define RHF_CORD (1 << 12) -#define RHF_NO_UNRES_UNDEF (1 << 13) -#define RHF_RLD_ORDER_SAFE (1 << 14) - -/* Entries found in sections of type SHT_MIPS_LIBLIST. */ - -typedef struct -{ - Elf32_Word l_name; /* Name (string table index) */ - Elf32_Word l_time_stamp; /* Timestamp */ - Elf32_Word l_checksum; /* Checksum */ - Elf32_Word l_version; /* Interface version */ - Elf32_Word l_flags; /* Flags */ -} Elf32_Lib; - -typedef struct -{ - Elf64_Word l_name; /* Name (string table index) */ - Elf64_Word l_time_stamp; /* Timestamp */ - Elf64_Word l_checksum; /* Checksum */ - Elf64_Word l_version; /* Interface version */ - Elf64_Word l_flags; /* Flags */ -} Elf64_Lib; - - -/* Legal values for l_flags. */ - -#define LL_NONE 0 -#define LL_EXACT_MATCH (1 << 0) /* Require exact match */ -#define LL_IGNORE_INT_VER (1 << 1) /* Ignore interface version */ -#define LL_REQUIRE_MINOR (1 << 2) -#define LL_EXPORTS (1 << 3) -#define LL_DELAY_LOAD (1 << 4) -#define LL_DELTA (1 << 5) - -/* Entries found in sections of type SHT_MIPS_CONFLICT. */ - -typedef Elf32_Addr Elf32_Conflict; - - -/* HPPA specific definitions. */ - -/* Legal values for e_flags field of Elf32_Ehdr. */ - -#define EF_PARISC_TRAPNIL 0x00010000 /* Trap nil pointer dereference. */ -#define EF_PARISC_EXT 0x00020000 /* Program uses arch. extensions. */ -#define EF_PARISC_LSB 0x00040000 /* Program expects little endian. */ -#define EF_PARISC_WIDE 0x00080000 /* Program expects wide mode. */ -#define EF_PARISC_NO_KABP 0x00100000 /* No kernel assisted branch - prediction. */ -#define EF_PARISC_LAZYSWAP 0x00400000 /* Allow lazy swapping. */ -#define EF_PARISC_ARCH 0x0000ffff /* Architecture version. */ - -/* Defined values for `e_flags & EF_PARISC_ARCH' are: */ - -#define EFA_PARISC_1_0 0x020b /* PA-RISC 1.0 big-endian. */ -#define EFA_PARISC_1_1 0x0210 /* PA-RISC 1.1 big-endian. */ -#define EFA_PARISC_2_0 0x0214 /* PA-RISC 2.0 big-endian. */ - -/* Additional section indeces. */ - -#define SHN_PARISC_ANSI_COMMON 0xff00 /* Section for tenatively declared - symbols in ANSI C. */ -#define SHN_PARISC_HUGE_COMMON 0xff01 /* Common blocks in huge model. */ - -/* Legal values for sh_type field of Elf32_Shdr. */ - -#define SHT_PARISC_EXT 0x70000000 /* Contains product specific ext. */ -#define SHT_PARISC_UNWIND 0x70000001 /* Unwind information. */ -#define SHT_PARISC_DOC 0x70000002 /* Debug info for optimized code. */ - -/* Legal values for sh_flags field of Elf32_Shdr. */ - -#define SHF_PARISC_SHORT 0x20000000 /* Section with short addressing. */ -#define SHF_PARISC_HUGE 0x40000000 /* Section far from gp. */ -#define SHF_PARISC_SBP 0x80000000 /* Static branch prediction code. */ - -/* Legal values for ST_TYPE subfield of st_info (symbol type). */ - -#define STT_PARISC_MILLICODE 13 /* Millicode function entry point. */ - -#define STT_HP_OPAQUE (STT_LOOS + 0x1) -#define STT_HP_STUB (STT_LOOS + 0x2) - -/* HPPA relocs. */ - -#define R_PARISC_NONE 0 /* No reloc. */ -#define R_PARISC_DIR32 1 /* Direct 32-bit reference. */ -#define R_PARISC_DIR21L 2 /* Left 21 bits of eff. address. */ -#define R_PARISC_DIR17R 3 /* Right 17 bits of eff. address. */ -#define R_PARISC_DIR17F 4 /* 17 bits of eff. address. */ -#define R_PARISC_DIR14R 6 /* Right 14 bits of eff. address. */ -#define R_PARISC_PCREL32 9 /* 32-bit rel. address. */ -#define R_PARISC_PCREL21L 10 /* Left 21 bits of rel. address. */ -#define R_PARISC_PCREL17R 11 /* Right 17 bits of rel. address. */ -#define R_PARISC_PCREL17F 12 /* 17 bits of rel. address. */ -#define R_PARISC_PCREL14R 14 /* Right 14 bits of rel. address. */ -#define R_PARISC_DPREL21L 18 /* Left 21 bits of rel. address. */ -#define R_PARISC_DPREL14R 22 /* Right 14 bits of rel. address. */ -#define R_PARISC_GPREL21L 26 /* GP-relative, left 21 bits. */ -#define R_PARISC_GPREL14R 30 /* GP-relative, right 14 bits. */ -#define R_PARISC_LTOFF21L 34 /* LT-relative, left 21 bits. */ -#define R_PARISC_LTOFF14R 38 /* LT-relative, right 14 bits. */ -#define R_PARISC_SECREL32 41 /* 32 bits section rel. address. */ -#define R_PARISC_SEGBASE 48 /* No relocation, set segment base. */ -#define R_PARISC_SEGREL32 49 /* 32 bits segment rel. address. */ -#define R_PARISC_PLTOFF21L 50 /* PLT rel. address, left 21 bits. */ -#define R_PARISC_PLTOFF14R 54 /* PLT rel. address, right 14 bits. */ -#define R_PARISC_LTOFF_FPTR32 57 /* 32 bits LT-rel. function pointer. */ -#define R_PARISC_LTOFF_FPTR21L 58 /* LT-rel. fct ptr, left 21 bits. */ -#define R_PARISC_LTOFF_FPTR14R 62 /* LT-rel. fct ptr, right 14 bits. */ -#define R_PARISC_FPTR64 64 /* 64 bits function address. */ -#define R_PARISC_PLABEL32 65 /* 32 bits function address. */ -#define R_PARISC_PCREL64 72 /* 64 bits PC-rel. address. */ -#define R_PARISC_PCREL22F 74 /* 22 bits PC-rel. address. */ -#define R_PARISC_PCREL14WR 75 /* PC-rel. address, right 14 bits. */ -#define R_PARISC_PCREL14DR 76 /* PC rel. address, right 14 bits. */ -#define R_PARISC_PCREL16F 77 /* 16 bits PC-rel. address. */ -#define R_PARISC_PCREL16WF 78 /* 16 bits PC-rel. address. */ -#define R_PARISC_PCREL16DF 79 /* 16 bits PC-rel. address. */ -#define R_PARISC_DIR64 80 /* 64 bits of eff. address. */ -#define R_PARISC_DIR14WR 83 /* 14 bits of eff. address. */ -#define R_PARISC_DIR14DR 84 /* 14 bits of eff. address. */ -#define R_PARISC_DIR16F 85 /* 16 bits of eff. address. */ -#define R_PARISC_DIR16WF 86 /* 16 bits of eff. address. */ -#define R_PARISC_DIR16DF 87 /* 16 bits of eff. address. */ -#define R_PARISC_GPREL64 88 /* 64 bits of GP-rel. address. */ -#define R_PARISC_GPREL14WR 91 /* GP-rel. address, right 14 bits. */ -#define R_PARISC_GPREL14DR 92 /* GP-rel. address, right 14 bits. */ -#define R_PARISC_GPREL16F 93 /* 16 bits GP-rel. address. */ -#define R_PARISC_GPREL16WF 94 /* 16 bits GP-rel. address. */ -#define R_PARISC_GPREL16DF 95 /* 16 bits GP-rel. address. */ -#define R_PARISC_LTOFF64 96 /* 64 bits LT-rel. address. */ -#define R_PARISC_LTOFF14WR 99 /* LT-rel. address, right 14 bits. */ -#define R_PARISC_LTOFF14DR 100 /* LT-rel. address, right 14 bits. */ -#define R_PARISC_LTOFF16F 101 /* 16 bits LT-rel. address. */ -#define R_PARISC_LTOFF16WF 102 /* 16 bits LT-rel. address. */ -#define R_PARISC_LTOFF16DF 103 /* 16 bits LT-rel. address. */ -#define R_PARISC_SECREL64 104 /* 64 bits section rel. address. */ -#define R_PARISC_SEGREL64 112 /* 64 bits segment rel. address. */ -#define R_PARISC_PLTOFF14WR 115 /* PLT-rel. address, right 14 bits. */ -#define R_PARISC_PLTOFF14DR 116 /* PLT-rel. address, right 14 bits. */ -#define R_PARISC_PLTOFF16F 117 /* 16 bits LT-rel. address. */ -#define R_PARISC_PLTOFF16WF 118 /* 16 bits PLT-rel. address. */ -#define R_PARISC_PLTOFF16DF 119 /* 16 bits PLT-rel. address. */ -#define R_PARISC_LTOFF_FPTR64 120 /* 64 bits LT-rel. function ptr. */ -#define R_PARISC_LTOFF_FPTR14WR 123 /* LT-rel. fct. ptr., right 14 bits. */ -#define R_PARISC_LTOFF_FPTR14DR 124 /* LT-rel. fct. ptr., right 14 bits. */ -#define R_PARISC_LTOFF_FPTR16F 125 /* 16 bits LT-rel. function ptr. */ -#define R_PARISC_LTOFF_FPTR16WF 126 /* 16 bits LT-rel. function ptr. */ -#define R_PARISC_LTOFF_FPTR16DF 127 /* 16 bits LT-rel. function ptr. */ -#define R_PARISC_LORESERVE 128 -#define R_PARISC_COPY 128 /* Copy relocation. */ -#define R_PARISC_IPLT 129 /* Dynamic reloc, imported PLT */ -#define R_PARISC_EPLT 130 /* Dynamic reloc, exported PLT */ -#define R_PARISC_TPREL32 153 /* 32 bits TP-rel. address. */ -#define R_PARISC_TPREL21L 154 /* TP-rel. address, left 21 bits. */ -#define R_PARISC_TPREL14R 158 /* TP-rel. address, right 14 bits. */ -#define R_PARISC_LTOFF_TP21L 162 /* LT-TP-rel. address, left 21 bits. */ -#define R_PARISC_LTOFF_TP14R 166 /* LT-TP-rel. address, right 14 bits.*/ -#define R_PARISC_LTOFF_TP14F 167 /* 14 bits LT-TP-rel. address. */ -#define R_PARISC_TPREL64 216 /* 64 bits TP-rel. address. */ -#define R_PARISC_TPREL14WR 219 /* TP-rel. address, right 14 bits. */ -#define R_PARISC_TPREL14DR 220 /* TP-rel. address, right 14 bits. */ -#define R_PARISC_TPREL16F 221 /* 16 bits TP-rel. address. */ -#define R_PARISC_TPREL16WF 222 /* 16 bits TP-rel. address. */ -#define R_PARISC_TPREL16DF 223 /* 16 bits TP-rel. address. */ -#define R_PARISC_LTOFF_TP64 224 /* 64 bits LT-TP-rel. address. */ -#define R_PARISC_LTOFF_TP14WR 227 /* LT-TP-rel. address, right 14 bits.*/ -#define R_PARISC_LTOFF_TP14DR 228 /* LT-TP-rel. address, right 14 bits.*/ -#define R_PARISC_LTOFF_TP16F 229 /* 16 bits LT-TP-rel. address. */ -#define R_PARISC_LTOFF_TP16WF 230 /* 16 bits LT-TP-rel. address. */ -#define R_PARISC_LTOFF_TP16DF 231 /* 16 bits LT-TP-rel. address. */ -#define R_PARISC_HIRESERVE 255 - -/* Legal values for p_type field of Elf32_Phdr/Elf64_Phdr. */ - -#define PT_HP_TLS (PT_LOOS + 0x0) -#define PT_HP_CORE_NONE (PT_LOOS + 0x1) -#define PT_HP_CORE_VERSION (PT_LOOS + 0x2) -#define PT_HP_CORE_KERNEL (PT_LOOS + 0x3) -#define PT_HP_CORE_COMM (PT_LOOS + 0x4) -#define PT_HP_CORE_PROC (PT_LOOS + 0x5) -#define PT_HP_CORE_LOADABLE (PT_LOOS + 0x6) -#define PT_HP_CORE_STACK (PT_LOOS + 0x7) -#define PT_HP_CORE_SHM (PT_LOOS + 0x8) -#define PT_HP_CORE_MMF (PT_LOOS + 0x9) -#define PT_HP_PARALLEL (PT_LOOS + 0x10) -#define PT_HP_FASTBIND (PT_LOOS + 0x11) -#define PT_HP_OPT_ANNOT (PT_LOOS + 0x12) -#define PT_HP_HSL_ANNOT (PT_LOOS + 0x13) -#define PT_HP_STACK (PT_LOOS + 0x14) - -#define PT_PARISC_ARCHEXT 0x70000000 -#define PT_PARISC_UNWIND 0x70000001 - -/* Legal values for p_flags field of Elf32_Phdr/Elf64_Phdr. */ - -#define PF_PARISC_SBP 0x08000000 - -#define PF_HP_PAGE_SIZE 0x00100000 -#define PF_HP_FAR_SHARED 0x00200000 -#define PF_HP_NEAR_SHARED 0x00400000 -#define PF_HP_CODE 0x01000000 -#define PF_HP_MODIFY 0x02000000 -#define PF_HP_LAZYSWAP 0x04000000 -#define PF_HP_SBP 0x08000000 - - -/* Alpha specific definitions. */ - -/* Legal values for e_flags field of Elf64_Ehdr. */ - -#define EF_ALPHA_32BIT 1 /* All addresses must be < 2GB. */ -#define EF_ALPHA_CANRELAX 2 /* Relocations for relaxing exist. */ - -/* Legal values for sh_type field of Elf64_Shdr. */ - -/* These two are primerily concerned with ECOFF debugging info. */ -#define SHT_ALPHA_DEBUG 0x70000001 -#define SHT_ALPHA_REGINFO 0x70000002 - -/* Legal values for sh_flags field of Elf64_Shdr. */ - -#define SHF_ALPHA_GPREL 0x10000000 - -/* Legal values for st_other field of Elf64_Sym. */ -#define STO_ALPHA_NOPV 0x80 /* No PV required. */ -#define STO_ALPHA_STD_GPLOAD 0x88 /* PV only used for initial ldgp. */ - -/* Alpha relocs. */ - -#define R_ALPHA_NONE 0 /* No reloc */ -#define R_ALPHA_REFLONG 1 /* Direct 32 bit */ -#define R_ALPHA_REFQUAD 2 /* Direct 64 bit */ -#define R_ALPHA_GPREL32 3 /* GP relative 32 bit */ -#define R_ALPHA_LITERAL 4 /* GP relative 16 bit w/optimization */ -#define R_ALPHA_LITUSE 5 /* Optimization hint for LITERAL */ -#define R_ALPHA_GPDISP 6 /* Add displacement to GP */ -#define R_ALPHA_BRADDR 7 /* PC+4 relative 23 bit shifted */ -#define R_ALPHA_HINT 8 /* PC+4 relative 16 bit shifted */ -#define R_ALPHA_SREL16 9 /* PC relative 16 bit */ -#define R_ALPHA_SREL32 10 /* PC relative 32 bit */ -#define R_ALPHA_SREL64 11 /* PC relative 64 bit */ -#define R_ALPHA_GPRELHIGH 17 /* GP relative 32 bit, high 16 bits */ -#define R_ALPHA_GPRELLOW 18 /* GP relative 32 bit, low 16 bits */ -#define R_ALPHA_GPREL16 19 /* GP relative 16 bit */ -#define R_ALPHA_COPY 24 /* Copy symbol at runtime */ -#define R_ALPHA_GLOB_DAT 25 /* Create GOT entry */ -#define R_ALPHA_JMP_SLOT 26 /* Create PLT entry */ -#define R_ALPHA_RELATIVE 27 /* Adjust by program base */ -#define R_ALPHA_TLS_GD_HI 28 -#define R_ALPHA_TLSGD 29 -#define R_ALPHA_TLS_LDM 30 -#define R_ALPHA_DTPMOD64 31 -#define R_ALPHA_GOTDTPREL 32 -#define R_ALPHA_DTPREL64 33 -#define R_ALPHA_DTPRELHI 34 -#define R_ALPHA_DTPRELLO 35 -#define R_ALPHA_DTPREL16 36 -#define R_ALPHA_GOTTPREL 37 -#define R_ALPHA_TPREL64 38 -#define R_ALPHA_TPRELHI 39 -#define R_ALPHA_TPRELLO 40 -#define R_ALPHA_TPREL16 41 -/* Keep this the last entry. */ -#define R_ALPHA_NUM 46 - -/* Magic values of the LITUSE relocation addend. */ -#define LITUSE_ALPHA_ADDR 0 -#define LITUSE_ALPHA_BASE 1 -#define LITUSE_ALPHA_BYTOFF 2 -#define LITUSE_ALPHA_JSR 3 -#define LITUSE_ALPHA_TLS_GD 4 -#define LITUSE_ALPHA_TLS_LDM 5 - - -/* PowerPC specific declarations */ - -/* Values for Elf32/64_Ehdr.e_flags. */ -#define EF_PPC_EMB 0x80000000 /* PowerPC embedded flag */ - -/* Cygnus local bits below */ -#define EF_PPC_RELOCATABLE 0x00010000 /* PowerPC -mrelocatable flag*/ -#define EF_PPC_RELOCATABLE_LIB 0x00008000 /* PowerPC -mrelocatable-lib - flag */ - -/* PowerPC relocations defined by the ABIs */ -#define R_PPC_NONE 0 -#define R_PPC_ADDR32 1 /* 32bit absolute address */ -#define R_PPC_ADDR24 2 /* 26bit address, 2 bits ignored. */ -#define R_PPC_ADDR16 3 /* 16bit absolute address */ -#define R_PPC_ADDR16_LO 4 /* lower 16bit of absolute address */ -#define R_PPC_ADDR16_HI 5 /* high 16bit of absolute address */ -#define R_PPC_ADDR16_HA 6 /* adjusted high 16bit */ -#define R_PPC_ADDR14 7 /* 16bit address, 2 bits ignored */ -#define R_PPC_ADDR14_BRTAKEN 8 -#define R_PPC_ADDR14_BRNTAKEN 9 -#define R_PPC_REL24 10 /* PC relative 26 bit */ -#define R_PPC_REL14 11 /* PC relative 16 bit */ -#define R_PPC_REL14_BRTAKEN 12 -#define R_PPC_REL14_BRNTAKEN 13 -#define R_PPC_GOT16 14 -#define R_PPC_GOT16_LO 15 -#define R_PPC_GOT16_HI 16 -#define R_PPC_GOT16_HA 17 -#define R_PPC_PLTREL24 18 -#define R_PPC_COPY 19 -#define R_PPC_GLOB_DAT 20 -#define R_PPC_JMP_SLOT 21 -#define R_PPC_RELATIVE 22 -#define R_PPC_LOCAL24PC 23 -#define R_PPC_UADDR32 24 -#define R_PPC_UADDR16 25 -#define R_PPC_REL32 26 -#define R_PPC_PLT32 27 -#define R_PPC_PLTREL32 28 -#define R_PPC_PLT16_LO 29 -#define R_PPC_PLT16_HI 30 -#define R_PPC_PLT16_HA 31 -#define R_PPC_SDAREL16 32 -#define R_PPC_SECTOFF 33 -#define R_PPC_SECTOFF_LO 34 -#define R_PPC_SECTOFF_HI 35 -#define R_PPC_SECTOFF_HA 36 - -/* PowerPC relocations defined for the TLS access ABI. */ -#define R_PPC_TLS 67 /* none (sym+add)@tls */ -#define R_PPC_DTPMOD32 68 /* word32 (sym+add)@dtpmod */ -#define R_PPC_TPREL16 69 /* half16* (sym+add)@tprel */ -#define R_PPC_TPREL16_LO 70 /* half16 (sym+add)@tprel@l */ -#define R_PPC_TPREL16_HI 71 /* half16 (sym+add)@tprel@h */ -#define R_PPC_TPREL16_HA 72 /* half16 (sym+add)@tprel@ha */ -#define R_PPC_TPREL32 73 /* word32 (sym+add)@tprel */ -#define R_PPC_DTPREL16 74 /* half16* (sym+add)@dtprel */ -#define R_PPC_DTPREL16_LO 75 /* half16 (sym+add)@dtprel@l */ -#define R_PPC_DTPREL16_HI 76 /* half16 (sym+add)@dtprel@h */ -#define R_PPC_DTPREL16_HA 77 /* half16 (sym+add)@dtprel@ha */ -#define R_PPC_DTPREL32 78 /* word32 (sym+add)@dtprel */ -#define R_PPC_GOT_TLSGD16 79 /* half16* (sym+add)@got@tlsgd */ -#define R_PPC_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got@tlsgd@l */ -#define R_PPC_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got@tlsgd@h */ -#define R_PPC_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got@tlsgd@ha */ -#define R_PPC_GOT_TLSLD16 83 /* half16* (sym+add)@got@tlsld */ -#define R_PPC_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got@tlsld@l */ -#define R_PPC_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got@tlsld@h */ -#define R_PPC_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got@tlsld@ha */ -#define R_PPC_GOT_TPREL16 87 /* half16* (sym+add)@got@tprel */ -#define R_PPC_GOT_TPREL16_LO 88 /* half16 (sym+add)@got@tprel@l */ -#define R_PPC_GOT_TPREL16_HI 89 /* half16 (sym+add)@got@tprel@h */ -#define R_PPC_GOT_TPREL16_HA 90 /* half16 (sym+add)@got@tprel@ha */ -#define R_PPC_GOT_DTPREL16 91 /* half16* (sym+add)@got@dtprel */ -#define R_PPC_GOT_DTPREL16_LO 92 /* half16* (sym+add)@got@dtprel@l */ -#define R_PPC_GOT_DTPREL16_HI 93 /* half16* (sym+add)@got@dtprel@h */ -#define R_PPC_GOT_DTPREL16_HA 94 /* half16* (sym+add)@got@dtprel@ha */ - -/* Keep this the last entry. */ -#define R_PPC_NUM 95 - -/* The remaining relocs are from the Embedded ELF ABI, and are not - in the SVR4 ELF ABI. */ -#define R_PPC_EMB_NADDR32 101 -#define R_PPC_EMB_NADDR16 102 -#define R_PPC_EMB_NADDR16_LO 103 -#define R_PPC_EMB_NADDR16_HI 104 -#define R_PPC_EMB_NADDR16_HA 105 -#define R_PPC_EMB_SDAI16 106 -#define R_PPC_EMB_SDA2I16 107 -#define R_PPC_EMB_SDA2REL 108 -#define R_PPC_EMB_SDA21 109 /* 16 bit offset in SDA */ -#define R_PPC_EMB_MRKREF 110 -#define R_PPC_EMB_RELSEC16 111 -#define R_PPC_EMB_RELST_LO 112 -#define R_PPC_EMB_RELST_HI 113 -#define R_PPC_EMB_RELST_HA 114 -#define R_PPC_EMB_BIT_FLD 115 -#define R_PPC_EMB_RELSDA 116 /* 16 bit relative offset in SDA */ - -/* Diab tool relocations. */ -#define R_PPC_DIAB_SDA21_LO 180 /* like EMB_SDA21, but lower 16 bit */ -#define R_PPC_DIAB_SDA21_HI 181 /* like EMB_SDA21, but high 16 bit */ -#define R_PPC_DIAB_SDA21_HA 182 /* like EMB_SDA21, adjusted high 16 */ -#define R_PPC_DIAB_RELSDA_LO 183 /* like EMB_RELSDA, but lower 16 bit */ -#define R_PPC_DIAB_RELSDA_HI 184 /* like EMB_RELSDA, but high 16 bit */ -#define R_PPC_DIAB_RELSDA_HA 185 /* like EMB_RELSDA, adjusted high 16 */ - -/* This is a phony reloc to handle any old fashioned TOC16 references - that may still be in object files. */ -#define R_PPC_TOC16 255 - - -/* PowerPC64 relocations defined by the ABIs */ -#define R_PPC64_NONE R_PPC_NONE -#define R_PPC64_ADDR32 R_PPC_ADDR32 /* 32bit absolute address */ -#define R_PPC64_ADDR24 R_PPC_ADDR24 /* 26bit address, word aligned */ -#define R_PPC64_ADDR16 R_PPC_ADDR16 /* 16bit absolute address */ -#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO /* lower 16bits of address */ -#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI /* high 16bits of address. */ -#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA /* adjusted high 16bits. */ -#define R_PPC64_ADDR14 R_PPC_ADDR14 /* 16bit address, word aligned */ -#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN -#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN -#define R_PPC64_REL24 R_PPC_REL24 /* PC-rel. 26 bit, word aligned */ -#define R_PPC64_REL14 R_PPC_REL14 /* PC relative 16 bit */ -#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN -#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN -#define R_PPC64_GOT16 R_PPC_GOT16 -#define R_PPC64_GOT16_LO R_PPC_GOT16_LO -#define R_PPC64_GOT16_HI R_PPC_GOT16_HI -#define R_PPC64_GOT16_HA R_PPC_GOT16_HA - -#define R_PPC64_COPY R_PPC_COPY -#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT -#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT -#define R_PPC64_RELATIVE R_PPC_RELATIVE - -#define R_PPC64_UADDR32 R_PPC_UADDR32 -#define R_PPC64_UADDR16 R_PPC_UADDR16 -#define R_PPC64_REL32 R_PPC_REL32 -#define R_PPC64_PLT32 R_PPC_PLT32 -#define R_PPC64_PLTREL32 R_PPC_PLTREL32 -#define R_PPC64_PLT16_LO R_PPC_PLT16_LO -#define R_PPC64_PLT16_HI R_PPC_PLT16_HI -#define R_PPC64_PLT16_HA R_PPC_PLT16_HA - -#define R_PPC64_SECTOFF R_PPC_SECTOFF -#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO -#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI -#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA -#define R_PPC64_ADDR30 37 /* word30 (S + A - P) >> 2 */ -#define R_PPC64_ADDR64 38 /* doubleword64 S + A */ -#define R_PPC64_ADDR16_HIGHER 39 /* half16 #higher(S + A) */ -#define R_PPC64_ADDR16_HIGHERA 40 /* half16 #highera(S + A) */ -#define R_PPC64_ADDR16_HIGHEST 41 /* half16 #highest(S + A) */ -#define R_PPC64_ADDR16_HIGHESTA 42 /* half16 #highesta(S + A) */ -#define R_PPC64_UADDR64 43 /* doubleword64 S + A */ -#define R_PPC64_REL64 44 /* doubleword64 S + A - P */ -#define R_PPC64_PLT64 45 /* doubleword64 L + A */ -#define R_PPC64_PLTREL64 46 /* doubleword64 L + A - P */ -#define R_PPC64_TOC16 47 /* half16* S + A - .TOC */ -#define R_PPC64_TOC16_LO 48 /* half16 #lo(S + A - .TOC.) */ -#define R_PPC64_TOC16_HI 49 /* half16 #hi(S + A - .TOC.) */ -#define R_PPC64_TOC16_HA 50 /* half16 #ha(S + A - .TOC.) */ -#define R_PPC64_TOC 51 /* doubleword64 .TOC */ -#define R_PPC64_PLTGOT16 52 /* half16* M + A */ -#define R_PPC64_PLTGOT16_LO 53 /* half16 #lo(M + A) */ -#define R_PPC64_PLTGOT16_HI 54 /* half16 #hi(M + A) */ -#define R_PPC64_PLTGOT16_HA 55 /* half16 #ha(M + A) */ - -#define R_PPC64_ADDR16_DS 56 /* half16ds* (S + A) >> 2 */ -#define R_PPC64_ADDR16_LO_DS 57 /* half16ds #lo(S + A) >> 2 */ -#define R_PPC64_GOT16_DS 58 /* half16ds* (G + A) >> 2 */ -#define R_PPC64_GOT16_LO_DS 59 /* half16ds #lo(G + A) >> 2 */ -#define R_PPC64_PLT16_LO_DS 60 /* half16ds #lo(L + A) >> 2 */ -#define R_PPC64_SECTOFF_DS 61 /* half16ds* (R + A) >> 2 */ -#define R_PPC64_SECTOFF_LO_DS 62 /* half16ds #lo(R + A) >> 2 */ -#define R_PPC64_TOC16_DS 63 /* half16ds* (S + A - .TOC.) >> 2 */ -#define R_PPC64_TOC16_LO_DS 64 /* half16ds #lo(S + A - .TOC.) >> 2 */ -#define R_PPC64_PLTGOT16_DS 65 /* half16ds* (M + A) >> 2 */ -#define R_PPC64_PLTGOT16_LO_DS 66 /* half16ds #lo(M + A) >> 2 */ - -/* PowerPC64 relocations defined for the TLS access ABI. */ -#define R_PPC64_TLS 67 /* none (sym+add)@tls */ -#define R_PPC64_DTPMOD64 68 /* doubleword64 (sym+add)@dtpmod */ -#define R_PPC64_TPREL16 69 /* half16* (sym+add)@tprel */ -#define R_PPC64_TPREL16_LO 70 /* half16 (sym+add)@tprel@l */ -#define R_PPC64_TPREL16_HI 71 /* half16 (sym+add)@tprel@h */ -#define R_PPC64_TPREL16_HA 72 /* half16 (sym+add)@tprel@ha */ -#define R_PPC64_TPREL64 73 /* doubleword64 (sym+add)@tprel */ -#define R_PPC64_DTPREL16 74 /* half16* (sym+add)@dtprel */ -#define R_PPC64_DTPREL16_LO 75 /* half16 (sym+add)@dtprel@l */ -#define R_PPC64_DTPREL16_HI 76 /* half16 (sym+add)@dtprel@h */ -#define R_PPC64_DTPREL16_HA 77 /* half16 (sym+add)@dtprel@ha */ -#define R_PPC64_DTPREL64 78 /* doubleword64 (sym+add)@dtprel */ -#define R_PPC64_GOT_TLSGD16 79 /* half16* (sym+add)@got@tlsgd */ -#define R_PPC64_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got@tlsgd@l */ -#define R_PPC64_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got@tlsgd@h */ -#define R_PPC64_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got@tlsgd@ha */ -#define R_PPC64_GOT_TLSLD16 83 /* half16* (sym+add)@got@tlsld */ -#define R_PPC64_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got@tlsld@l */ -#define R_PPC64_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got@tlsld@h */ -#define R_PPC64_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got@tlsld@ha */ -#define R_PPC64_GOT_TPREL16_DS 87 /* half16ds* (sym+add)@got@tprel */ -#define R_PPC64_GOT_TPREL16_LO_DS 88 /* half16ds (sym+add)@got@tprel@l */ -#define R_PPC64_GOT_TPREL16_HI 89 /* half16 (sym+add)@got@tprel@h */ -#define R_PPC64_GOT_TPREL16_HA 90 /* half16 (sym+add)@got@tprel@ha */ -#define R_PPC64_GOT_DTPREL16_DS 91 /* half16ds* (sym+add)@got@dtprel */ -#define R_PPC64_GOT_DTPREL16_LO_DS 92 /* half16ds (sym+add)@got@dtprel@l */ -#define R_PPC64_GOT_DTPREL16_HI 93 /* half16 (sym+add)@got@dtprel@h */ -#define R_PPC64_GOT_DTPREL16_HA 94 /* half16 (sym+add)@got@dtprel@ha */ -#define R_PPC64_TPREL16_DS 95 /* half16ds* (sym+add)@tprel */ -#define R_PPC64_TPREL16_LO_DS 96 /* half16ds (sym+add)@tprel@l */ -#define R_PPC64_TPREL16_HIGHER 97 /* half16 (sym+add)@tprel@higher */ -#define R_PPC64_TPREL16_HIGHERA 98 /* half16 (sym+add)@tprel@highera */ -#define R_PPC64_TPREL16_HIGHEST 99 /* half16 (sym+add)@tprel@highest */ -#define R_PPC64_TPREL16_HIGHESTA 100 /* half16 (sym+add)@tprel@highesta */ -#define R_PPC64_DTPREL16_DS 101 /* half16ds* (sym+add)@dtprel */ -#define R_PPC64_DTPREL16_LO_DS 102 /* half16ds (sym+add)@dtprel@l */ -#define R_PPC64_DTPREL16_HIGHER 103 /* half16 (sym+add)@dtprel@higher */ -#define R_PPC64_DTPREL16_HIGHERA 104 /* half16 (sym+add)@dtprel@highera */ -#define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel@highest */ -#define R_PPC64_DTPREL16_HIGHESTA 106 /* half16 (sym+add)@dtprel@highesta */ - -/* Keep this the last entry. */ -#define R_PPC64_NUM 107 - -/* PowerPC64 specific values for the Dyn d_tag field. */ -#define DT_PPC64_GLINK (DT_LOPROC + 0) -#define DT_PPC64_OPD (DT_LOPROC + 1) -#define DT_PPC64_OPDSZ (DT_LOPROC + 2) -#define DT_PPC64_NUM 3 - - -/* ARM specific declarations */ - -/* Processor specific flags for the ELF header e_flags field. */ -#define EF_ARM_RELEXEC 0x01 -#define EF_ARM_HASENTRY 0x02 -#define EF_ARM_INTERWORK 0x04 -#define EF_ARM_APCS_26 0x08 -#define EF_ARM_APCS_FLOAT 0x10 -#define EF_ARM_PIC 0x20 -#define EF_ARM_ALIGN8 0x40 /* 8-bit structure alignment is in use */ -#define EF_ARM_NEW_ABI 0x80 -#define EF_ARM_OLD_ABI 0x100 - -/* Other constants defined in the ARM ELF spec. version B-01. */ -/* NB. These conflict with values defined above. */ -#define EF_ARM_SYMSARESORTED 0x04 -#define EF_ARM_DYNSYMSUSESEGIDX 0x08 -#define EF_ARM_MAPSYMSFIRST 0x10 -#define EF_ARM_EABIMASK 0XFF000000 - -#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK) -#define EF_ARM_EABI_UNKNOWN 0x00000000 -#define EF_ARM_EABI_VER1 0x01000000 -#define EF_ARM_EABI_VER2 0x02000000 - -/* Additional symbol types for Thumb */ -#define STT_ARM_TFUNC 0xd - -/* ARM-specific values for sh_flags */ -#define SHF_ARM_ENTRYSECT 0x10000000 /* Section contains an entry point */ -#define SHF_ARM_COMDEF 0x80000000 /* Section may be multiply defined - in the input to a link step */ - -/* ARM-specific program header flags */ -#define PF_ARM_SB 0x10000000 /* Segment contains the location - addressed by the static base */ - -/* ARM relocs. */ -#define R_ARM_NONE 0 /* No reloc */ -#define R_ARM_PC24 1 /* PC relative 26 bit branch */ -#define R_ARM_ABS32 2 /* Direct 32 bit */ -#define R_ARM_REL32 3 /* PC relative 32 bit */ -#define R_ARM_PC13 4 -#define R_ARM_ABS16 5 /* Direct 16 bit */ -#define R_ARM_ABS12 6 /* Direct 12 bit */ -#define R_ARM_THM_ABS5 7 -#define R_ARM_ABS8 8 /* Direct 8 bit */ -#define R_ARM_SBREL32 9 -#define R_ARM_THM_PC22 10 -#define R_ARM_THM_PC8 11 -#define R_ARM_AMP_VCALL9 12 -#define R_ARM_SWI24 13 -#define R_ARM_THM_SWI8 14 -#define R_ARM_XPC25 15 -#define R_ARM_THM_XPC22 16 -#define R_ARM_COPY 20 /* Copy symbol at runtime */ -#define R_ARM_GLOB_DAT 21 /* Create GOT entry */ -#define R_ARM_JUMP_SLOT 22 /* Create PLT entry */ -#define R_ARM_RELATIVE 23 /* Adjust by program base */ -#define R_ARM_GOTOFF 24 /* 32 bit offset to GOT */ -#define R_ARM_GOTPC 25 /* 32 bit PC relative offset to GOT */ -#define R_ARM_GOT32 26 /* 32 bit GOT entry */ -#define R_ARM_PLT32 27 /* 32 bit PLT address */ -#define R_ARM_ALU_PCREL_7_0 32 -#define R_ARM_ALU_PCREL_15_8 33 -#define R_ARM_ALU_PCREL_23_15 34 -#define R_ARM_LDR_SBREL_11_0 35 -#define R_ARM_ALU_SBREL_19_12 36 -#define R_ARM_ALU_SBREL_27_20 37 -#define R_ARM_GNU_VTENTRY 100 -#define R_ARM_GNU_VTINHERIT 101 -#define R_ARM_THM_PC11 102 /* thumb unconditional branch */ -#define R_ARM_THM_PC9 103 /* thumb conditional branch */ -#define R_ARM_RXPC25 249 -#define R_ARM_RSBREL32 250 -#define R_ARM_THM_RPC22 251 -#define R_ARM_RREL32 252 -#define R_ARM_RABS22 253 -#define R_ARM_RPC24 254 -#define R_ARM_RBASE 255 -/* Keep this the last entry. */ -#define R_ARM_NUM 256 - -/* IA-64 specific declarations. */ - -/* Processor specific flags for the Ehdr e_flags field. */ -#define EF_IA_64_MASKOS 0x0000000f /* os-specific flags */ -#define EF_IA_64_ABI64 0x00000010 /* 64-bit ABI */ -#define EF_IA_64_ARCH 0xff000000 /* arch. version mask */ - -/* Processor specific values for the Phdr p_type field. */ -#define PT_IA_64_ARCHEXT (PT_LOPROC + 0) /* arch extension bits */ -#define PT_IA_64_UNWIND (PT_LOPROC + 1) /* ia64 unwind bits */ -#define PT_IA_64_HP_OPT_ANOT (PT_LOOS + 0x12) -#define PT_IA_64_HP_HSL_ANOT (PT_LOOS + 0x13) -#define PT_IA_64_HP_STACK (PT_LOOS + 0x14) - -/* Processor specific flags for the Phdr p_flags field. */ -#define PF_IA_64_NORECOV 0x80000000 /* spec insns w/o recovery */ - -/* Processor specific values for the Shdr sh_type field. */ -#define SHT_IA_64_EXT (SHT_LOPROC + 0) /* extension bits */ -#define SHT_IA_64_UNWIND (SHT_LOPROC + 1) /* unwind bits */ - -/* Processor specific flags for the Shdr sh_flags field. */ -#define SHF_IA_64_SHORT 0x10000000 /* section near gp */ -#define SHF_IA_64_NORECOV 0x20000000 /* spec insns w/o recovery */ - -/* Processor specific values for the Dyn d_tag field. */ -#define DT_IA_64_PLT_RESERVE (DT_LOPROC + 0) -#define DT_IA_64_NUM 1 - -/* IA-64 relocations. */ -#define R_IA64_NONE 0x00 /* none */ -#define R_IA64_IMM14 0x21 /* symbol + addend, add imm14 */ -#define R_IA64_IMM22 0x22 /* symbol + addend, add imm22 */ -#define R_IA64_IMM64 0x23 /* symbol + addend, mov imm64 */ -#define R_IA64_DIR32MSB 0x24 /* symbol + addend, data4 MSB */ -#define R_IA64_DIR32LSB 0x25 /* symbol + addend, data4 LSB */ -#define R_IA64_DIR64MSB 0x26 /* symbol + addend, data8 MSB */ -#define R_IA64_DIR64LSB 0x27 /* symbol + addend, data8 LSB */ -#define R_IA64_GPREL22 0x2a /* @gprel(sym + add), add imm22 */ -#define R_IA64_GPREL64I 0x2b /* @gprel(sym + add), mov imm64 */ -#define R_IA64_GPREL32MSB 0x2c /* @gprel(sym + add), data4 MSB */ -#define R_IA64_GPREL32LSB 0x2d /* @gprel(sym + add), data4 LSB */ -#define R_IA64_GPREL64MSB 0x2e /* @gprel(sym + add), data8 MSB */ -#define R_IA64_GPREL64LSB 0x2f /* @gprel(sym + add), data8 LSB */ -#define R_IA64_LTOFF22 0x32 /* @ltoff(sym + add), add imm22 */ -#define R_IA64_LTOFF64I 0x33 /* @ltoff(sym + add), mov imm64 */ -#define R_IA64_PLTOFF22 0x3a /* @pltoff(sym + add), add imm22 */ -#define R_IA64_PLTOFF64I 0x3b /* @pltoff(sym + add), mov imm64 */ -#define R_IA64_PLTOFF64MSB 0x3e /* @pltoff(sym + add), data8 MSB */ -#define R_IA64_PLTOFF64LSB 0x3f /* @pltoff(sym + add), data8 LSB */ -#define R_IA64_FPTR64I 0x43 /* @fptr(sym + add), mov imm64 */ -#define R_IA64_FPTR32MSB 0x44 /* @fptr(sym + add), data4 MSB */ -#define R_IA64_FPTR32LSB 0x45 /* @fptr(sym + add), data4 LSB */ -#define R_IA64_FPTR64MSB 0x46 /* @fptr(sym + add), data8 MSB */ -#define R_IA64_FPTR64LSB 0x47 /* @fptr(sym + add), data8 LSB */ -#define R_IA64_PCREL60B 0x48 /* @pcrel(sym + add), brl */ -#define R_IA64_PCREL21B 0x49 /* @pcrel(sym + add), ptb, call */ -#define R_IA64_PCREL21M 0x4a /* @pcrel(sym + add), chk.s */ -#define R_IA64_PCREL21F 0x4b /* @pcrel(sym + add), fchkf */ -#define R_IA64_PCREL32MSB 0x4c /* @pcrel(sym + add), data4 MSB */ -#define R_IA64_PCREL32LSB 0x4d /* @pcrel(sym + add), data4 LSB */ -#define R_IA64_PCREL64MSB 0x4e /* @pcrel(sym + add), data8 MSB */ -#define R_IA64_PCREL64LSB 0x4f /* @pcrel(sym + add), data8 LSB */ -#define R_IA64_LTOFF_FPTR22 0x52 /* @ltoff(@fptr(s+a)), imm22 */ -#define R_IA64_LTOFF_FPTR64I 0x53 /* @ltoff(@fptr(s+a)), imm64 */ -#define R_IA64_LTOFF_FPTR32MSB 0x54 /* @ltoff(@fptr(s+a)), data4 MSB */ -#define R_IA64_LTOFF_FPTR32LSB 0x55 /* @ltoff(@fptr(s+a)), data4 LSB */ -#define R_IA64_LTOFF_FPTR64MSB 0x56 /* @ltoff(@fptr(s+a)), data8 MSB */ -#define R_IA64_LTOFF_FPTR64LSB 0x57 /* @ltoff(@fptr(s+a)), data8 LSB */ -#define R_IA64_SEGREL32MSB 0x5c /* @segrel(sym + add), data4 MSB */ -#define R_IA64_SEGREL32LSB 0x5d /* @segrel(sym + add), data4 LSB */ -#define R_IA64_SEGREL64MSB 0x5e /* @segrel(sym + add), data8 MSB */ -#define R_IA64_SEGREL64LSB 0x5f /* @segrel(sym + add), data8 LSB */ -#define R_IA64_SECREL32MSB 0x64 /* @secrel(sym + add), data4 MSB */ -#define R_IA64_SECREL32LSB 0x65 /* @secrel(sym + add), data4 LSB */ -#define R_IA64_SECREL64MSB 0x66 /* @secrel(sym + add), data8 MSB */ -#define R_IA64_SECREL64LSB 0x67 /* @secrel(sym + add), data8 LSB */ -#define R_IA64_REL32MSB 0x6c /* data 4 + REL */ -#define R_IA64_REL32LSB 0x6d /* data 4 + REL */ -#define R_IA64_REL64MSB 0x6e /* data 8 + REL */ -#define R_IA64_REL64LSB 0x6f /* data 8 + REL */ -#define R_IA64_LTV32MSB 0x74 /* symbol + addend, data4 MSB */ -#define R_IA64_LTV32LSB 0x75 /* symbol + addend, data4 LSB */ -#define R_IA64_LTV64MSB 0x76 /* symbol + addend, data8 MSB */ -#define R_IA64_LTV64LSB 0x77 /* symbol + addend, data8 LSB */ -#define R_IA64_PCREL21BI 0x79 /* @pcrel(sym + add), 21bit inst */ -#define R_IA64_PCREL22 0x7a /* @pcrel(sym + add), 22bit inst */ -#define R_IA64_PCREL64I 0x7b /* @pcrel(sym + add), 64bit inst */ -#define R_IA64_IPLTMSB 0x80 /* dynamic reloc, imported PLT, MSB */ -#define R_IA64_IPLTLSB 0x81 /* dynamic reloc, imported PLT, LSB */ -#define R_IA64_COPY 0x84 /* copy relocation */ -#define R_IA64_SUB 0x85 /* Addend and symbol difference */ -#define R_IA64_LTOFF22X 0x86 /* LTOFF22, relaxable. */ -#define R_IA64_LDXMOV 0x87 /* Use of LTOFF22X. */ -#define R_IA64_TPREL14 0x91 /* @tprel(sym + add), imm14 */ -#define R_IA64_TPREL22 0x92 /* @tprel(sym + add), imm22 */ -#define R_IA64_TPREL64I 0x93 /* @tprel(sym + add), imm64 */ -#define R_IA64_TPREL64MSB 0x96 /* @tprel(sym + add), data8 MSB */ -#define R_IA64_TPREL64LSB 0x97 /* @tprel(sym + add), data8 LSB */ -#define R_IA64_LTOFF_TPREL22 0x9a /* @ltoff(@tprel(s+a)), imm2 */ -#define R_IA64_DTPMOD64MSB 0xa6 /* @dtpmod(sym + add), data8 MSB */ -#define R_IA64_DTPMOD64LSB 0xa7 /* @dtpmod(sym + add), data8 LSB */ -#define R_IA64_LTOFF_DTPMOD22 0xaa /* @ltoff(@dtpmod(sym + add)), imm22 */ -#define R_IA64_DTPREL14 0xb1 /* @dtprel(sym + add), imm14 */ -#define R_IA64_DTPREL22 0xb2 /* @dtprel(sym + add), imm22 */ -#define R_IA64_DTPREL64I 0xb3 /* @dtprel(sym + add), imm64 */ -#define R_IA64_DTPREL32MSB 0xb4 /* @dtprel(sym + add), data4 MSB */ -#define R_IA64_DTPREL32LSB 0xb5 /* @dtprel(sym + add), data4 LSB */ -#define R_IA64_DTPREL64MSB 0xb6 /* @dtprel(sym + add), data8 MSB */ -#define R_IA64_DTPREL64LSB 0xb7 /* @dtprel(sym + add), data8 LSB */ -#define R_IA64_LTOFF_DTPREL22 0xba /* @ltoff(@dtprel(s+a)), imm22 */ - -/* SH specific declarations */ - -/* SH relocs. */ -#define R_SH_NONE 0 -#define R_SH_DIR32 1 -#define R_SH_REL32 2 -#define R_SH_DIR8WPN 3 -#define R_SH_IND12W 4 -#define R_SH_DIR8WPL 5 -#define R_SH_DIR8WPZ 6 -#define R_SH_DIR8BP 7 -#define R_SH_DIR8W 8 -#define R_SH_DIR8L 9 -#define R_SH_SWITCH16 25 -#define R_SH_SWITCH32 26 -#define R_SH_USES 27 -#define R_SH_COUNT 28 -#define R_SH_ALIGN 29 -#define R_SH_CODE 30 -#define R_SH_DATA 31 -#define R_SH_LABEL 32 -#define R_SH_SWITCH8 33 -#define R_SH_GNU_VTINHERIT 34 -#define R_SH_GNU_VTENTRY 35 -#define R_SH_TLS_GD_32 144 -#define R_SH_TLS_LD_32 145 -#define R_SH_TLS_LDO_32 146 -#define R_SH_TLS_IE_32 147 -#define R_SH_TLS_LE_32 148 -#define R_SH_TLS_DTPMOD32 149 -#define R_SH_TLS_DTPOFF32 150 -#define R_SH_TLS_TPOFF32 151 -#define R_SH_GOT32 160 -#define R_SH_PLT32 161 -#define R_SH_COPY 162 -#define R_SH_GLOB_DAT 163 -#define R_SH_JMP_SLOT 164 -#define R_SH_RELATIVE 165 -#define R_SH_GOTOFF 166 -#define R_SH_GOTPC 167 -/* Keep this the last entry. */ -#define R_SH_NUM 256 - -/* Additional s390 relocs */ - -#define R_390_NONE 0 /* No reloc. */ -#define R_390_8 1 /* Direct 8 bit. */ -#define R_390_12 2 /* Direct 12 bit. */ -#define R_390_16 3 /* Direct 16 bit. */ -#define R_390_32 4 /* Direct 32 bit. */ -#define R_390_PC32 5 /* PC relative 32 bit. */ -#define R_390_GOT12 6 /* 12 bit GOT offset. */ -#define R_390_GOT32 7 /* 32 bit GOT offset. */ -#define R_390_PLT32 8 /* 32 bit PC relative PLT address. */ -#define R_390_COPY 9 /* Copy symbol at runtime. */ -#define R_390_GLOB_DAT 10 /* Create GOT entry. */ -#define R_390_JMP_SLOT 11 /* Create PLT entry. */ -#define R_390_RELATIVE 12 /* Adjust by program base. */ -#define R_390_GOTOFF32 13 /* 32 bit offset to GOT. */ -#define R_390_GOTPC 14 /* 32 bit PC relative offset to GOT. */ -#define R_390_GOT16 15 /* 16 bit GOT offset. */ -#define R_390_PC16 16 /* PC relative 16 bit. */ -#define R_390_PC16DBL 17 /* PC relative 16 bit shifted by 1. */ -#define R_390_PLT16DBL 18 /* 16 bit PC rel. PLT shifted by 1. */ -#define R_390_PC32DBL 19 /* PC relative 32 bit shifted by 1. */ -#define R_390_PLT32DBL 20 /* 32 bit PC rel. PLT shifted by 1. */ -#define R_390_GOTPCDBL 21 /* 32 bit PC rel. GOT shifted by 1. */ -#define R_390_64 22 /* Direct 64 bit. */ -#define R_390_PC64 23 /* PC relative 64 bit. */ -#define R_390_GOT64 24 /* 64 bit GOT offset. */ -#define R_390_PLT64 25 /* 64 bit PC relative PLT address. */ -#define R_390_GOTENT 26 /* 32 bit PC rel. to GOT entry >> 1. */ -#define R_390_GOTOFF16 27 /* 16 bit offset to GOT. */ -#define R_390_GOTOFF64 28 /* 64 bit offset to GOT. */ -#define R_390_GOTPLT12 29 /* 12 bit offset to jump slot. */ -#define R_390_GOTPLT16 30 /* 16 bit offset to jump slot. */ -#define R_390_GOTPLT32 31 /* 32 bit offset to jump slot. */ -#define R_390_GOTPLT64 32 /* 64 bit offset to jump slot. */ -#define R_390_GOTPLTENT 33 /* 32 bit rel. offset to jump slot. */ -#define R_390_PLTOFF16 34 /* 16 bit offset from GOT to PLT. */ -#define R_390_PLTOFF32 35 /* 32 bit offset from GOT to PLT. */ -#define R_390_PLTOFF64 36 /* 16 bit offset from GOT to PLT. */ -#define R_390_TLS_LOAD 37 /* Tag for load insn in TLS code. */ -#define R_390_TLS_GDCALL 38 /* Tag for function call in general - dynamic TLS code. */ -#define R_390_TLS_LDCALL 39 /* Tag for function call in local - dynamic TLS code. */ -#define R_390_TLS_GD32 40 /* Direct 32 bit for general dynamic - thread local data. */ -#define R_390_TLS_GD64 41 /* Direct 64 bit for general dynamic - thread local data. */ -#define R_390_TLS_GOTIE12 42 /* 12 bit GOT offset for static TLS - block offset. */ -#define R_390_TLS_GOTIE32 43 /* 32 bit GOT offset for static TLS - block offset. */ -#define R_390_TLS_GOTIE64 44 /* 64 bit GOT offset for static TLS - block offset. */ -#define R_390_TLS_LDM32 45 /* Direct 32 bit for local dynamic - thread local data in LE code. */ -#define R_390_TLS_LDM64 46 /* Direct 64 bit for local dynamic - thread local data in LE code. */ -#define R_390_TLS_IE32 47 /* 32 bit address of GOT entry for - negated static TLS block offset. */ -#define R_390_TLS_IE64 48 /* 64 bit address of GOT entry for - negated static TLS block offset. */ -#define R_390_TLS_IEENT 49 /* 32 bit rel. offset to GOT entry for - negated static TLS block offset. */ -#define R_390_TLS_LE32 50 /* 32 bit negated offset relative to - static TLS block. */ -#define R_390_TLS_LE64 51 /* 64 bit negated offset relative to - static TLS block. */ -#define R_390_TLS_LDO32 52 /* 32 bit offset relative to TLS - block. */ -#define R_390_TLS_LDO64 53 /* 64 bit offset relative to TLS - block. */ -#define R_390_TLS_DTPMOD 54 /* ID of module containing symbol. */ -#define R_390_TLS_DTPOFF 55 /* Offset in TLS block. */ -#define R_390_TLS_TPOFF 56 /* Negated offset in static TLS - block. */ - -/* Keep this the last entry. */ -#define R_390_NUM 57 - -/* CRIS relocations. */ -#define R_CRIS_NONE 0 -#define R_CRIS_8 1 -#define R_CRIS_16 2 -#define R_CRIS_32 3 -#define R_CRIS_8_PCREL 4 -#define R_CRIS_16_PCREL 5 -#define R_CRIS_32_PCREL 6 -#define R_CRIS_GNU_VTINHERIT 7 -#define R_CRIS_GNU_VTENTRY 8 -#define R_CRIS_COPY 9 -#define R_CRIS_GLOB_DAT 10 -#define R_CRIS_JUMP_SLOT 11 -#define R_CRIS_RELATIVE 12 -#define R_CRIS_16_GOT 13 -#define R_CRIS_32_GOT 14 -#define R_CRIS_16_GOTPLT 15 -#define R_CRIS_32_GOTPLT 16 -#define R_CRIS_32_GOTREL 17 -#define R_CRIS_32_PLT_GOTREL 18 -#define R_CRIS_32_PLT_PCREL 19 - -#define R_CRIS_NUM 20 - -/* AMD x86-64 relocations. */ -#define R_X86_64_NONE 0 /* No reloc */ -#define R_X86_64_64 1 /* Direct 64 bit */ -#define R_X86_64_PC32 2 /* PC relative 32 bit signed */ -#define R_X86_64_GOT32 3 /* 32 bit GOT entry */ -#define R_X86_64_PLT32 4 /* 32 bit PLT address */ -#define R_X86_64_COPY 5 /* Copy symbol at runtime */ -#define R_X86_64_GLOB_DAT 6 /* Create GOT entry */ -#define R_X86_64_JUMP_SLOT 7 /* Create PLT entry */ -#define R_X86_64_RELATIVE 8 /* Adjust by program base */ -#define R_X86_64_GOTPCREL 9 /* 32 bit signed PC relative - offset to GOT */ -#define R_X86_64_32 10 /* Direct 32 bit zero extended */ -#define R_X86_64_32S 11 /* Direct 32 bit sign extended */ -#define R_X86_64_16 12 /* Direct 16 bit zero extended */ -#define R_X86_64_PC16 13 /* 16 bit sign extended pc relative */ -#define R_X86_64_8 14 /* Direct 8 bit sign extended */ -#define R_X86_64_PC8 15 /* 8 bit sign extended pc relative */ -#define R_X86_64_DTPMOD64 16 /* ID of module containing symbol */ -#define R_X86_64_DTPOFF64 17 /* Offset in module's TLS block */ -#define R_X86_64_TPOFF64 18 /* Offset in initial TLS block */ -#define R_X86_64_TLSGD 19 /* 32 bit signed PC relative offset - to two GOT entries for GD symbol */ -#define R_X86_64_TLSLD 20 /* 32 bit signed PC relative offset - to two GOT entries for LD symbol */ -#define R_X86_64_DTPOFF32 21 /* Offset in TLS block */ -#define R_X86_64_GOTTPOFF 22 /* 32 bit signed PC relative offset - to GOT entry for IE symbol */ -#define R_X86_64_TPOFF32 23 /* Offset in initial TLS block */ - -#define R_X86_64_NUM 24 - -#endif /* elf.h */ diff --git a/libelf/elf32_checksum.c b/libelf/elf32_checksum.c deleted file mode 100644 index 0395a940..00000000 --- a/libelf/elf32_checksum.c +++ /dev/null @@ -1,141 +0,0 @@ -/* Compute simple checksum from permanent parts of the ELF file. - Copyright (C) 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -//#include <endian.h> -#include <stdbool.h> -#include <stddef.h> -#include <string.h> - -#include "gelf.h" -#include "libelfP.h" -#include "elf-knowledge.h" - -#ifndef LIBELFBITS -# define LIBELFBITS 32 -#endif - - -/* The SECTION_STRIP_P macro wants to call into libebl which we cannot - do and do not have to do here. Provide a dummy replacement. */ -#define ebl_debugscn_p(ebl, name) true - - -#define process_block(crc, data) \ - __libelf_crc32 (crc, data->d_buf, data->d_size) - - -long int -elfw2(LIBELFBITS,checksum) (elf) - Elf *elf; -{ - size_t shstrndx; - Elf_Scn *scn; - long int result = 0; - unsigned char *ident; - bool same_byte_order; - - if (elf == NULL) - return -1l; - - /* Find the section header string table. */ - if (INTUSE(elf_getshstrndx) (elf, &shstrndx) < 0) - { - /* This can only happen if the ELF handle is not for real. */ - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return -1l; - } - - /* Determine whether the byte order of the file and that of the host - is the same. */ - ident = elf->state.ELFW(elf,LIBELFBITS).ehdr->e_ident; - same_byte_order = ((ident[EI_DATA] == ELFDATA2LSB - && __BYTE_ORDER == __LITTLE_ENDIAN) - || (ident[EI_DATA] == ELFDATA2MSB - && __BYTE_ORDER == __BIG_ENDIAN)); - - /* Iterate over all sections to find those which are not strippable. */ - scn = NULL; - while ((scn = INTUSE(elf_nextscn) (elf, scn)) != NULL) - { - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - Elf_Data *data; - - /* Get the section header. */ - shdr = INTUSE(gelf_getshdr) (scn, &shdr_mem); - if (shdr == NULL) - { - __libelf_seterrno (ELF_E_INVALID_SECTION_HEADER); - return -1l; - } - - if (SECTION_STRIP_P (NULL, NULL, NULL, shdr, - elf_strptr (elf, shstrndx, shdr->sh_name), - true, false)) - /* The section can be stripped. Don't use it. */ - continue; - - /* To compute the checksum we need to get to the data. For - repeatable results we must use the external format. The data - we get with 'elf'getdata' might be changed for endianess - reasons. Therefore we use 'elf_rawdata' if possible. But - this function can fail if the data was constructed by the - program. In this case we have to use 'elf_getdata' and - eventually convert the data to the external format. */ - data = INTUSE(elf_rawdata) (scn, NULL); - if (data != NULL) - { - /* The raw data is available. */ - result = process_block (result, data); - - /* Maybe the user added more data. These blocks cannot be - read using 'elf_rawdata'. Simply proceed with looking - for more data block with 'elf_getdata'. */ - } - - /* Iterate through the list of data blocks. */ - while ((data = INTUSE(elf_getdata) (scn, data)) != NULL) - /* If the file byte order is the same as the host byte order - process the buffer directly. If the data is just a stream - of bytes which the library will not convert we can use it - as well. */ - if (likely (same_byte_order) || data->d_type == ELF_T_BYTE) - result = process_block (result, data); - else - { - /* Convert the data to file byte order. */ - if (INTUSE(elfw2(LIBELFBITS,xlatetof)) (data, data, ident[EI_DATA]) - == NULL) - return -1l; - - result = process_block (result, data); - - /* And convert it back. */ - if (INTUSE(elfw2(LIBELFBITS,xlatetom)) (data, data, ident[EI_DATA]) - == NULL) - return -1l; - } - } - - return result; -} -INTDEF(elfw2(LIBELFBITS,checksum)) diff --git a/libelf/elf32_fsize.c b/libelf/elf32_fsize.c deleted file mode 100644 index b6810183..00000000 --- a/libelf/elf32_fsize.c +++ /dev/null @@ -1,59 +0,0 @@ -/* Return the size of an object file type. - Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libelf.h> -#include "libelfP.h" - -#ifndef LIBELFBITS -# define LIBELFBITS 32 -#endif - - -size_t -elfw2(LIBELFBITS, fsize) (type, count, version) - Elf_Type type; - size_t count; - unsigned int version; -{ - /* We do not have differences between file and memory sizes. Better - not since otherwise `mmap' would not work. */ - if (unlikely (version == EV_NONE) || unlikely (version >= EV_NUM)) - { - __libelf_seterrno (ELF_E_UNKNOWN_VERSION); - return 0; - } - - if (unlikely (type >= ELF_T_NUM)) - { - __libelf_seterrno (ELF_E_UNKNOWN_TYPE); - return 0; - } - -#if EV_NUM != 2 - return (count - * __libelf_type_sizes[version - 1][ELFW(ELFCLASS,LIBELFBITS) - 1][type]); -#else - return (count - * __libelf_type_sizes[0][ELFW(ELFCLASS,LIBELFBITS) - 1][type]); -#endif -} -#define local_strong_alias(n1, n2) strong_alias (n1, n2) -//local_strong_alias (elfw2(LIBELFBITS, fsize), __elfw2(LIBELFBITS, msize)) diff --git a/libelf/elf32_getehdr.c b/libelf/elf32_getehdr.c deleted file mode 100644 index efd60025..00000000 --- a/libelf/elf32_getehdr.c +++ /dev/null @@ -1,65 +0,0 @@ -/* Get ELF header. - Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libelf.h> -#include <stddef.h> - -#include "libelfP.h" - -#ifndef LIBELFBITS -# define LIBELFBITS 32 -#endif - - -ElfW2(LIBELFBITS,Ehdr) * -elfw2(LIBELFBITS,getehdr) (elf) - Elf *elf; -{ - ElfW2(LIBELFBITS,Ehdr) *result; - - if (elf == NULL) - return NULL; - - if (unlikely (elf->kind != ELF_K_ELF)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - rwlock_rdlock (elf->lock); - - if (elf->class == 0) - elf->class = ELFW(ELFCLASS,LIBELFBITS); - else if (unlikely (elf->class != ELFW(ELFCLASS,LIBELFBITS))) - { - __libelf_seterrno (ELF_E_INVALID_CLASS); - result = NULL; - goto out; - } - - result = elf->state.ELFW(elf,LIBELFBITS).ehdr; - - out: - rwlock_unlock (elf->lock); - - return result; -} -INTDEF(elfw2(LIBELFBITS,getehdr)) diff --git a/libelf/elf32_getphdr.c b/libelf/elf32_getphdr.c deleted file mode 100644 index 9a7b883c..00000000 --- a/libelf/elf32_getphdr.c +++ /dev/null @@ -1,202 +0,0 @@ -/* Get ELF program header table. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdlib.h> -#include <unistd.h> - -#include "libelfP.h" -#include "common.h" - -#ifndef LIBELFBITS -# define LIBELFBITS 32 -#endif - - -ElfW2(LIBELFBITS,Phdr) * -elfw2(LIBELFBITS,getphdr) (elf) - Elf *elf; -{ - ElfW2(LIBELFBITS,Phdr) *result; - - if (elf == NULL) - return NULL; - - if (unlikely (elf->kind != ELF_K_ELF)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - /* If the program header entry has already been filled in the code - below must already have been run. So the class is set, too. No - need to waste any more time here. */ - result = elf->state.ELFW(elf,LIBELFBITS).phdr; - if (likely (result != NULL)) - return result; - - rwlock_wrlock (elf->lock); - - if (elf->class == 0) - elf->class = ELFW(ELFCLASS,LIBELFBITS); - else if (elf->class != ELFW(ELFCLASS,LIBELFBITS)) - { - __libelf_seterrno (ELF_E_INVALID_CLASS); - result = NULL; - goto out; - } - - if (likely (result == NULL)) - { - /* Read the section header table. */ - ElfW2(LIBELFBITS,Ehdr) *ehdr = elf->state.ELFW(elf,LIBELFBITS).ehdr; - size_t phnum; - size_t size; - - /* If no program header exists return NULL. */ - phnum = ehdr->e_phnum; - if (phnum == 0) - { - __libelf_seterrno (ELF_E_NO_PHDR); - goto out; - } - - size = phnum * sizeof (ElfW2(LIBELFBITS,Phdr)); - - if (elf->map_address != NULL) - { - /* All the data is already mapped. Use it. */ - if (ehdr->e_ident[EI_DATA] == MY_ELFDATA - && (ALLOW_UNALIGNED - || (ehdr->e_phoff - & (__alignof__ (ElfW2(LIBELFBITS,Phdr)) - 1)) == 0)) - /* Simply use the mapped data. */ - elf->state.ELFW(elf,LIBELFBITS).phdr = (ElfW2(LIBELFBITS,Phdr) *) - ((char *) elf->map_address + elf->start_offset + ehdr->e_phoff); - else - { - size_t cnt; - ElfW2(LIBELFBITS,Phdr) *notcvt; - ElfW2(LIBELFBITS,Phdr) *phdr; - - /* Allocate memory for the program headers. We know the number - of entries from the ELF header. */ - phdr = elf->state.ELFW(elf,LIBELFBITS).phdr = - (ElfW2(LIBELFBITS,Phdr) *) malloc (size); - if (elf->state.ELFW(elf,LIBELFBITS).phdr == NULL) - { - __libelf_seterrno (ELF_E_NOMEM); - goto out; - } - elf->state.ELFW(elf,LIBELFBITS).phdr_flags |= - ELF_F_MALLOCED | ELF_F_DIRTY; - - /* Now copy the data and at the same time convert the - byte order. */ - if (ALLOW_UNALIGNED - || (ehdr->e_phoff - & (__alignof__ (ElfW2(LIBELFBITS,Phdr)) - 1)) == 0) - notcvt = (ElfW2(LIBELFBITS,Phdr) *) - ((char *) elf->map_address - + elf->start_offset + ehdr->e_phoff); - else - { - notcvt = (ElfW2(LIBELFBITS,Phdr) *) alloca (size); - memcpy (notcvt, ((char *) elf->map_address + - elf->start_offset + ehdr->e_phoff), - size); - } - - for (cnt = 0; cnt < phnum; ++cnt) - { - CONVERT_TO (phdr[cnt].p_type, notcvt[cnt].p_type); - CONVERT_TO (phdr[cnt].p_offset, notcvt[cnt].p_offset); - CONVERT_TO (phdr[cnt].p_vaddr, notcvt[cnt].p_vaddr); - CONVERT_TO (phdr[cnt].p_paddr, notcvt[cnt].p_paddr); - CONVERT_TO (phdr[cnt].p_filesz, notcvt[cnt].p_filesz); - CONVERT_TO (phdr[cnt].p_memsz, notcvt[cnt].p_memsz); - CONVERT_TO (phdr[cnt].p_flags, notcvt[cnt].p_flags); - CONVERT_TO (phdr[cnt].p_align, notcvt[cnt].p_align); - } - } - } - else if (likely (elf->fildes != -1)) - { - /* Allocate memory for the program headers. We know the number - of entries from the ELF header. */ - elf->state.ELFW(elf,LIBELFBITS).phdr = - (ElfW2(LIBELFBITS,Phdr) *) malloc (size); - if (elf->state.ELFW(elf,LIBELFBITS).phdr == NULL) - { - __libelf_seterrno (ELF_E_NOMEM); - goto out; - } - elf->state.ELFW(elf,LIBELFBITS).phdr_flags |= ELF_F_MALLOCED; - - /* Read the header. */ - if ((size_t) pread (elf->fildes, - elf->state.ELFW(elf,LIBELFBITS).phdr, size, - (elf->start_offset + ehdr->e_phoff)) != size) - { - /* Severe problems. We cannot read the data. */ - __libelf_seterrno (ELF_E_READ_ERROR); - free (elf->state.ELFW(elf,LIBELFBITS).phdr); - elf->state.ELFW(elf,LIBELFBITS).phdr = NULL; - goto out; - } - - /* If the byte order of the file is not the same as the one - of the host convert the data now. */ - if (ehdr->e_ident[EI_DATA] != MY_ELFDATA) - { - ElfW2(LIBELFBITS,Phdr) *phdr; - size_t cnt; - - phdr = elf->state.ELFW(elf,LIBELFBITS).phdr; - for (cnt = 0; cnt < phnum; ++cnt) - { - CONVERT (phdr[cnt].p_type); - CONVERT (phdr[cnt].p_offset); - CONVERT (phdr[cnt].p_vaddr); - CONVERT (phdr[cnt].p_paddr); - CONVERT (phdr[cnt].p_filesz); - CONVERT (phdr[cnt].p_memsz); - CONVERT (phdr[cnt].p_flags); - CONVERT (phdr[cnt].p_align); - } - } - } - else - { - /* The file descriptor was already enabled and not all data was - read. */ - __libelf_seterrno (ELF_E_FD_DISABLED); - goto out; - } - - result = elf->state.ELFW(elf,LIBELFBITS).phdr; - } - - out: - rwlock_unlock (elf->lock); - - return result; -} -INTDEF(elfw2(LIBELFBITS,getphdr)) diff --git a/libelf/elf32_getshdr.c b/libelf/elf32_getshdr.c deleted file mode 100644 index 1caf206c..00000000 --- a/libelf/elf32_getshdr.c +++ /dev/null @@ -1,185 +0,0 @@ -/* Return section header. - Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <unistd.h> - -#include "libelfP.h" -#include "common.h" - -#ifndef LIBELFBITS -# define LIBELFBITS 32 -#endif - - -ElfW2(LIBELFBITS,Shdr) * -elfw2(LIBELFBITS,getshdr) (scn) - Elf_Scn *scn; -{ - ElfW2(LIBELFBITS,Shdr) *result; - - if (scn == NULL) - return NULL; - - if (unlikely (scn->elf->state.elf.ehdr == NULL)) - { - __libelf_seterrno (ELF_E_WRONG_ORDER_EHDR); - return NULL; - } - - if (unlikely (scn->elf->class != ELFW(ELFCLASS,LIBELFBITS))) - { - __libelf_seterrno (ELF_E_INVALID_CLASS); - return NULL; - } - - result = scn->shdr.ELFW(e,LIBELFBITS); - if (result == NULL) - { - /* Read the section header table. */ - Elf *elf = scn->elf; - ElfW2(LIBELFBITS,Ehdr) *ehdr = elf->state.ELFW(elf,LIBELFBITS).ehdr; - size_t shnum; - ElfW2(LIBELFBITS,Shdr) *shdr; - size_t size; - size_t cnt; - - rwlock_wrlock (elf->lock); - - /* Try again, maybe the data is there now. */ - result = scn->shdr.ELFW(e,LIBELFBITS); - if (result != NULL) - goto out; - - if (INTUSE (elf_getshnum) (elf, &shnum) != 0) - goto out; - size = shnum * sizeof (ElfW2(LIBELFBITS,Shdr)); - - /* Allocate memory for the program headers. We know the number - of entries from the ELF header. */ - shdr = elf->state.ELFW(elf,LIBELFBITS).shdr = - (ElfW2(LIBELFBITS,Shdr) *) malloc (size); - if (elf->state.ELFW(elf,LIBELFBITS).shdr == NULL) - { - __libelf_seterrno (ELF_E_NOMEM); - goto out; - } - elf->state.ELFW(elf,LIBELFBITS).shdr_malloced = 1; - - if (elf->map_address != NULL) - { - ElfW2(LIBELFBITS,Shdr) *notcvt; - - /* All the data is already mapped. If we could use it - directly this would already have happened. */ - assert (ehdr->e_ident[EI_DATA] != MY_ELFDATA - || (! ALLOW_UNALIGNED - && (ehdr->e_shoff - & (__alignof__ (ElfW2(LIBELFBITS,Shdr)) - 1)) != 0)); - - /* Now copy the data and at the same time convert the byte - order. */ - if (ALLOW_UNALIGNED - || (ehdr->e_shoff - & (__alignof__ (ElfW2(LIBELFBITS,Shdr)) - 1)) == 0) - notcvt = (ElfW2(LIBELFBITS,Shdr) *) - ((char *) elf->map_address - + elf->start_offset + ehdr->e_shoff); - else - { - notcvt = (ElfW2(LIBELFBITS,Shdr) *) alloca (size); - memcpy (notcvt, ((char *) elf->map_address - + elf->start_offset + ehdr->e_shoff), - size); - } - - for (cnt = 0; cnt < shnum; ++cnt) - { - CONVERT_TO (shdr[cnt].sh_name, notcvt[cnt].sh_name); - CONVERT_TO (shdr[cnt].sh_type, notcvt[cnt].sh_type); - CONVERT_TO (shdr[cnt].sh_flags, notcvt[cnt].sh_flags); - CONVERT_TO (shdr[cnt].sh_addr, notcvt[cnt].sh_addr); - CONVERT_TO (shdr[cnt].sh_offset, notcvt[cnt].sh_offset); - CONVERT_TO (shdr[cnt].sh_size, notcvt[cnt].sh_size); - CONVERT_TO (shdr[cnt].sh_link, notcvt[cnt].sh_link); - CONVERT_TO (shdr[cnt].sh_info, notcvt[cnt].sh_info); - CONVERT_TO (shdr[cnt].sh_addralign, notcvt[cnt].sh_addralign); - CONVERT_TO (shdr[cnt].sh_entsize, notcvt[cnt].sh_entsize); - } - } - else if (elf->fildes != -1) - { - /* Read the header. */ - if ((size_t) pread (elf->fildes, - elf->state.ELFW(elf,LIBELFBITS).shdr, size, - elf->start_offset + ehdr->e_shoff) != size) - { - /* Severe problems. We cannot read the data. */ - __libelf_seterrno (ELF_E_READ_ERROR); - goto free_and_out; - } - - /* If the byte order of the file is not the same as the one - of the host convert the data now. */ - if (ehdr->e_ident[EI_DATA] != MY_ELFDATA) - for (cnt = 0; cnt < shnum; ++cnt) - { - CONVERT (shdr[cnt].sh_name); - CONVERT (shdr[cnt].sh_type); - CONVERT (shdr[cnt].sh_flags); - CONVERT (shdr[cnt].sh_addr); - CONVERT (shdr[cnt].sh_offset); - CONVERT (shdr[cnt].sh_size); - CONVERT (shdr[cnt].sh_link); - CONVERT (shdr[cnt].sh_info); - CONVERT (shdr[cnt].sh_addralign); - CONVERT (shdr[cnt].sh_entsize); - } - } - else - { - /* The file descriptor was already enabled and not all data was - read. Undo the allocation. */ - __libelf_seterrno (ELF_E_FD_DISABLED); - - free_and_out: - free (shdr); - elf->state.ELFW(elf,LIBELFBITS).shdr = NULL; - elf->state.ELFW(elf,LIBELFBITS).shdr_malloced = 0; - - goto out; - } - - /* Set the pointers in the `scn's. */ - for (cnt = 0; cnt < shnum; ++cnt) - elf->state.ELFW(elf,LIBELFBITS).scns.data[cnt].shdr.ELFW(e,LIBELFBITS) - = &elf->state.ELFW(elf,LIBELFBITS).shdr[cnt]; - - result = scn->shdr.ELFW(e,LIBELFBITS); - assert (result != NULL); - - out: - rwlock_unlock (elf->lock); - } - - return result; -} -INTDEF(elfw2(LIBELFBITS,getshdr)) diff --git a/libelf/elf32_newehdr.c b/libelf/elf32_newehdr.c deleted file mode 100644 index 658ad462..00000000 --- a/libelf/elf32_newehdr.c +++ /dev/null @@ -1,80 +0,0 @@ -/* Create new ELF header. - Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdlib.h> -#include <string.h> - -#include "libelfP.h" - -#ifndef LIBELFBITS -# define LIBELFBITS 32 -#endif - - -ElfW2(LIBELFBITS,Ehdr) * -elfw2(LIBELFBITS,newehdr) (elf) - Elf *elf; -{ - ElfW2(LIBELFBITS,Ehdr) *result; - - if (elf == NULL) - return NULL; - - if (unlikely (elf->kind != ELF_K_ELF)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - rwlock_wrlock (elf->lock); - - if (elf->class == 0) - elf->class = ELFW(ELFCLASS,LIBELFBITS); - else if (unlikely (elf->class != ELFW(ELFCLASS,LIBELFBITS))) - { - __libelf_seterrno (ELF_E_INVALID_CLASS); - result = NULL; - goto out; - } - - /* Don't create an ELF header if one already exists. */ - if (elf->state.ELFW(elf,LIBELFBITS).ehdr == NULL) - { - /* We use the memory in the ELF descriptor. */ - elf->state.ELFW(elf,LIBELFBITS).ehdr = - &elf->state.ELFW(elf,LIBELFBITS).ehdr_mem; - - /* We clear this memory. */ - memset (elf->state.ELFW(elf,LIBELFBITS).ehdr, '\0', - sizeof (ElfW2(LIBELFBITS,Ehdr))); - - /* Mark the ELF header has modified. */ - elf->state.ELFW(elf,LIBELFBITS).ehdr_flags |= ELF_F_DIRTY; - } - - result = elf->state.ELFW(elf,LIBELFBITS).ehdr; - - out: - rwlock_unlock (elf->lock); - - return result; -} -INTDEF(elfw2(LIBELFBITS,newehdr)) diff --git a/libelf/elf32_newphdr.c b/libelf/elf32_newphdr.c deleted file mode 100644 index 74a2387a..00000000 --- a/libelf/elf32_newphdr.c +++ /dev/null @@ -1,138 +0,0 @@ -/* Create new ELF program header table. - Copyright (C) 1999, 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <stdlib.h> -#include <string.h> - -#include "libelfP.h" - -#ifndef LIBELFBITS -# define LIBELFBITS 32 -#endif - - -ElfW2(LIBELFBITS,Phdr) * -elfw2(LIBELFBITS,newphdr) (elf, count) - Elf *elf; - size_t count; -{ - ElfW2(LIBELFBITS,Phdr) *result; - - if (elf == NULL) - return NULL; - - if (unlikely (elf->kind != ELF_K_ELF)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - rwlock_wrlock (elf->lock); - - if (elf->class == 0) - elf->class = ELFW(ELFCLASS,LIBELFBITS); - else if (unlikely (elf->class != ELFW(ELFCLASS,LIBELFBITS))) - { - __libelf_seterrno (ELF_E_INVALID_CLASS); - result = NULL; - goto out; - } - - if (unlikely (elf->state.ELFW(elf,LIBELFBITS).ehdr == NULL)) - { - __libelf_seterrno (ELF_E_WRONG_ORDER_EHDR); - result = NULL; - goto out; - } - - /* A COUNT of zero means remove existing table. */ - if (count == 0) - { - /* Free the old program header. */ - if (elf->state.ELFW(elf,LIBELFBITS).phdr != NULL) - { - if (elf->state.ELFW(elf,LIBELFBITS).phdr_flags & ELF_F_MALLOCED) - free (elf->state.ELFW(elf,LIBELFBITS).phdr); - - /* Set the pointer to NULL. */ - elf->state.ELFW(elf,LIBELFBITS).phdr = NULL; - /* Set the `e_phnum' member to the new value. */ - elf->state.ELFW(elf,LIBELFBITS).ehdr->e_phnum = 0; - /* Also set the size. */ - elf->state.ELFW(elf,LIBELFBITS).ehdr->e_phentsize = - sizeof (ElfW2(LIBELFBITS,Phdr)); - - elf->state.ELFW(elf,LIBELFBITS).phdr_flags |= ELF_F_DIRTY; - elf->flags |= ELF_F_DIRTY; - __libelf_seterrno (ELF_E_NOERROR); - } - - result = NULL; - } - else if (elf->state.ELFW(elf,LIBELFBITS).ehdr->e_phnum != count - || elf->state.ELFW(elf,LIBELFBITS).phdr == NULL) - { - /* Allocate a new program header with the appropriate number of - elements. */ - result = (ElfW2(LIBELFBITS,Phdr) *) - realloc (elf->state.ELFW(elf,LIBELFBITS).phdr, - count * sizeof (ElfW2(LIBELFBITS,Phdr))); - if (result == NULL) - __libelf_seterrno (ELF_E_NOMEM); - else - { - /* Now set the result. */ - elf->state.ELFW(elf,LIBELFBITS).phdr = result; - /* Clear the whole memory. */ - memset (result, '\0', count * sizeof (ElfW2(LIBELFBITS,Phdr))); - /* Set the `e_phnum' member to the new value. */ - elf->state.ELFW(elf,LIBELFBITS).ehdr->e_phnum = count; - /* Also set the size. */ - elf->state.ELFW(elf,LIBELFBITS).ehdr->e_phentsize = - elf_typesize (LIBELFBITS, ELF_T_PHDR, 1); - /* Remember we allocated the array and mark the structure is - modified. */ - elf->state.ELFW(elf,LIBELFBITS).phdr_flags |= - ELF_F_DIRTY | ELF_F_MALLOCED; - /* We have to rewrite the entire file if the size of the - program header is changed. */ - elf->flags |= ELF_F_DIRTY; - } - } - else - { - /* We have the same number of entries. Just clear the array. */ - assert (elf->state.ELFW(elf,LIBELFBITS).ehdr->e_phentsize - == elf_typesize (LIBELFBITS, ELF_T_PHDR, 1)); - - /* Mark the structure as modified. */ - elf->state.ELFW(elf,LIBELFBITS).phdr_flags |= ELF_F_DIRTY; - - result = elf->state.ELFW(elf,LIBELFBITS).phdr; - } - - out: - rwlock_unlock (elf->lock); - - return result; -} -INTDEF(elfw2(LIBELFBITS,newphdr)) diff --git a/libelf/elf32_updatefile.c b/libelf/elf32_updatefile.c deleted file mode 100644 index 1a628811..00000000 --- a/libelf/elf32_updatefile.c +++ /dev/null @@ -1,623 +0,0 @@ -/* Write changed data structures. - Copyright (C) 2000, 2001, 2002, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <libelf.h> -#include <stdbool.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <sys/param.h> - -#include "libelfP.h" - - -#ifndef LIBELFBITS -# define LIBELFBITS 32 -#endif - - -static int -compare_sections (const void *a, const void *b) -{ - const Elf_Scn **scna = (const Elf_Scn **) a; - const Elf_Scn **scnb = (const Elf_Scn **) b; - - if ((*scna)->shdr.ELFW(e,LIBELFBITS)->sh_offset - < (*scnb)->shdr.ELFW(e,LIBELFBITS)->sh_offset) - return -1; - - if ((*scna)->shdr.ELFW(e,LIBELFBITS)->sh_offset - > (*scnb)->shdr.ELFW(e,LIBELFBITS)->sh_offset) - return 1; - - if ((*scna)->index < (*scnb)->index) - return -1; - - if ((*scna)->index > (*scnb)->index) - return 1; - - return 0; -} - - -/* Insert the sections in the list into the provided array and sort - them according to their start offsets. For sections with equal - start offsets the section index is used. */ -static void -sort_sections (Elf_Scn **scns, Elf_ScnList *list) -{ - Elf_Scn **scnp = scns; - do - { - size_t cnt; - - for (cnt = 0; cnt < list->cnt; ++cnt) - *scnp++ = &list->data[cnt]; - } - while ((list = list->next) != NULL); - - qsort (scns, scnp - scns, sizeof (*scns), compare_sections); -} - - -int -internal_function_def -__elfw2(LIBELFBITS,updatemmap) (Elf *elf, int change_bo, size_t shnum) -{ - ElfW2(LIBELFBITS,Ehdr) *ehdr; - xfct_t fctp; - char *last_position; - - /* We need the ELF header several times. */ - ehdr = elf->state.ELFW(elf,LIBELFBITS).ehdr; - - /* Write out the ELF header. */ - if ((elf->state.ELFW(elf,LIBELFBITS).ehdr_flags | elf->flags) & ELF_F_DIRTY) - { - /* If the type sizes should be different at some time we have to - rewrite this code. */ - assert (sizeof (ElfW2(LIBELFBITS,Ehdr)) - == elf_typesize (LIBELFBITS, ELF_T_EHDR, 1)); - - if (unlikely (change_bo)) - { - /* Today there is only one version of the ELF header. */ -#if EV_NUM != 2 - fctp = __elf_xfctstom[__libelf_version - 1][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_EHDR]; -#else -# undef fctp -# define fctp __elf_xfctstom[0][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_EHDR] -#endif - - /* Do the real work. */ - (*fctp) ((char *) elf->map_address + elf->start_offset, ehdr, - sizeof (ElfW2(LIBELFBITS,Ehdr)), 1); - } - else - memcpy (elf->map_address + elf->start_offset, ehdr, - sizeof (ElfW2(LIBELFBITS,Ehdr))); - - elf->state.ELFW(elf,LIBELFBITS).ehdr_flags &= ~ELF_F_DIRTY; - } - - /* Write out the program header table. */ - if (elf->state.ELFW(elf,LIBELFBITS).phdr != NULL - && ((elf->state.ELFW(elf,LIBELFBITS).phdr_flags | elf->flags) - & ELF_F_DIRTY)) - { - /* If the type sizes should be different at some time we have to - rewrite this code. */ - assert (sizeof (ElfW2(LIBELFBITS,Phdr)) - == elf_typesize (LIBELFBITS, ELF_T_PHDR, 1)); - - /* Maybe the user wants a gap between the ELF header and the program - header. */ - if (ehdr->e_phoff > ehdr->e_ehsize) - memset (elf->map_address + elf->start_offset + ehdr->e_ehsize, - __libelf_fill_byte, ehdr->e_phoff - ehdr->e_ehsize); - - if (unlikely (change_bo)) - { - /* Today there is only one version of the ELF header. */ -#if EV_NUM != 2 - fctp = __elf_xfctstom[__libelf_version - 1][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_PHDR]; -#else -# undef fctp -# define fctp __elf_xfctstom[0][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_PHDR] -#endif - - /* Do the real work. */ - (*fctp) (elf->map_address + elf->start_offset + ehdr->e_phoff, - elf->state.ELFW(elf,LIBELFBITS).phdr, - sizeof (ElfW2(LIBELFBITS,Phdr)) * ehdr->e_phnum, 1); - } - else - memcpy (elf->map_address + elf->start_offset + ehdr->e_phoff, - elf->state.ELFW(elf,LIBELFBITS).phdr, - sizeof (ElfW2(LIBELFBITS,Phdr)) * ehdr->e_phnum); - - elf->state.ELFW(elf,LIBELFBITS).phdr_flags &= ~ELF_F_DIRTY; - } - - /* From now on we have to keep track of the last position to eventually - fill the gaps with the prescribed fill byte. */ - last_position = ((char *) elf->map_address + elf->start_offset - + MAX (elf_typesize (LIBELFBITS, ELF_T_EHDR, 1), - ehdr->e_phoff) - + elf_typesize (LIBELFBITS, ELF_T_PHDR, ehdr->e_phnum)); - - /* Write all the sections. Well, only those which are modified. */ - if (shnum > 0) - { - ElfW2(LIBELFBITS,Shdr) *shdr_dest; - Elf_ScnList *list = &elf->state.ELFW(elf,LIBELFBITS).scns; - Elf_Scn **scns = (Elf_Scn **) alloca (shnum * sizeof (Elf_Scn *)); - char *shdr_start = ((char *) elf->map_address + elf->start_offset - + ehdr->e_shoff); - char *shdr_end = shdr_start + ehdr->e_shnum * ehdr->e_shentsize; - size_t cnt; - -#if EV_NUM != 2 - xfct_t shdr_fctp = __elf_xfctstom[__libelf_version - 1][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_SHDR]; -#else -# undef shdr_fctp -# define shdr_fctp __elf_xfctstom[0][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_SHDR] -#endif - shdr_dest = (ElfW2(LIBELFBITS,Shdr) *) - ((char *) elf->map_address + elf->start_offset + ehdr->e_shoff); - - /* Get all sections into the array and sort them. */ - sort_sections (scns, list); - - /* Iterate over all the section in the order in which they - appear in the output file. */ - for (cnt = 0; cnt < shnum; ++cnt) - { - Elf_Scn *scn = scns[cnt]; - ElfW2(LIBELFBITS,Shdr) *shdr; - char *scn_start; - Elf_Data_List *dl; - - shdr = scn->shdr.ELFW(e,LIBELFBITS); - - scn_start = ((char *) elf->map_address - + elf->start_offset + shdr->sh_offset); - dl = &scn->data_list; - - if (shdr->sh_type != SHT_NOBITS && scn->data_list_rear != NULL) - do - { - if ((scn->flags | dl->flags | elf->flags) & ELF_F_DIRTY) - { - if (scn_start + dl->data.d.d_off != last_position) - { - if (scn_start + dl->data.d.d_off > last_position) - { - /* This code assumes that the data blocks for - a section are ordered by offset. */ - size_t written = 0; - - if (last_position < shdr_start) - { - written = MIN (scn_start + dl->data.d.d_off - - last_position, - shdr_start - last_position); - - memset (last_position, __libelf_fill_byte, - written); - } - - if (last_position + written - != scn_start + dl->data.d.d_off - && shdr_end < scn_start + dl->data.d.d_off) - memset (shdr_end, __libelf_fill_byte, - scn_start + dl->data.d.d_off - shdr_end); - - last_position = scn_start + dl->data.d.d_off; - } - } - - if (unlikely (change_bo)) - { -#if EV_NUM != 2 - fctp = __elf_xfctstom[__libelf_version - 1][dl->data.d.d_version - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][dl->data.d.d_type]; -#else -# undef fctp - fctp = __elf_xfctstom[0][0][ELFW(ELFCLASS, LIBELFBITS) - 1][dl->data.d.d_type]; -#endif - - /* Do the real work. */ - (*fctp) (last_position, dl->data.d.d_buf, - dl->data.d.d_size, 1); - - last_position += dl->data.d.d_size; - } - else - last_position = mempcpy (last_position, - dl->data.d.d_buf, - dl->data.d.d_size); - } - else - last_position += dl->data.d.d_size; - - dl->flags &= ~ELF_F_DIRTY; - - dl = dl->next; - } - while (dl != NULL); - else if (shdr->sh_type != SHT_NOBITS && scn->index != 0) - /* We have to trust the existing section header information. */ - last_position += shdr->sh_size; - - /* Write the section header table entry if necessary. */ - if ((scn->shdr_flags | elf->flags) & ELF_F_DIRTY) - { - if (unlikely (change_bo)) - (*shdr_fctp) (&shdr_dest[scn->index], - scn->shdr.ELFW(e,LIBELFBITS), - sizeof (ElfW2(LIBELFBITS,Shdr)), 1); - else - memcpy (&shdr_dest[scn->index], - scn->shdr.ELFW(e,LIBELFBITS), - sizeof (ElfW2(LIBELFBITS,Shdr))); - - scn->shdr_flags &= ~ELF_F_DIRTY; - } - - scn->flags &= ~ELF_F_DIRTY; - } - - /* Fill the gap between last section and section header table if - necessary. */ - if ((elf->flags & ELF_F_DIRTY) - && last_position < ((char *) elf->map_address + elf->start_offset - + ehdr->e_shoff)) - memset (last_position, __libelf_fill_byte, - (char *) elf->map_address + elf->start_offset + ehdr->e_shoff - - last_position); - } - - /* That was the last part. Clear the overall flag. */ - elf->flags &= ~ELF_F_DIRTY; - - return 0; -} - - -/* Size of the buffer we use to generate the blocks of fill bytes. */ -#define FILLBUFSIZE 4096 - -/* If we have to convert the section buffer contents we have to use - temporary buffer. Only buffers up to MAX_TMPBUF bytes are allocated - on the stack. */ -#define MAX_TMPBUF 32768 - - -/* Helper function to write out fill bytes. */ -static int -fill (int fd, off_t pos, size_t len, char *fillbuf, size_t *filledp) -{ - size_t filled = *filledp; - size_t fill_len = MIN (len, FILLBUFSIZE); - - if (unlikely (fill_len > filled) && filled < FILLBUFSIZE) - { - /* Initialize a few more bytes. */ - memset (fillbuf + filled, __libelf_fill_byte, fill_len - filled); - *filledp = filled = fill_len; - } - - do - { - /* This many bytes we want to write in this round. */ - size_t n = MIN (filled, len); - - if (unlikely ((size_t) pwrite (fd, fillbuf, n, pos) != n)) - { - __libelf_seterrno (ELF_E_WRITE_ERROR); - return 1; - } - - pos += n; - len -= n; - } - while (len > 0); - - return 0; -} - - -int -internal_function_def -__elfw2(LIBELFBITS,updatefile) (Elf *elf, int change_bo, size_t shnum) -{ - char fillbuf[FILLBUFSIZE]; - size_t filled = 0; - ElfW2(LIBELFBITS,Ehdr) *ehdr; - xfct_t fctp; - off_t last_offset; - - /* We need the ELF header several times. */ - ehdr = elf->state.ELFW(elf,LIBELFBITS).ehdr; - - /* Write out the ELF header. */ - if ((elf->state.ELFW(elf,LIBELFBITS).ehdr_flags | elf->flags) & ELF_F_DIRTY) - { - ElfW2(LIBELFBITS,Ehdr) tmp_ehdr; - ElfW2(LIBELFBITS,Ehdr) *out_ehdr = ehdr; - - /* If the type sizes should be different at some time we have to - rewrite this code. */ - assert (sizeof (ElfW2(LIBELFBITS,Ehdr)) - == elf_typesize (LIBELFBITS, ELF_T_EHDR, 1)); - - if (unlikely (change_bo)) - { - /* Today there is only one version of the ELF header. */ -#if EV_NUM != 2 - fctp = __elf_xfctstom[__libelf_version - 1][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_EHDR]; -#else -# undef fctp -# define fctp __elf_xfctstom[0][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_EHDR] -#endif - - /* Write the converted ELF header in a temporary buffer. */ - (*fctp) (&tmp_ehdr, ehdr, sizeof (ElfW2(LIBELFBITS,Ehdr)), 1); - - /* This is the buffer we want to write. */ - out_ehdr = &tmp_ehdr; - } - - /* Write out the ELF header. */ - if (unlikely (pwrite (elf->fildes, out_ehdr, - sizeof (ElfW2(LIBELFBITS,Ehdr)), 0) - != sizeof (ElfW2(LIBELFBITS,Ehdr)))) - { - __libelf_seterrno (ELF_E_WRITE_ERROR); - return 1; - } - - elf->state.ELFW(elf,LIBELFBITS).ehdr_flags &= ~ELF_F_DIRTY; - } - - /* If the type sizes should be different at some time we have to - rewrite this code. */ - assert (sizeof (ElfW2(LIBELFBITS,Phdr)) - == elf_typesize (LIBELFBITS, ELF_T_PHDR, 1)); - - /* Write out the program header table. */ - if (elf->state.ELFW(elf,LIBELFBITS).phdr != NULL - && ((elf->state.ELFW(elf,LIBELFBITS).phdr_flags | elf->flags) - & ELF_F_DIRTY)) - { - ElfW2(LIBELFBITS,Phdr) *tmp_phdr = NULL; - ElfW2(LIBELFBITS,Phdr) *out_phdr = elf->state.ELFW(elf,LIBELFBITS).phdr; - - /* Maybe the user wants a gap between the ELF header and the program - header. */ - if (ehdr->e_phoff > ehdr->e_ehsize - && unlikely (fill (elf->fildes, ehdr->e_ehsize, - ehdr->e_phoff - ehdr->e_ehsize, fillbuf, &filled) - != 0)) - return 1; - - if (unlikely (change_bo)) - { - /* Today there is only one version of the ELF header. */ -#if EV_NUM != 2 - fctp = __elf_xfctstom[__libelf_version - 1][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_PHDR]; -#else -# undef fctp -# define fctp __elf_xfctstom[0][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_PHDR] -#endif - - /* Allocate sufficient memory. */ - tmp_phdr = (ElfW2(LIBELFBITS,Phdr) *) - malloc (sizeof (ElfW2(LIBELFBITS,Phdr)) * ehdr->e_phnum); - if (tmp_phdr == NULL) - { - __libelf_seterrno (ELF_E_NOMEM); - return 1; - } - - /* Write the converted ELF header in a temporary buffer. */ - (*fctp) (tmp_phdr, elf->state.ELFW(elf,LIBELFBITS).phdr, - sizeof (ElfW2(LIBELFBITS,Phdr)) * ehdr->e_phnum, 1); - - /* This is the buffer we want to write. */ - out_phdr = tmp_phdr; - } - - /* Write out the ELF header. */ - if (unlikely ((size_t) pwrite (elf->fildes, out_phdr, - sizeof (ElfW2(LIBELFBITS,Phdr)) - * ehdr->e_phnum, ehdr->e_phoff) - != sizeof (ElfW2(LIBELFBITS,Phdr)) * ehdr->e_phnum)) - { - __libelf_seterrno (ELF_E_WRITE_ERROR); - return 1; - } - - /* This is a no-op we we have not allocated any memory. */ - free (tmp_phdr); - - elf->state.ELFW(elf,LIBELFBITS).phdr_flags &= ~ELF_F_DIRTY; - } - - /* From now on we have to keep track of the last position to eventually - fill the gaps with the prescribed fill byte. */ - if (elf->state.ELFW(elf,LIBELFBITS).phdr == NULL) - last_offset = elf_typesize (LIBELFBITS, ELF_T_EHDR, 1); - else - last_offset = (ehdr->e_phoff - + sizeof (ElfW2(LIBELFBITS,Phdr)) * ehdr->e_phnum); - - /* Write all the sections. Well, only those which are modified. */ - if (shnum > 0) - { - off_t shdr_offset; - Elf_ScnList *list = &elf->state.ELFW(elf,LIBELFBITS).scns; - ElfW2(LIBELFBITS,Shdr) *shdr_data; - Elf_Scn **scns = (Elf_Scn **) alloca (shnum * sizeof (Elf_Scn *)); - int shdr_flags; - size_t cnt; - - shdr_offset = elf->start_offset + ehdr->e_shoff; -#if EV_NUM != 2 - xfct_t shdr_fctp = __elf_xfctstom[__libelf_version - 1][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_SHDR]; -#else -# undef shdr_fctp -# define shdr_fctp __elf_xfctstom[0][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_SHDR] -#endif - - if (change_bo || elf->state.ELFW(elf,LIBELFBITS).shdr == NULL) - shdr_data = (ElfW2(LIBELFBITS,Shdr) *) - alloca (shnum * sizeof (ElfW2(LIBELFBITS,Shdr))); - else - shdr_data = elf->state.ELFW(elf,LIBELFBITS).shdr; - shdr_flags = elf->flags; - - /* Get all sections into the array and sort them. */ - sort_sections (scns, list); - - for (cnt = 0; cnt < shnum; ++cnt) - { - Elf_Scn *scn = scns[cnt]; - ElfW2(LIBELFBITS,Shdr) *shdr; - off_t scn_start; - Elf_Data_List *dl; - - shdr = scn->shdr.ELFW(e,LIBELFBITS); - - scn_start = elf->start_offset + shdr->sh_offset; - dl = &scn->data_list; - - if (shdr->sh_type != SHT_NOBITS && scn->data_list_rear != NULL - && scn->index != 0) - do - { - if ((scn->flags | dl->flags | elf->flags) & ELF_F_DIRTY) - { - char tmpbuf[MAX_TMPBUF]; - void *buf = dl->data.d.d_buf; - - if (scn_start + dl->data.d.d_off != last_offset) - { - assert (last_offset < scn_start + dl->data.d.d_off); - - if (unlikely (fill (elf->fildes, last_offset, - (scn_start + dl->data.d.d_off) - - last_offset, fillbuf, - &filled) != 0)) - return 1; - - last_offset = scn_start + dl->data.d.d_off; - } - - if (unlikely (change_bo)) - { -#if EV_NUM != 2 - fctp = __elf_xfctstom[__libelf_version - 1][dl->data.d.d_version - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][dl->data.d.d_type]; -#else -# undef fctp - fctp = __elf_xfctstom[0][0][ELFW(ELFCLASS, LIBELFBITS) - 1][dl->data.d.d_type]; -#endif - - buf = tmpbuf; - if (dl->data.d.d_size > MAX_TMPBUF) - { - buf = malloc (dl->data.d.d_size); - if (buf == NULL) - { - __libelf_seterrno (ELF_E_NOMEM); - return 1; - } - } - - /* Do the real work. */ - (*fctp) (buf, dl->data.d.d_buf, dl->data.d.d_size, 1); - } - - if (unlikely ((size_t) pwrite (elf->fildes, buf, - dl->data.d.d_size, - last_offset) - != dl->data.d.d_size)) - { - if (buf != dl->data.d.d_buf && buf != tmpbuf) - free (buf); - - __libelf_seterrno (ELF_E_WRITE_ERROR); - return 1; - } - - if (buf != dl->data.d.d_buf && buf != tmpbuf) - free (buf); - } - - last_offset += dl->data.d.d_size; - - dl->flags &= ~ELF_F_DIRTY; - - dl = dl->next; - } - while (dl != NULL); - else if (shdr->sh_type != SHT_NOBITS && scn->index != 0) - last_offset = scn_start + shdr->sh_size; - - /* Collect the section header table information. */ - if (unlikely (change_bo)) - (*shdr_fctp) (&shdr_data[scn->index], - scn->shdr.ELFW(e,LIBELFBITS), - sizeof (ElfW2(LIBELFBITS,Shdr)), 1); - else if (elf->state.ELFW(elf,LIBELFBITS).shdr == NULL) - memcpy (&shdr_data[scn->index], scn->shdr.ELFW(e,LIBELFBITS), - sizeof (ElfW2(LIBELFBITS,Shdr))); - - shdr_flags |= scn->shdr_flags; - scn->shdr_flags &= ~ELF_F_DIRTY; - } - - /* Fill the gap between last section and section header table if - necessary. */ - if ((elf->flags & ELF_F_DIRTY) && last_offset < shdr_offset - && unlikely (fill (elf->fildes, last_offset, - shdr_offset - last_offset, - fillbuf, &filled) != 0)) - return 1; - - /* Write out the section header table. */ - if (shdr_flags & ELF_F_DIRTY - && unlikely ((size_t) pwrite (elf->fildes, shdr_data, - sizeof (ElfW2(LIBELFBITS,Shdr)) - * shnum, shdr_offset) - != sizeof (ElfW2(LIBELFBITS,Shdr)) * shnum)) - { - __libelf_seterrno (ELF_E_WRITE_ERROR); - return 1; - } - } - - /* That was the last part. Clear the overall flag. */ - elf->flags &= ~ELF_F_DIRTY; - - return 0; -} diff --git a/libelf/elf32_updatenull.c b/libelf/elf32_updatenull.c deleted file mode 100644 index 6811ad1f..00000000 --- a/libelf/elf32_updatenull.c +++ /dev/null @@ -1,370 +0,0 @@ -/* Update data structures for changes. - Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -//#include <endian.h> -#include <libelf.h> -#include <stdbool.h> -#include <string.h> -#include <sys/param.h> - -#include "libelfP.h" -#include "elf-knowledge.h" - -#ifndef LIBELFBITS -# define LIBELFBITS 32 -#endif - - - -static int -ELFW(default_ehdr,LIBELFBITS) (Elf *elf, ElfW2(LIBELFBITS,Ehdr) *ehdr, - size_t shnum, int *change_bop) -{ - /* Always write the magic bytes. */ - if (memcmp (&ehdr->e_ident[EI_MAG0], ELFMAG, SELFMAG) != 0) - { - memcpy (&ehdr->e_ident[EI_MAG0], ELFMAG, SELFMAG); - elf->state.ELFW(elf,LIBELFBITS).ehdr_flags |= ELF_F_DIRTY; - } - - /* Always set the file class. */ - update_if_changed (ehdr->e_ident[EI_CLASS], ELFW(ELFCLASS,LIBELFBITS), - elf->state.ELFW(elf,LIBELFBITS).ehdr_flags); - - /* Set the data encoding if necessary. */ - if (unlikely (ehdr->e_ident[EI_DATA] == ELFDATANONE)) - { - ehdr->e_ident[EI_DATA] = - BYTE_ORDER == BIG_ENDIAN ? ELFDATA2MSB : ELFDATA2LSB; - elf->state.ELFW(elf,LIBELFBITS).ehdr_flags |= ELF_F_DIRTY; - } - else if (unlikely (ehdr->e_ident[EI_DATA] >= ELFDATANUM)) - { - __libelf_seterrno (ELF_E_DATA_ENCODING); - return 1; - } - else - *change_bop = ((BYTE_ORDER == LITTLE_ENDIAN - && ehdr->e_ident[EI_DATA] != ELFDATA2LSB) - || (BYTE_ORDER == BIG_ENDIAN - && ehdr->e_ident[EI_DATA] != ELFDATA2MSB)); - - /* Unconditionally overwrite the ELF version. */ - update_if_changed (ehdr->e_ident[EI_VERSION], EV_CURRENT, - elf->state.ELFW(elf,LIBELFBITS).ehdr_flags); - - if (unlikely (ehdr->e_version == EV_NONE) - || unlikely (ehdr->e_version >= EV_NUM)) - { - __libelf_seterrno (ELF_E_UNKNOWN_VERSION); - return 1; - } - - if (unlikely (shnum >= SHN_LORESERVE)) - { - update_if_changed (ehdr->e_shnum, 0, - elf->state.ELFW(elf,LIBELFBITS).ehdr_flags); - } - else - update_if_changed (ehdr->e_shnum, shnum, - elf->state.ELFW(elf,LIBELFBITS).ehdr_flags); - - if (unlikely (ehdr->e_ehsize != elf_typesize (LIBELFBITS, ELF_T_EHDR, 1))) - { - ehdr->e_ehsize = elf_typesize (LIBELFBITS, ELF_T_EHDR, 1); - elf->state.ELFW(elf,LIBELFBITS).ehdr_flags |= ELF_F_DIRTY; - } - - return 0; -} - - -off_t -internal_function_def -__elfw2(LIBELFBITS,updatenull) (Elf *elf, int *change_bop, size_t shnum) -{ - ElfW2(LIBELFBITS,Ehdr) *ehdr = INTUSE(elfw2(LIBELFBITS,getehdr)) (elf); - int changed = 0; - int ehdr_flags = 0; - off_t size; - - /* Set the default values. */ - if (ELFW(default_ehdr,LIBELFBITS) (elf, ehdr, shnum, change_bop) != 0) - return -1; - - /* At least the ELF header is there. */ - size = elf_typesize (LIBELFBITS, ELF_T_EHDR, 1); - - /* Set the program header position. */ - if (elf->state.ELFW(elf,LIBELFBITS).phdr != NULL) - { - /* Only executables or shared objects have a program header. */ - if (ehdr->e_type != ET_EXEC && unlikely (ehdr->e_type != ET_DYN)) - { - __libelf_seterrno (ELF_E_INVALID_PHDR); - return -1; - } - - if (elf->flags & ELF_F_LAYOUT) - { - /* The user is supposed to fill out e_phoff. Use it and - e_phnum to determine the maximum extend. */ - size = MAX ((size_t) size, - ehdr->e_phoff - + elf_typesize (LIBELFBITS, ELF_T_PHDR, ehdr->e_phnum)); - } - else - { - update_if_changed (ehdr->e_phoff, - elf_typesize (LIBELFBITS, ELF_T_EHDR, 1), - ehdr_flags); - - /* We need no alignment here. */ - size += elf_typesize (LIBELFBITS, ELF_T_PHDR, ehdr->e_phnum); - } - } - - if (shnum > 0) - { - Elf_ScnList *list; - bool first = true; - - assert (elf->state.ELFW(elf,LIBELFBITS).scns.cnt > 0); - - if (shnum >= SHN_LORESERVE) - { - /* We have to fill in the number of sections in the header - of the zeroth section. */ - elf->state.ELFW(elf,LIBELFBITS).scns.data[0].shdr.ELFW(e,LIBELFBITS)->sh_size - = shnum; - elf->state.ELFW(elf,LIBELFBITS).scns.data[0].shdr_flags - |= ELF_F_DIRTY; - } - - - /* Go over all sections and find out how large they are. */ - list = &elf->state.ELFW(elf,LIBELFBITS).scns; - - do - { - size_t cnt; - - for (cnt = first == true; cnt < list->cnt; ++cnt) - { - Elf_Scn *scn = &list->data[cnt]; - ElfW2(LIBELFBITS,Shdr) *shdr = scn->shdr.ELFW(e,LIBELFBITS); - off_t offset = 0; - ElfW2(LIBELFBITS,Word) sh_entsize; - ElfW2(LIBELFBITS,Word) sh_align; - - assert (shdr != NULL); - sh_entsize = shdr->sh_entsize; - sh_align = shdr->sh_addralign ?: 1; - - /* Set the sh_entsize value if we can reliably detect it. */ - switch (shdr->sh_type) - { - case SHT_SYMTAB: - sh_entsize = elf_typesize (LIBELFBITS, ELF_T_SYM, 1); - break; - case SHT_RELA: - sh_entsize = elf_typesize (LIBELFBITS, ELF_T_RELA, 1); - break; - case SHT_GROUP: - /* Only relocatable files can contain section groups. */ - if (ehdr->e_type != ET_REL) - { - __libelf_seterrno (ELF_E_GROUP_NOT_REL); - return -1; - } - /* FALLTHROUGH */ - case SHT_SYMTAB_SHNDX: - sh_entsize = elf_typesize (32, ELF_T_WORD, 1); - break; - case SHT_HASH: - sh_entsize = SH_ENTSIZE_HASH (ehdr); - break; - case SHT_DYNAMIC: - sh_entsize = elf_typesize (LIBELFBITS, ELF_T_DYN, 1); - break; - case SHT_REL: - sh_entsize = elf_typesize (LIBELFBITS, ELF_T_REL, 1); - break; - case SHT_DYNSYM: - sh_entsize = elf_typesize (LIBELFBITS, ELF_T_SYM, 1); - break; - case SHT_SUNW_move: - sh_entsize = elf_typesize (LIBELFBITS, ELF_T_MOVE, 1); - break; - case SHT_SUNW_syminfo: - sh_entsize = elf_typesize (LIBELFBITS, ELF_T_SYMINFO, 1); - break; - default: - break; - } - - /* If the section header contained the wrong entry size - correct it and mark the header as modified. */ - update_if_changed (shdr->sh_entsize, sh_entsize, - scn->shdr_flags); - - /* Iterate over all data blocks. */ - if (list->data[cnt].data_list_rear != NULL) - { - Elf_Data_List *dl = &scn->data_list; - - while (dl != NULL) - { - if (unlikely (dl->data.d.d_version == EV_NONE) - || unlikely (dl->data.d.d_version >= EV_NUM)) - { - __libelf_seterrno (ELF_E_UNKNOWN_VERSION); - return -1; - } - - if (unlikely (! powerof2 (dl->data.d.d_align))) - { - __libelf_seterrno (ELF_E_INVALID_ALIGN); - return -1; - } - - sh_align = MAX (sh_align, dl->data.d.d_align); - - if (elf->flags & ELF_F_LAYOUT) - { - /* The user specified the offset and the size. - All we have to do is check whether this block - fits in the size specified for the section. */ - if (unlikely ((GElf_Word) (dl->data.d.d_off - + dl->data.d.d_size) - > shdr->sh_size)) - { - __libelf_seterrno (ELF_E_SECTION_TOO_SMALL); - return -1; - } - } - else - { - /* Determine the padding. */ - offset = ((offset + dl->data.d.d_align - 1) - & ~(dl->data.d.d_align - 1)); - - update_if_changed (dl->data.d.d_off, offset, - changed); - - offset += dl->data.d.d_size; - } - - /* Next data block. */ - dl = dl->next; - } - } - - if (elf->flags & ELF_F_LAYOUT) - { - size = MAX ((GElf_Word) size, - shdr->sh_offset - + (shdr->sh_type != SHT_NOBITS - ? shdr->sh_size : 0)); - - /* The alignment must be a power of two. This is a - requirement from the ELF specification. Additionally - we test for the alignment of the section being large - enough for the largest alignment required by a data - block. */ - if (unlikely (! powerof2 (shdr->sh_addralign)) - || unlikely (shdr->sh_addralign < sh_align)) - { - __libelf_seterrno (ELF_E_INVALID_ALIGN); - return -1; - } - } - else - { - /* How much alignment do we need for this section. */ - update_if_changed (shdr->sh_addralign, sh_align, - scn->shdr_flags); - - size = (size + sh_align - 1) & ~(sh_align - 1); - update_if_changed (shdr->sh_offset, (GElf_Word) size, - changed); - - /* See whether the section size is correct. */ - update_if_changed (shdr->sh_size, (GElf_Word) offset, - changed); - - if (shdr->sh_type != SHT_NOBITS) - size += offset; - - scn->flags |= changed; - } - - /* Check that the section size is actually a multiple of - the entry size. */ - if (shdr->sh_entsize != 0 - && unlikely (shdr->sh_size % shdr->sh_entsize != 0) - && (elf->flags & ELF_F_PERMISSIVE) == 0) - { - __libelf_seterrno (ELF_E_INVALID_SHENTSIZE); - return -1; - } - } - - assert (list->next == NULL || list->cnt == list->max); - - first = false; - } - while ((list = list->next) != NULL); - - /* Store section information. */ - if (elf->flags & ELF_F_LAYOUT) - { - /* The user is supposed to fill out e_phoff. Use it and - e_phnum to determine the maximum extend. */ - size = MAX ((GElf_Word) size, - (ehdr->e_shoff - + (elf_typesize (LIBELFBITS, ELF_T_SHDR, shnum)))); - } - else - { - /* Align for section header table. - - Yes, we use `sizeof' and not `__alignof__' since we do not - want to be surprised by architectures with less strict - alignment rules. */ -#define SHDR_ALIGN sizeof (ElfW2(LIBELFBITS,Off)) - size = (size + SHDR_ALIGN - 1) & ~(SHDR_ALIGN - 1); - - update_if_changed (ehdr->e_shoff, (GElf_Word) size, elf->flags); - update_if_changed (ehdr->e_shentsize, - elf_typesize (LIBELFBITS, ELF_T_SHDR, 1), - ehdr_flags); - - /* Account for the section header size. */ - size += elf_typesize (LIBELFBITS, ELF_T_SHDR, shnum); - } - } - - elf->state.ELFW(elf,LIBELFBITS).ehdr_flags |= ehdr_flags; - - return size; -} diff --git a/libelf/elf32_xlatetof.c b/libelf/elf32_xlatetof.c deleted file mode 100644 index 156f0da5..00000000 --- a/libelf/elf32_xlatetof.c +++ /dev/null @@ -1,111 +0,0 @@ -/* Convert from memory to file representation. - Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -//#include <endian.h> -#include <string.h> - -#include "libelfP.h" - -#ifndef LIBELFBITS -# define LIBELFBITS 32 -#endif - - -Elf_Data * -elfw2(LIBELFBITS, xlatetof) (dest, src, encode) - Elf_Data *dest; - const Elf_Data *src; - unsigned int encode; -{ - /* First test whether the input data is really suitable for this - type. This means, whether there is an integer number of records. - Note that for this implementation the memory and file size of the - data types are identical. */ -#if EV_NUM != 2 - size_t recsize = __libelf_type_sizes[src->d_version - 1][ELFW(ELFCLASS,LIBELFBITS) - 1][src->d_type]; -#else - size_t recsize = __libelf_type_sizes[0][ELFW(ELFCLASS,LIBELFBITS) - 1][src->d_type]; -#endif - - if (src->d_size % recsize != 0) - { - __libelf_seterrno (ELF_E_INVALID_DATA); - return NULL; - } - - /* Next see whether the converted data fits in the output buffer. */ - if (src->d_size > dest->d_size) - { - __libelf_seterrno (ELF_E_DEST_SIZE); - return NULL; - } - - /* Test the encode parameter. */ - if (encode != ELFDATA2LSB && encode != ELFDATA2MSB) - { - __libelf_seterrno (ELF_E_INVALID_ENCODING); - return NULL; - } - - /* Determine the translation function to use. - - At this point we make an assumption which is valid for all - existing implementations so far: the memory and file sizes are - the same. This has very important consequences: - a) The requirement that the source and destination buffer can - overlap can easily be fulfilled. - b) We need only one function to convert from and memory to file - and vice versa since the function only has to copy and/or - change the byte order. - */ - if ((__BYTE_ORDER == __LITTLE_ENDIAN && encode == ELFDATA2LSB) - || (__BYTE_ORDER == __BIG_ENDIAN && encode == ELFDATA2MSB)) - { - /* We simply have to copy since the byte order is the same. */ - if (src->d_buf != dest->d_buf) - memmove (dest->d_buf, src->d_buf, src->d_size); - } - else - { - xfct_t fctp; - - /* Get a pointer to the transformation functions. The `#ifdef' is - a small optimization since we don't anticipate another ELF - version and so would waste "precious" code. */ -#if EV_NUM != 2 - fctp = __elf_xfctstom[dest->d_version - 1][src->d_version - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][src->d_type]; -#else - fctp = __elf_xfctstom[0][0][ELFW(ELFCLASS, LIBELFBITS) - 1][src->d_type]; -#endif - - /* Do the real work. */ - (*fctp) (dest->d_buf, src->d_buf, src->d_size, 1); - } - - /* Now set the real destination type and length since the operation was - successful. */ - dest->d_type = src->d_type; - dest->d_size = src->d_size; - - return dest; -} -INTDEF(elfw2(LIBELFBITS, xlatetof)) diff --git a/libelf/elf32_xlatetom.c b/libelf/elf32_xlatetom.c deleted file mode 100644 index 7495201e..00000000 --- a/libelf/elf32_xlatetom.c +++ /dev/null @@ -1,112 +0,0 @@ -/* Convert from file to memory representation. - Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -//#include <endian.h> -#include <string.h> - -#include "libelfP.h" - -#ifndef LIBELFBITS -# define LIBELFBITS 32 -#endif - - -Elf_Data * -elfw2(LIBELFBITS, xlatetom) (dest, src, encode) - Elf_Data *dest; - const Elf_Data *src; - unsigned int encode; -{ - /* First test whether the input data is really suitable for this - type. This means, whether there is an integer number of records. - Note that for this implementation the memory and file size of the - data types are identical. */ -#if EV_NUM != 2 - size_t recsize = __libelf_type_sizes[src->d_version - 1][ELFW(ELFCLASS,LIBELFBITS) - 1][src->d_type]; -#else - size_t recsize = __libelf_type_sizes[0][ELFW(ELFCLASS,LIBELFBITS) - 1][src->d_type]; -#endif - - - if (src->d_size % recsize != 0) - { - __libelf_seterrno (ELF_E_INVALID_DATA); - return NULL; - } - - /* Next see whether the converted data fits in the output buffer. */ - if (src->d_size > dest->d_size) - { - __libelf_seterrno (ELF_E_DEST_SIZE); - return NULL; - } - - /* Test the encode parameter. */ - if (encode != ELFDATA2LSB && encode != ELFDATA2MSB) - { - __libelf_seterrno (ELF_E_INVALID_ENCODING); - return NULL; - } - - /* Determine the translation function to use. - - At this point we make an assumption which is valid for all - existing implementations so far: the memory and file sizes are - the same. This has very important consequences: - a) The requirement that the source and destination buffer can - overlap can easily be fulfilled. - b) We need only one function to convert from and memory to file - and vice versa since the function only has to copy and/or - change the byte order. - */ - if ((BYTE_ORDER == LITTLE_ENDIAN && encode == ELFDATA2LSB) - || (BYTE_ORDER == BIG_ENDIAN && encode == ELFDATA2MSB)) - { - /* We simply have to copy since the byte order is the same. */ - if (src->d_buf != dest->d_buf) - memmove (dest->d_buf, src->d_buf, src->d_size); - } - else - { - xfct_t fctp; - - /* Get a pointer to the transformation functions. The `#ifdef' is - a small optimization since we don't anticipate another ELF - version and so would waste "precious" code. */ -#if EV_NUM != 2 - fctp = __elf_xfctstom[src->d_version - 1][dest->d_version - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][src->d_type]; -#else - fctp = __elf_xfctstom[0][0][ELFW(ELFCLASS, LIBELFBITS) - 1][src->d_type]; -#endif - - /* Do the real work. */ - (*fctp) (dest->d_buf, src->d_buf, src->d_size, 0); - } - - /* Now set the real destination type and length since the operation was - successful. */ - dest->d_type = src->d_type; - dest->d_size = src->d_size; - - return dest; -} -INTDEF(elfw2(LIBELFBITS, xlatetom)) diff --git a/libelf/elf64_checksum.c b/libelf/elf64_checksum.c deleted file mode 100644 index bdb9210c..00000000 --- a/libelf/elf64_checksum.c +++ /dev/null @@ -1,19 +0,0 @@ -/* Compute simple checksum from permanent parts of the ELF file. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#define LIBELFBITS 64 -#include "elf32_checksum.c" diff --git a/libelf/elf64_fsize.c b/libelf/elf64_fsize.c deleted file mode 100644 index 0b1f414b..00000000 --- a/libelf/elf64_fsize.c +++ /dev/null @@ -1,19 +0,0 @@ -/* Return the size of an object file type. - Copyright (C) 1998, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#define LIBELFBITS 64 -#include "elf32_fsize.c" diff --git a/libelf/elf64_getehdr.c b/libelf/elf64_getehdr.c deleted file mode 100644 index 89a69fff..00000000 --- a/libelf/elf64_getehdr.c +++ /dev/null @@ -1,19 +0,0 @@ -/* Return program header table. - Copyright (C) 1998, 1999, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#define LIBELFBITS 64 -#include "elf32_getehdr.c" diff --git a/libelf/elf64_getphdr.c b/libelf/elf64_getphdr.c deleted file mode 100644 index d06d7c10..00000000 --- a/libelf/elf64_getphdr.c +++ /dev/null @@ -1,19 +0,0 @@ -/* Return program header table. - Copyright (C) 1998, 1999, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#define LIBELFBITS 64 -#include "elf32_getphdr.c" diff --git a/libelf/elf64_getshdr.c b/libelf/elf64_getshdr.c deleted file mode 100644 index 1a5da574..00000000 --- a/libelf/elf64_getshdr.c +++ /dev/null @@ -1,19 +0,0 @@ -/* Return section header. - Copyright (C) 1998, 1999, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#define LIBELFBITS 64 -#include "elf32_getshdr.c" diff --git a/libelf/elf64_newehdr.c b/libelf/elf64_newehdr.c deleted file mode 100644 index aba6e630..00000000 --- a/libelf/elf64_newehdr.c +++ /dev/null @@ -1,19 +0,0 @@ -/* Create new program header table. - Copyright (C) 1999, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1999. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#define LIBELFBITS 64 -#include "elf32_newehdr.c" diff --git a/libelf/elf64_newphdr.c b/libelf/elf64_newphdr.c deleted file mode 100644 index 90ff4632..00000000 --- a/libelf/elf64_newphdr.c +++ /dev/null @@ -1,19 +0,0 @@ -/* Create new program header table. - Copyright (C) 1999, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1999. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#define LIBELFBITS 64 -#include "elf32_newphdr.c" diff --git a/libelf/elf64_updatefile.c b/libelf/elf64_updatefile.c deleted file mode 100644 index 6b604f10..00000000 --- a/libelf/elf64_updatefile.c +++ /dev/null @@ -1,18 +0,0 @@ -/* Copyright (C) 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#define LIBELFBITS 64 -#include "elf32_updatefile.c" diff --git a/libelf/elf64_updatenull.c b/libelf/elf64_updatenull.c deleted file mode 100644 index ff1f0708..00000000 --- a/libelf/elf64_updatenull.c +++ /dev/null @@ -1,18 +0,0 @@ -/* Copyright (C) 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#define LIBELFBITS 64 -#include "elf32_updatenull.c" diff --git a/libelf/elf64_xlatetof.c b/libelf/elf64_xlatetof.c deleted file mode 100644 index 3440bbc6..00000000 --- a/libelf/elf64_xlatetof.c +++ /dev/null @@ -1,19 +0,0 @@ -/* Convert from memory to file representation. - Copyright (C) 1998, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#define LIBELFBITS 64 -#include "elf32_xlatetof.c" diff --git a/libelf/elf64_xlatetom.c b/libelf/elf64_xlatetom.c deleted file mode 100644 index 773f04ee..00000000 --- a/libelf/elf64_xlatetom.c +++ /dev/null @@ -1,19 +0,0 @@ -/* Convert from file to memory representation. - Copyright (C) 1998, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#define LIBELFBITS 64 -#include "elf32_xlatetom.c" diff --git a/libelf/elf_begin.c b/libelf/elf_begin.c deleted file mode 100644 index 63fe013e..00000000 --- a/libelf/elf_begin.c +++ /dev/null @@ -1,1070 +0,0 @@ -/* Create descriptor for processing file. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <ctype.h> -#include <errno.h> -#include <fcntl.h> -#include <stdbool.h> -#include <stddef.h> -#include <string.h> -#include <unistd.h> -#include <sys/mman.h> -#include <sys/param.h> -#include <sys/stat.h> - -#include "libelfP.h" -#include "common.h" - - -/* Create descriptor for archive in memory. */ -static inline Elf * -file_read_ar (int fildes, void *map_address, off_t offset, size_t maxsize, - Elf_Cmd cmd, Elf *parent) -{ - Elf *elf; - - /* Create a descriptor. */ - elf = allocate_elf (fildes, map_address, offset, maxsize, cmd, parent, - ELF_K_AR, 0); - if (elf != NULL) - { - /* We don't read all the symbol tables in advance. All this will - happen on demand. */ - elf->state.ar.offset = offset + SARMAG; - - elf->state.ar.elf_ar_hdr.ar_rawname = elf->state.ar.raw_name; - } - - return elf; -} - - -static size_t -get_shnum (void *map_address, unsigned char *e_ident, int fildes, off_t offset, - size_t maxsize) -{ - size_t result; - union - { - Elf32_Ehdr *e32; - Elf64_Ehdr *e64; - void *p; - } ehdr; - bool is32 = e_ident[EI_CLASS] == ELFCLASS32; - - /* Make the ELF header available. */ - if (likely (map_address != NULL) && e_ident[EI_DATA] == MY_ELFDATA - && (ALLOW_UNALIGNED - || (((size_t) ((char *) map_address + offset)) - & ((is32 ? __alignof__ (Elf32_Ehdr) : __alignof__ (Elf64_Ehdr)) - - 1)) == 0)) - ehdr.p = (char *) map_address + offset; - else - { - /* We have to read the data from the file. */ - size_t len = is32 ? sizeof (Elf32_Ehdr) : sizeof (Elf64_Ehdr); - - ehdr.p = alloca (len); - /* Fill it. */ - if ((size_t) pread (fildes, ehdr.p, len, offset) != len) - /* Failed reading. */ - return (size_t) -1l; - - if (e_ident[EI_DATA] != MY_ELFDATA) - { - if (is32) - { - CONVERT (ehdr.e32->e_shnum); - CONVERT (ehdr.e32->e_shoff); - } - else - { - CONVERT (ehdr.e64->e_shnum); - CONVERT (ehdr.e64->e_shoff); - } - } - } - - if (is32) - { - /* Get the number of sections from the ELF header. */ - result = ehdr.e32->e_shnum; - - if (unlikely (result == 0) && ehdr.e32->e_shoff != 0) - { - if (offset + ehdr.e32->e_shoff + sizeof (Elf32_Shdr) > maxsize) - /* Cannot read the first section header. */ - return (size_t) -1l; - - if (likely (map_address != NULL) && e_ident[EI_DATA] == MY_ELFDATA - && (ALLOW_UNALIGNED - || (((size_t) ((char *) map_address + offset)) - & (__alignof__ (Elf32_Ehdr) - 1)) == 0)) - /* We can directly access the memory. */ - result = ((Elf32_Shdr *) ((char *) map_address - + ehdr.e32->e_shoff - + offset))->sh_size; - else - { - Elf32_Word size; - - if (pread (fildes, &size, sizeof (Elf32_Word), - offset + ehdr.e32->e_shoff - + offsetof (Elf32_Shdr, sh_size)) - != sizeof (Elf32_Word)) - return (size_t) -1l; - - if (e_ident[EI_DATA] != MY_ELFDATA) - CONVERT (size); - - result = size; - } - } - } - else - { - /* Get the number of sections from the ELF header. */ - result = ehdr.e64->e_shnum; - - if (unlikely (result == 0) && ehdr.e64->e_shoff != 0) - { - if (offset + ehdr.e64->e_shoff + sizeof (Elf64_Shdr) > maxsize) - /* Cannot read the first section header. */ - return (size_t) -1l; - - if (likely (map_address != NULL) && e_ident[EI_DATA] == MY_ELFDATA - && (ALLOW_UNALIGNED - || (((size_t) ((char *) map_address + offset)) - & (__alignof__ (Elf64_Ehdr) - 1)) == 0)) - /* We can directly access the memory. */ - result = ((Elf64_Shdr *) ((char *) map_address - + ehdr.e64->e_shoff - + offset))->sh_size; - else - { - Elf64_Word size; - - if (pread (fildes, &size, sizeof (Elf64_Word), - offset + ehdr.e64->e_shoff - + offsetof (Elf64_Shdr, sh_size)) - != sizeof (Elf64_Word)) - return (size_t) -1l; - - if (e_ident[EI_DATA] != MY_ELFDATA) - CONVERT (size); - - result = size; - } - } - } - - return result; -} - - -/* Create descriptor for ELF file in memory. */ -static Elf * -file_read_elf (int fildes, void *map_address, off_t offset, size_t maxsize, - Elf_Cmd cmd, Elf *parent) -{ - /* We only read the ELF header now. */ - unsigned char *e_ident; - size_t scncnt; - Elf *elf; - - if (map_address != NULL) - /* It's right at the beginning of the file. No word access - required, just bytes. */ - e_ident = (unsigned char *) map_address + offset; - else - { - e_ident = (unsigned char *) alloca (EI_NIDENT); - - if (pread (fildes, e_ident, EI_NIDENT, offset) != EI_NIDENT) - { - __libelf_seterrno (ELF_E_READ_ERROR); - return NULL; - } - } - - /* Verify the binary is of the class we can handle. */ - if ((e_ident[EI_CLASS] != ELFCLASS32 - && e_ident[EI_CLASS] != ELFCLASS64) - /* We also can only handle two encodings. */ - || (e_ident[EI_DATA] != ELFDATA2LSB - && e_ident[EI_DATA] != ELFDATA2MSB)) - { - /* Cannot handle this. */ - __libelf_seterrno (ELF_E_INVALID_FILE); - return NULL; - } - - /* Determine the number of sections. */ - scncnt = get_shnum (map_address, e_ident, fildes, offset, maxsize); - if (scncnt == (size_t) -1l) - /* Could not determine the number of sections. */ - return NULL; - - /* We can now allocate the memory. */ - elf = allocate_elf (fildes, map_address, offset, maxsize, cmd, parent, - ELF_K_ELF, scncnt * sizeof (Elf_Scn)); - if (elf == NULL) - /* Not enough memory. */ - return NULL; - - /* Some more or less arbitrary value. */ - elf->state.elf.scnincr = 10; - - if (e_ident[EI_CLASS] == ELFCLASS32) - { - /* This pointer might not be directly usable if the alignment is - not sufficient for the architecture. */ - Elf32_Ehdr *ehdr = (Elf32_Ehdr *) ((char *) map_address + offset); - size_t cnt; - - assert ((unsigned int) scncnt == scncnt); - elf->state.elf32.scns.cnt = elf->state.elf32.scns.max = scncnt; - - /* This is a 32-bit binary. */ - if (map_address != NULL && e_ident[EI_DATA] == MY_ELFDATA - && (ALLOW_UNALIGNED - || ((((uintptr_t) ehdr) & (__alignof__ (Elf32_Ehdr) - 1)) == 0 - && ((uintptr_t) ((char *) ehdr + ehdr->e_shoff) - & (__alignof__ (Elf32_Shdr) - 1)) == 0 - && ((uintptr_t) ((char *) ehdr + ehdr->e_phoff) - & (__alignof__ (Elf32_Phdr) - 1)) == 0))) - { - /* We can use the mmapped memory. */ - elf->state.elf32.ehdr = - (Elf32_Ehdr *) ((char *) map_address + offset); - elf->state.elf32.shdr = - (Elf32_Shdr *) ((char *) map_address + offset - + elf->state.elf32.ehdr->e_shoff); - if (elf->state.elf32.ehdr->e_phnum) - /* Assign a value only if there really is a program - header. Otherwise the value remains NULL. */ - elf->state.elf32.phdr - = (Elf32_Phdr *) ((char *) map_address + offset - + elf->state.elf32.ehdr->e_phoff); - - for (cnt = 0; cnt < scncnt; ++cnt) - { - elf->state.elf32.scns.data[cnt].index = cnt; - elf->state.elf32.scns.data[cnt].elf = elf; - elf->state.elf32.scns.data[cnt].shdr.e32 = - &elf->state.elf32.shdr[cnt]; - elf->state.elf32.scns.data[cnt].rawdata_base = - elf->state.elf32.scns.data[cnt].data_base = - ((char *) map_address + offset - + elf->state.elf32.shdr[cnt].sh_offset); - elf->state.elf32.scns.data[cnt].list = &elf->state.elf32.scns; - } - } - else - { - /* Read the data. */ - if (pread (elf->fildes, &elf->state.elf32.ehdr_mem, - sizeof (Elf32_Ehdr), offset) != sizeof (Elf32_Ehdr)) - { - /* We must be able to read the ELF header. */ - __libelf_seterrno (ELF_E_INVALID_FILE); - return NULL; - } - - if (e_ident[EI_DATA] != MY_ELFDATA) - { - CONVERT (elf->state.elf32.ehdr_mem.e_type); - CONVERT (elf->state.elf32.ehdr_mem.e_machine); - CONVERT (elf->state.elf32.ehdr_mem.e_version); - CONVERT (elf->state.elf32.ehdr_mem.e_entry); - CONVERT (elf->state.elf32.ehdr_mem.e_phoff); - CONVERT (elf->state.elf32.ehdr_mem.e_shoff); - CONVERT (elf->state.elf32.ehdr_mem.e_flags); - CONVERT (elf->state.elf32.ehdr_mem.e_ehsize); - CONVERT (elf->state.elf32.ehdr_mem.e_phentsize); - CONVERT (elf->state.elf32.ehdr_mem.e_phnum); - CONVERT (elf->state.elf32.ehdr_mem.e_shentsize); - CONVERT (elf->state.elf32.ehdr_mem.e_shnum); - CONVERT (elf->state.elf32.ehdr_mem.e_shstrndx); - } - - elf->state.elf32.ehdr = &elf->state.elf32.ehdr_mem; - - for (cnt = 0; cnt < scncnt; ++cnt) - { - elf->state.elf32.scns.data[cnt].index = cnt; - elf->state.elf32.scns.data[cnt].elf = elf; - elf->state.elf32.scns.data[cnt].list = &elf->state.elf32.scns; - } - } - - /* So far only one block with sections. */ - elf->state.elf32.scns_last = &elf->state.elf32.scns; - } - else - { - /* This pointer might not be directly usable if the alignment is - not sufficient for the architecture. */ - Elf64_Ehdr *ehdr = (Elf64_Ehdr *) ((char *) map_address + offset); - size_t cnt; - - assert ((unsigned int) scncnt == scncnt); - elf->state.elf64.scns.cnt = elf->state.elf64.scns.max = scncnt; - - /* This is a 64-bit binary. */ - if (map_address != NULL && e_ident[EI_DATA] == MY_ELFDATA - && (ALLOW_UNALIGNED - || ((((uintptr_t) ehdr) & (__alignof__ (Elf64_Ehdr) - 1)) == 0 - && ((uintptr_t) ((char *) ehdr + ehdr->e_shoff) - & (__alignof__ (Elf64_Shdr) - 1)) == 0 - && ((uintptr_t) ((char *) ehdr + ehdr->e_phoff) - & (__alignof__ (Elf64_Phdr) - 1)) == 0))) - { - /* We can use the mmapped memory. */ - elf->state.elf64.ehdr = - (Elf64_Ehdr *) ((char *) map_address + offset); - elf->state.elf64.shdr = - (Elf64_Shdr *) ((char *) map_address + offset - + elf->state.elf64.ehdr->e_shoff); - if (elf->state.elf64.ehdr->e_phnum) - /* Assign a value only if there really is a program - header. Otherwise the value remains NULL. */ - elf->state.elf64.phdr - = (Elf64_Phdr *) ((char *) map_address + offset - + elf->state.elf64.ehdr->e_phoff); - - for (cnt = 0; cnt < scncnt; ++cnt) - { - elf->state.elf64.scns.data[cnt].index = cnt; - elf->state.elf64.scns.data[cnt].elf = elf; - elf->state.elf64.scns.data[cnt].shdr.e64 = - &elf->state.elf64.shdr[cnt]; - elf->state.elf64.scns.data[cnt].rawdata_base = - elf->state.elf64.scns.data[cnt].data_base = - ((char *) map_address + offset - + elf->state.elf64.shdr[cnt].sh_offset); - elf->state.elf64.scns.data[cnt].list = &elf->state.elf64.scns; - } - } - else - { - /* Read the data. */ - if (pread (elf->fildes, &elf->state.elf64.ehdr_mem, - sizeof (Elf64_Ehdr), offset) != sizeof (Elf64_Ehdr)) - { - /* We must be able to read the ELF header. */ - __libelf_seterrno (ELF_E_INVALID_FILE); - return NULL; - } - - if (e_ident[EI_DATA] != MY_ELFDATA) - { - CONVERT (elf->state.elf64.ehdr_mem.e_type); - CONVERT (elf->state.elf64.ehdr_mem.e_machine); - CONVERT (elf->state.elf64.ehdr_mem.e_version); - CONVERT (elf->state.elf64.ehdr_mem.e_entry); - CONVERT (elf->state.elf64.ehdr_mem.e_phoff); - CONVERT (elf->state.elf64.ehdr_mem.e_shoff); - CONVERT (elf->state.elf64.ehdr_mem.e_flags); - CONVERT (elf->state.elf64.ehdr_mem.e_ehsize); - CONVERT (elf->state.elf64.ehdr_mem.e_phentsize); - CONVERT (elf->state.elf64.ehdr_mem.e_phnum); - CONVERT (elf->state.elf64.ehdr_mem.e_shentsize); - CONVERT (elf->state.elf64.ehdr_mem.e_shnum); - CONVERT (elf->state.elf64.ehdr_mem.e_shstrndx); - } - - elf->state.elf64.ehdr = &elf->state.elf64.ehdr_mem; - - for (cnt = 0; cnt < scncnt; ++cnt) - { - elf->state.elf64.scns.data[cnt].index = cnt; - elf->state.elf64.scns.data[cnt].elf = elf; - elf->state.elf64.scns.data[cnt].list = &elf->state.elf64.scns; - } - } - - /* So far only one block with sections. */ - elf->state.elf64.scns_last = &elf->state.elf64.scns; - } - - /* Make the class easily available. */ - elf->class = e_ident[EI_CLASS]; - - return elf; -} - - -Elf * -internal_function_def -__libelf_read_mmaped_file (int fildes, void *map_address, off_t offset, - size_t maxsize, Elf_Cmd cmd, Elf *parent) -{ - /* We have to find out what kind of file this is. We handle ELF - files and archives. To find out what we have we must look at the - header. The header for an ELF file is EI_NIDENT bytes in size, - the header for an archive file SARMAG bytes long. */ - Elf_Kind kind; - - /* See what kind of object we have here. */ - kind = determine_kind (map_address + offset, maxsize); - - switch (kind) - { - case ELF_K_ELF: - return file_read_elf (fildes, map_address, offset, maxsize, cmd, parent); - - case ELF_K_AR: - return file_read_ar (fildes, map_address, offset, maxsize, cmd, parent); - - default: - break; - } - - /* This case is easy. Since we cannot do anything with this file - create a dummy descriptor. */ - return allocate_elf (fildes, map_address, offset, maxsize, cmd, parent, - ELF_K_NONE, 0); -} - - -static Elf * -read_unmmaped_file (int fildes, off_t offset, size_t maxsize, Elf_Cmd cmd, - Elf *parent) -{ - /* We have to find out what kind of file this is. We handle ELF - files and archives. To find out what we have we must read the - header. The header for an ELF file is EI_NIDENT bytes in size, - the header for an archive file SARMAG bytes long. Read the - maximum of these numbers. - - XXX We have to change this for the extended `ar' format some day. */ - unsigned char header[MAX (EI_NIDENT, SARMAG)]; - ssize_t nread; - Elf_Kind kind; - - /* Read the head of the file. */ - nread = pread (fildes, header, MIN (MAX (EI_NIDENT, SARMAG), maxsize), - offset); - if (nread == -1) - /* We cannot even read the head of the file. Maybe FILDES is associated - with an unseekable device. This is nothing we can handle. */ - return NULL; - - /* See what kind of object we have here. */ - kind = determine_kind (header, nread); - - switch (kind) - { - case ELF_K_AR: - return file_read_ar (fildes, NULL, offset, maxsize, cmd, parent); - - case ELF_K_ELF: - /* Make sure at least the ELF header is contained in the file. */ - if (maxsize >= (header[EI_CLASS] == ELFCLASS32 - ? sizeof (Elf32_Ehdr) : sizeof (Elf64_Ehdr))) - return file_read_elf (fildes, NULL, offset, maxsize, cmd, parent); - /* FALLTHROUGH */ - - default: - break; - } - - /* This case is easy. Since we cannot do anything with this file - create a dummy descriptor. */ - return allocate_elf (fildes, NULL, offset, maxsize, cmd, parent, - ELF_K_NONE, 0); -} - - -/* Open a file for reading. If possible we will try to mmap() the file. */ -static struct Elf * -read_file (int fildes, off_t offset, size_t maxsize, - Elf_Cmd cmd, Elf *parent) -{ - void *map_address = NULL; - int use_mmap = (cmd == ELF_C_READ_MMAP || cmd == ELF_C_RDWR_MMAP - || cmd == ELF_C_WRITE_MMAP - || cmd == ELF_C_READ_MMAP_PRIVATE); - - if (use_mmap) - { - if (parent == NULL) - { - if (maxsize == ~((size_t) 0)) - { - /* We don't know in the moment how large the file is. - Determine it now. */ - struct stat st; - - if (fstat (fildes, &st) == 0 - && (sizeof (size_t) >= sizeof (st.st_size) - || st.st_size <= ~((size_t) 0))) - maxsize = (size_t) st.st_size; - } - - /* We try to map the file ourself. */ - map_address = mmap (NULL, maxsize, (cmd == ELF_C_READ_MMAP - ? PROT_READ - : PROT_READ|PROT_WRITE), - cmd == ELF_C_READ_MMAP_PRIVATE - ? MAP_PRIVATE : MAP_SHARED, - fildes, offset); - - if (map_address == MAP_FAILED) - map_address = NULL; - } - else - { - /* The parent is already loaded. Use it. */ - assert (maxsize != ~((size_t) 0)); - - map_address = parent->map_address; - } - } - - /* If we have the file in memory optimize the access. */ - if (map_address != NULL) - { - struct Elf *result; - - result = __libelf_read_mmaped_file (fildes, map_address, offset, maxsize, - cmd, parent); - - /* If something went wrong during the initialization unmap the - memory if we mmaped here. */ - if (result == NULL - && (parent == NULL - || parent->map_address != map_address)) - munmap (map_address, maxsize); - else if (parent == NULL) - /* Remember that we mmap()ed the memory. */ - result->flags |= ELF_F_MMAPPED; - - return result; - } - - /* Otherwise we have to do it the hard way. We read as much as necessary - from the file whenever we need information which is not available. */ - return read_unmmaped_file (fildes, offset, maxsize, cmd, parent); -} - - -/* Find the entry with the long names for the content of this archive. */ -static const char * -read_long_names (Elf *elf) -{ - off_t offset = SARMAG; /* This is the first entry. */ - struct ar_hdr hdrm; - struct ar_hdr *hdr; - char *newp; - size_t len; - - while (1) - { - if (elf->map_address != NULL) - { - if (offset + sizeof (struct ar_hdr) > elf->maximum_size) - return NULL; - - /* The data is mapped. */ - hdr = (struct ar_hdr *) (elf->map_address + offset); - } - else - { - /* Read the header from the file. */ - if (pread (elf->fildes, &hdrm, sizeof (hdrm), - elf->start_offset + offset) != sizeof (hdrm)) - return NULL; - - hdr = &hdrm; - } - - len = atol (hdr->ar_size); - - if (memcmp (hdr->ar_name, "// ", 16) == 0) - break; - - offset += sizeof (struct ar_hdr) + ((len + 1) & ~1l); - } - - /* Due to the stupid format of the long name table entry (which are not - NUL terminted) we have to provide an appropriate representation anyhow. - Therefore we always make a copy which has the appropriate form. */ - newp = (char *) malloc (len); - if (newp != NULL) - { - char *runp; - - if (elf->map_address != NULL) - /* Simply copy it over. */ - elf->state.ar.long_names = (char *) memcpy (newp, - elf->map_address + offset - + sizeof (struct ar_hdr), - len); - else - { - if ((size_t) pread (elf->fildes, newp, len, - elf->start_offset + offset - + sizeof (struct ar_hdr)) - != len) - { - /* We were not able to read all data. */ - free (newp); - elf->state.ar.long_names = NULL; - return NULL; - } - elf->state.ar.long_names = newp; - } - - elf->state.ar.long_names_len = len; - - /* Now NUL-terminate the strings. */ - runp = newp; - while (1) - { - runp = (char *) memchr (runp, '/', newp + len - runp); - if (runp == NULL) - /* This was the last entry. */ - break; - - /* NUL-terminate the string. */ - *runp = '\0'; - - /* Skip the NUL bzte and the \012. */ - runp += 2; - - /* A sanity check. Somebody might have generated invalid - archive. */ - if (runp >= newp + len) - break; - } - } - - return newp; -} - - -/* Read the next archive header. */ -int -internal_function_def -__libelf_next_arhdr (elf) - Elf *elf; -{ - struct ar_hdr *ar_hdr; - Elf_Arhdr *elf_ar_hdr; - - if (elf->map_address != NULL) - { - /* See whether this entry is in the file. */ - if (elf->state.ar.offset + sizeof (struct ar_hdr) - > elf->start_offset + elf->maximum_size) - { - /* This record is not anymore in the file. */ - __libelf_seterrno (ELF_E_RANGE); - return -1; - } - ar_hdr = (struct ar_hdr *) (elf->map_address + elf->state.ar.offset); - } - else - { - ar_hdr = &elf->state.ar.ar_hdr; - - if (pread (elf->fildes, ar_hdr, sizeof (struct ar_hdr), - elf->state.ar.offset) - != sizeof (struct ar_hdr)) - { - /* Something went wrong while reading the file. */ - __libelf_seterrno (ELF_E_RANGE); - return -1; - } - } - - /* One little consistency check. */ - if (memcmp (ar_hdr->ar_fmag, ARFMAG, 2) != 0) - { - /* This is no valid archive. */ - __libelf_seterrno (ELF_E_ARCHIVE_FMAG); - return -1; - } - - /* Copy the raw name over to a NUL terminated buffer. */ - *((char *) __mempcpy (elf->state.ar.raw_name, ar_hdr->ar_name, 16)) = '\0'; - - elf_ar_hdr = &elf->state.ar.elf_ar_hdr; - - /* Now convert the `struct ar_hdr' into `Elf_Arhdr'. - Determine whether this is a special entry. */ - if (ar_hdr->ar_name[0] == '/') - { - if (ar_hdr->ar_name[1] == ' ' - && memcmp (ar_hdr->ar_name, "/ ", 16) == 0) - /* This is the index. */ - elf_ar_hdr->ar_name = memcpy (elf->state.ar.ar_name, "/", 2); - else if (ar_hdr->ar_name[1] == '/' - && memcmp (ar_hdr->ar_name, "// ", 16) == 0) - /* This is the array with the long names. */ - elf_ar_hdr->ar_name = memcpy (elf->state.ar.ar_name, "//", 3); - else if (isdigit (ar_hdr->ar_name[1])) - { - size_t offset; - - /* This is a long name. First we have to read the long name - table, if this hasn't happened already. */ - if (elf->state.ar.long_names == NULL - && read_long_names (elf) == NULL) - { - /* No long name table although it is reference. The archive is - broken. */ - __libelf_seterrno (ELF_E_INVALID_ARCHIVE); - return -1; - } - - offset = atol (ar_hdr->ar_name + 1); - if (offset >= elf->state.ar.long_names_len) - { - /* The index in the long name table is larger than the table. */ - __libelf_seterrno (ELF_E_INVALID_ARCHIVE); - return -1; - } - elf_ar_hdr->ar_name = elf->state.ar.long_names + offset; - } - else - { - /* This is none of the known special entries. */ - __libelf_seterrno (ELF_E_INVALID_ARCHIVE); - return -1; - } - } - else - { - char *endp; - - /* It is a normal entry. Copy over the name. */ - endp = (char *) memccpy (elf->state.ar.ar_name, ar_hdr->ar_name, - '/', 16); - if (endp != NULL) - endp[-1] = '\0'; - else - elf->state.ar.raw_name[16] = '\0'; - - elf_ar_hdr->ar_name = elf->state.ar.ar_name; - } - - /* Since there are no specialized functions to convert ASCII to - time_t, uid_t, gid_t, mode_t, and off_t we use either atol or - atoll depending on the size of the types. We are also prepared - for the case where the whole field in the `struct ar_hdr' is - filled in which case we cannot simply use atol/l but instead have - to create a temporary copy. */ - if (ar_hdr->ar_date[sizeof (ar_hdr->ar_date) - 1] == ' ') - { - if (ar_hdr->ar_date[0] == ' ') - elf_ar_hdr->ar_date = 0; - else - elf_ar_hdr->ar_date = (sizeof (time_t) <= sizeof (long int) - ? (time_t) atol (ar_hdr->ar_date) - : (time_t) atoll (ar_hdr->ar_date)); - } - else - { - char buf[sizeof (ar_hdr->ar_date) + 1]; - *((char *) __mempcpy (buf, ar_hdr->ar_date, sizeof (ar_hdr->ar_date))) - = '\0'; - elf_ar_hdr->ar_date = (sizeof (time_t) <= sizeof (long int) - ? (time_t) atol (ar_hdr->ar_date) - : (time_t) atoll (ar_hdr->ar_date)); - } - - if (ar_hdr->ar_uid[sizeof (ar_hdr->ar_uid) - 1] == ' ') - { - if (ar_hdr->ar_uid[0] == ' ') - elf_ar_hdr->ar_uid = 0; - else - elf_ar_hdr->ar_uid = (sizeof (uid_t) <= sizeof (long int) - ? (uid_t) atol (ar_hdr->ar_uid) - : (uid_t) atoll (ar_hdr->ar_uid)); - } - else - { - char buf[sizeof (ar_hdr->ar_uid) + 1]; - *((char *) __mempcpy (buf, ar_hdr->ar_uid, sizeof (ar_hdr->ar_uid))) - = '\0'; - elf_ar_hdr->ar_uid = (sizeof (uid_t) <= sizeof (long int) - ? (uid_t) atol (ar_hdr->ar_uid) - : (uid_t) atoll (ar_hdr->ar_uid)); - } - - if (ar_hdr->ar_gid[sizeof (ar_hdr->ar_gid) - 1] == ' ') - { - if (ar_hdr->ar_gid[0] == ' ') - elf_ar_hdr->ar_gid = 0; - else - elf_ar_hdr->ar_gid = (sizeof (gid_t) <= sizeof (long int) - ? (gid_t) atol (ar_hdr->ar_gid) - : (gid_t) atoll (ar_hdr->ar_gid)); - } - else - { - char buf[sizeof (ar_hdr->ar_gid) + 1]; - *((char *) __mempcpy (buf, ar_hdr->ar_gid, sizeof (ar_hdr->ar_gid))) - = '\0'; - elf_ar_hdr->ar_gid = (sizeof (gid_t) <= sizeof (long int) - ? (gid_t) atol (ar_hdr->ar_gid) - : (gid_t) atoll (ar_hdr->ar_gid)); - } - - if (ar_hdr->ar_mode[sizeof (ar_hdr->ar_mode) - 1] == ' ') - { - if (ar_hdr->ar_mode[0] == ' ') - elf_ar_hdr->ar_mode = 0; - else - elf_ar_hdr->ar_mode = (sizeof (mode_t) <= sizeof (long int) - ? (mode_t) strtol (ar_hdr->ar_mode, NULL, 8) - : (mode_t) strtoll (ar_hdr->ar_mode, NULL, 8)); - } - else - { - char buf[sizeof (ar_hdr->ar_mode) + 1]; - *((char *) __mempcpy (buf, ar_hdr->ar_mode, sizeof (ar_hdr->ar_mode))) - = '\0'; - elf_ar_hdr->ar_mode = (sizeof (mode_t) <= sizeof (long int) - ? (mode_t) strtol (ar_hdr->ar_mode, NULL, 8) - : (mode_t) strtoll (ar_hdr->ar_mode, NULL, 8)); - } - - if (ar_hdr->ar_size[sizeof (ar_hdr->ar_size) - 1] == ' ') - { - if (ar_hdr->ar_size[0] == ' ') - /* Something is really wrong. We cannot live without a size for - the member since it will not be possible to find the next - archive member. */ - { - __libelf_seterrno (ELF_E_INVALID_ARCHIVE); - return -1; - } - else - elf_ar_hdr->ar_size = (sizeof (time_t) == sizeof (long int) - ? (off_t) atol (ar_hdr->ar_size) - : (off_t) atoll (ar_hdr->ar_size)); - } - else - { - char buf[sizeof (ar_hdr->ar_size) + 1]; - *((char *) __mempcpy (buf, ar_hdr->ar_size, sizeof (ar_hdr->ar_size))) - = '\0'; - elf_ar_hdr->ar_size = (sizeof (time_t) == sizeof (long int) - ? (off_t) atol (ar_hdr->ar_size) - : (off_t) atoll (ar_hdr->ar_size)); - } - - return 0; -} - - -/* We were asked to return a clone of an existing descriptor. This - function must be called with the lock on the parent descriptor - being held. */ -static Elf * -dup_elf (int fildes, Elf_Cmd cmd, Elf *ref) -{ - struct Elf *result; - - if (fildes == -1) - /* Allow the user to pass -1 as the file descriptor for the new file. */ - fildes = ref->fildes; - /* The file descriptor better should be the same. If it was disconnected - already (using `elf_cntl') we do not test it. */ - else if (ref->fildes != -1 && fildes != ref->fildes) - { - __libelf_seterrno (ELF_E_FD_MISMATCH); - return NULL; - } - - /* The mode must allow reading. I.e., a descriptor creating with a - command different then ELF_C_READ, ELF_C_WRITE and ELF_C_RDWR is - not allowed. */ - if (ref->cmd != ELF_C_READ && ref->cmd != ELF_C_READ_MMAP - && ref->cmd != ELF_C_WRITE && ref->cmd != ELF_C_WRITE_MMAP - && ref->cmd != ELF_C_RDWR && ref->cmd != ELF_C_RDWR_MMAP - && ref->cmd != ELF_C_READ_MMAP_PRIVATE) - { - __libelf_seterrno (ELF_E_INVALID_OP); - return NULL; - } - - /* Now it is time to distinguish between reading normal files and - archives. Normal files can easily be handled be incrementing the - reference counter and return the same descriptor. */ - if (ref->kind != ELF_K_AR) - { - ++ref->ref_count; - return ref; - } - - /* This is an archive. We must create a descriptor for the archive - member the internal pointer of the archive file desriptor is - pointing to. First read the header of the next member if this - has not happened already. */ - if (ref->state.ar.elf_ar_hdr.ar_name == NULL - && __libelf_next_arhdr (ref) != 0) - /* Something went wrong. Maybe there is no member left. */ - return NULL; - - /* We have all the information we need about the next archive member. - Now create a descriptor for it. */ - result = read_file (fildes, ref->state.ar.offset + sizeof (struct ar_hdr), - ref->state.ar.elf_ar_hdr.ar_size, cmd, ref); - - /* Enlist this new descriptor in the list of children. */ - if (result != NULL) - { - result->next = ref->state.ar.children; - ref->state.ar.children = result; - } - - return result; -} - - -/* Return desriptor for empty file ready for writing. */ -static struct Elf * -write_file (int fd, Elf_Cmd cmd) -{ - /* We simply create an empty `Elf' structure. */ -#define NSCNSALLOC 10 - Elf *result = allocate_elf (fd, NULL, 0, 0, cmd, NULL, ELF_K_ELF, - NSCNSALLOC * sizeof (Elf_Scn)); - - if (result != NULL) - { - /* We have to write to the file in any case. */ - result->flags = ELF_F_DIRTY; - - /* Some more or less arbitrary value. */ - result->state.elf.scnincr = NSCNSALLOC; - - /* We have allocated room for some sections. */ - assert (offsetof (struct Elf, state.elf32.scns) - == offsetof (struct Elf, state.elf64.scns)); - result->state.elf.scns_last = &result->state.elf32.scns; - result->state.elf32.scns.max = NSCNSALLOC; - } - - return result; -} - - -/* Return a descriptor for the file belonging to FILDES. */ -Elf * -elf_begin (fildes, cmd, ref) - int fildes; - Elf_Cmd cmd; - Elf *ref; -{ - Elf *retval; - - if (! __libelf_version_initialized) - { - /* Version wasn't set so far. */ - __libelf_seterrno (ELF_E_NO_VERSION); - return NULL; - } - - if (ref != NULL) - /* Make sure the descriptor is not suddenly going away. */ - rwlock_rdlock (ref->lock); - else if (fcntl (fildes, F_GETFL) == -1 && errno == EBADF) - { - /* We cannot do anything productive without a file descriptor. */ - __libelf_seterrno (ELF_E_INVALID_FILE); - return NULL; - } - - switch (cmd) - { - case ELF_C_NULL: - /* We simply return a NULL pointer. */ - retval = NULL; - break; - - case ELF_C_READ_MMAP_PRIVATE: - /* If we have a reference it must also be opened this way. */ - if (ref != NULL && ref->cmd != ELF_C_READ_MMAP_PRIVATE) - { - __libelf_seterrno (ELF_E_INVALID_CMD); - retval = NULL; - break; - } - /* FALLTHROUGH */ - - case ELF_C_READ: - case ELF_C_READ_MMAP: - if (ref != NULL) - /* Duplicate the descriptor. */ - retval = dup_elf (fildes, cmd, ref); - else - /* Create descriptor for existing file. */ - retval = read_file (fildes, 0, ~((size_t) 0), cmd, NULL); - break; - - case ELF_C_RDWR: - case ELF_C_RDWR_MMAP: - /* If we have a REF object it must also be opened using this - command. */ - if (ref != NULL) - { - if (ref->cmd != ELF_C_RDWR && ref->cmd != ELF_C_RDWR_MMAP - && ref->cmd != ELF_C_WRITE && ref->cmd != ELF_C_WRITE_MMAP) - { - /* This is not ok. REF must also be opened for writing. */ - __libelf_seterrno (ELF_E_INVALID_CMD); - retval = NULL; - } - else - /* Duplicate this descriptor. */ - retval = dup_elf (fildes, cmd, ref); - } - else - /* Create descriptor for existing file. */ - retval = read_file (fildes, 0, ~((size_t) 0), cmd, NULL); - break; - - case ELF_C_WRITE: - case ELF_C_WRITE_MMAP: - /* We ignore REF and prepare a descriptor to write a new file. */ - retval = write_file (fildes, cmd); - break; - - default: - __libelf_seterrno (ELF_E_INVALID_CMD); - retval = NULL; - break; - } - - /* Release the lock. */ - if (ref != NULL) - rwlock_unlock (ref->lock); - - return retval; -} -INTDEF(elf_begin) diff --git a/libelf/elf_clone.c b/libelf/elf_clone.c deleted file mode 100644 index 516d2ae4..00000000 --- a/libelf/elf_clone.c +++ /dev/null @@ -1,69 +0,0 @@ -/* Create clone of a given descriptor. - Copyright (C) 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <stddef.h> -#include "libelfP.h" -#include "common.h" - - -Elf * -elf_clone (Elf *elf, Elf_Cmd cmd) -{ - Elf *retval = NULL; - - if (elf == NULL) - /* Some earlier mistake. */ - return NULL; - - /* Make sure the descriptor is not suddenly going away. */ - rwlock_rdlock (elf->lock); - - if (cmd != ELF_C_EMPTY) - // XXX TODO handle ELF_C_READ/WRITE etc - goto out; - - retval = allocate_elf (elf->fildes, elf->map_address, elf->start_offset, - elf->maximum_size, elf->cmd, elf->parent, elf->kind, - elf->state.elf32.scns.max * sizeof (Elf_Scn)); - if (retval != NULL) - { - /* We have to write to the file in any case. */ - retval->flags = ELF_F_DIRTY; - - /* Some more or less arbitrary value. */ - retval->state.elf.scnincr = 10; - - /* We have allocated room for some sections. */ - assert (offsetof (struct Elf, state.elf32.scns) - == offsetof (struct Elf, state.elf64.scns)); - retval->state.elf.scns_last = &retval->state.elf32.scns; - retval->state.elf32.scns.max = elf->state.elf32.scns.max; - - retval->class = elf->class; - } - - /* Release the lock. */ - out: - rwlock_unlock (elf->lock); - - return retval; -} diff --git a/libelf/elf_cntl.c b/libelf/elf_cntl.c deleted file mode 100644 index eea0f362..00000000 --- a/libelf/elf_cntl.c +++ /dev/null @@ -1,71 +0,0 @@ -/* Control an ELF file desrciptor. - Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <unistd.h> - -#include "libelfP.h" - - -int -elf_cntl (elf, cmd) - Elf *elf; - Elf_Cmd cmd; -{ - int result = 0; - - if (elf == NULL) - return -1; - - if (elf->fildes == -1) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return -1; - } - - rwlock_wrlock (elf->lock); - - switch (cmd) - { - case ELF_C_FDREAD: - /* If not all of the file is in the memory read it now. */ - if (elf->map_address == NULL && __libelf_readall (elf) == NULL) - { - /* We were not able to read everything. */ - result = -1; - break; - } - /* FALLTHROUGH */ - - case ELF_C_FDDONE: - /* Mark the file descriptor as not usable. */ - elf->fildes = -1; - break; - - default: - __libelf_seterrno (ELF_E_INVALID_CMD); - result = -1; - break; - } - - rwlock_unlock (elf->lock); - - return result; -} diff --git a/libelf/elf_end.c b/libelf/elf_end.c deleted file mode 100644 index 086ff633..00000000 --- a/libelf/elf_end.c +++ /dev/null @@ -1,201 +0,0 @@ -/* Free resources associated with Elf descriptor. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <stddef.h> -#include <stdlib.h> -#include <sys/mman.h> - -#include "libelfP.h" - - -int -elf_end (elf) - Elf *elf; -{ - Elf *parent; - - if (elf == NULL) - /* This is allowed and is a no-op. */ - return 0; - - /* Make sure we are alone. */ - rwlock_wrlock (elf->lock); - - if (elf->ref_count != 0 && --elf->ref_count != 0) - { - /* Not yet the last activation. */ - int result = elf->ref_count; - rwlock_unlock (elf->lock); - return result; - } - - if (elf->kind == ELF_K_AR) - { - /* We cannot remove the descriptor now since we still have some - descriptors which depend on it. But we can free the archive - symbol table since this is only available via the archive ELF - descriptor. The long name table cannot be freed yet since - the archive headers for the ELF files in the archive point - into this array. */ - free (elf->state.ar.ar_sym); - elf->state.ar.ar_sym = NULL; - - if (elf->state.ar.children != NULL) - return 0; - } - - /* Remove this structure from the children list. */ - parent = elf->parent; - if (parent != NULL) - { - /* This is tricky. Lock must be acquire from the father to - the child but here we already have the child lock. We - solve this problem by giving free the child lock. The - state of REF_COUNT==0 is handled all over the library, so - this should be ok. */ - rwlock_unlock (elf->lock); - rwlock_rdlock (parent->lock); - rwlock_wrlock (elf->lock); - - if (parent->state.ar.children == elf) - parent->state.ar.children = elf->next; - else - { - struct Elf *child = parent->state.ar.children; - - while (child->next != elf) - child = child->next; - - child->next = elf->next; - } - - rwlock_unlock (parent->lock); - } - - /* This was the last activation. Free all resources. */ - switch (elf->kind) - { - case ELF_K_AR: - if (elf->state.ar.long_names != NULL) - free (elf->state.ar.long_names); - break; - - case ELF_K_ELF: - { - Elf_ScnList *list = (elf->class == ELFCLASS32 - || (offsetof (struct Elf, state.elf32.scns) - == offsetof (struct Elf, state.elf64.scns)) - ? &elf->state.elf32.scns - : &elf->state.elf64.scns); - - do - { - /* Free all separately allocated section headers. */ - size_t cnt = list->max; - - while (cnt-- > 0) - { - /* These pointers can be NULL; it's safe to use - 'free' since it will check for this. */ - Elf_Scn *scn = &list->data[cnt]; - Elf_Data_List *runp; - - if ((scn->shdr_flags & ELF_F_MALLOCED) != 0) - /* It doesn't matter which pointer. */ - free (scn->shdr.e32); - - /* If the file has the same byte order and the - architecture doesn't require overly stringent - alignment the raw data buffer is the same as the - one used for presenting to the caller. */ - if (scn->data_base != scn->rawdata_base) - free (scn->data_base); - - /* The section data is allocated if we couldn't mmap - the file. */ - if (elf->map_address == NULL) - free (scn->rawdata_base); - - /* Free the list of data buffers for the section. - We don't free the buffers themselves since this - is the users job. */ - runp = scn->data_list.next; - while (runp != NULL) - { - Elf_Data_List *oldp = runp; - runp = runp->next; - if ((oldp->flags & ELF_F_MALLOCED) != 0) - free (oldp); - } - } - - /* Free the memory for the array. */ - Elf_ScnList *oldp = list; - list = list->next; - assert (list == NULL || oldp->cnt == oldp->max); - if (oldp != (elf->class == ELFCLASS32 - || (offsetof (struct Elf, state.elf32.scns) - == offsetof (struct Elf, state.elf64.scns)) - ? &elf->state.elf32.scns - : &elf->state.elf64.scns)) - free (oldp); - } - while (list != NULL); - } - - /* Free the section header. */ - if (elf->state.elf.shdr_malloced != 0) - free (elf->class == ELFCLASS32 - || (offsetof (struct Elf, state.elf32.shdr) - == offsetof (struct Elf, state.elf64.shdr)) - ? (void *) elf->state.elf32.shdr - : (void *) elf->state.elf64.shdr); - - /* Free the program header. */ - if ((elf->state.elf.phdr_flags & ELF_F_MALLOCED) != 0) - free (elf->class == ELFCLASS32 - || (offsetof (struct Elf, state.elf32.phdr) - == offsetof (struct Elf, state.elf64.phdr)) - ? (void *) elf->state.elf32.phdr - : (void *) elf->state.elf64.phdr); - break; - - default: - break; - } - - if (elf->map_address != NULL && parent == NULL) - { - /* The file was read or mapped for this descriptor. */ - if ((elf->flags & ELF_F_MALLOCED) != 0) - free (elf->map_address); - else if ((elf->flags & ELF_F_MMAPPED) != 0) - munmap (elf->map_address, elf->maximum_size); - } - - rwlock_fini (elf->lock); - - /* Finally the descriptor itself. */ - free (elf); - - return parent != NULL && parent->ref_count == 0 ? elf_end (parent) : 0; -} diff --git a/libelf/elf_error.c b/libelf/elf_error.c deleted file mode 100644 index acbe406c..00000000 --- a/libelf/elf_error.c +++ /dev/null @@ -1,366 +0,0 @@ -/* Error handling in libelf. - Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -//#include <libintl.h> -#include <stdbool.h> -#include <stdint.h> -#include <stdlib.h> - -#include "libelfP.h" - - -#ifdef USE_TLS -/* The error number. */ -static __thread int global_error; -#else -/* This is the key for the thread specific memory. */ -static tls_key_t key; - -/* The error number. Used in non-threaded programs. */ -static int global_error; -static bool threaded; -/* We need to initialize the thread-specific data. */ -once_define (static, once); - -/* The initialization and destruction functions. */ -static void init (void); -static void free_key_mem (void *mem); -#endif /* TLS */ - - -int -elf_errno (void) -{ - int result; - -#ifndef USE_TLS - /* If we have not yet initialized the buffer do it now. */ - once_execute (once, init); - - if (threaded) - { - /* We do not allocate memory for the data. It is only a word. - We can store it in place of the pointer. */ - result = (intptr_t) getspecific (key); - - setspecific (key, (void *) (intptr_t) ELF_E_NOERROR); - return result; - } -#endif /* TLS */ - - result = global_error; - global_error = ELF_E_NOERROR; - return result; -} - - -/* Return the appropriate message for the error. */ -static const char msgstr[] = -{ -#define ELF_E_NOERROR_IDX 0 - N_("no error") - "\0" -#define ELF_E_UNKNOWN_ERROR_IDX (ELF_E_NOERROR_IDX + sizeof "no error") - N_("unknown error") - "\0" -#define ELF_E_UNKNOWN_VERSION_IDX \ - (ELF_E_UNKNOWN_ERROR_IDX + sizeof "unknown error") - N_("unknown version") - "\0" -#define ELF_E_UNKNOWN_TYPE_IDX \ - (ELF_E_UNKNOWN_VERSION_IDX + sizeof "unknown version") - N_("unknown type") - "\0" -#define ELF_E_INVALID_HANDLE_IDX \ - (ELF_E_UNKNOWN_TYPE_IDX + sizeof "unknown type") - N_("invalid `Elf' handle") - "\0" -#define ELF_E_SOURCE_SIZE_IDX \ - (ELF_E_INVALID_HANDLE_IDX + sizeof "invalid `Elf' handle") - N_("invalid size of source operand") - "\0" -#define ELF_E_DEST_SIZE_IDX \ - (ELF_E_SOURCE_SIZE_IDX + sizeof "invalid size of source operand") - N_("invalid size of destination operand") - "\0" -#define ELF_E_INVALID_ENCODING_IDX \ - (ELF_E_DEST_SIZE_IDX + sizeof "invalid size of destination operand") - N_("invalid encoding") - "\0" -#define ELF_E_NOMEM_IDX \ - (ELF_E_INVALID_ENCODING_IDX + sizeof "invalid encoding") - N_("out of memory") - "\0" -#define ELF_E_INVALID_FILE_IDX \ - (ELF_E_NOMEM_IDX + sizeof "out of memory") - N_("invalid file descriptor") - "\0" -#define ELF_E_INVALID_OP_IDX \ - (ELF_E_INVALID_FILE_IDX + sizeof "invalid file descriptor") - N_("invalid operation") - "\0" -#define ELF_E_NO_VERSION_IDX \ - (ELF_E_INVALID_OP_IDX + sizeof "invalid operation") - N_("ELF version not set") - "\0" -#define ELF_E_INVALID_CMD_IDX \ - (ELF_E_NO_VERSION_IDX + sizeof "ELF version not set") - N_("invalid command") - "\0" -#define ELF_E_RANGE_IDX \ - (ELF_E_INVALID_CMD_IDX + sizeof "invalid command") - N_("offset out of range") - "\0" -#define ELF_E_ARCHIVE_FMAG_IDX \ - (ELF_E_RANGE_IDX + sizeof "offset out of range") - N_("invalid fmag field in archive header") - "\0" -#define ELF_E_INVALID_ARCHIVE_IDX \ - (ELF_E_ARCHIVE_FMAG_IDX + sizeof "invalid fmag field in archive header") - N_("invalid archive file") - "\0" -#define ELF_E_NO_ARCHIVE_IDX \ - (ELF_E_INVALID_ARCHIVE_IDX + sizeof "invalid archive file") - N_("descriptor is not for an archive") - "\0" -#define ELF_E_NO_INDEX_IDX \ - (ELF_E_NO_ARCHIVE_IDX + sizeof "descriptor is not for an archive") - N_("no index available") - "\0" -#define ELF_E_READ_ERROR_IDX \ - (ELF_E_NO_INDEX_IDX + sizeof "no index available") - N_("cannot read data from file") - "\0" -#define ELF_E_WRITE_ERROR_IDX \ - (ELF_E_READ_ERROR_IDX + sizeof "cannot read data from file") - N_("cannot write data to file") - "\0" -#define ELF_E_INVALID_CLASS_IDX \ - (ELF_E_WRITE_ERROR_IDX + sizeof "cannot write data to file") - N_("invalid binary class") - "\0" -#define ELF_E_INVALID_INDEX_IDX \ - (ELF_E_INVALID_CLASS_IDX + sizeof "invalid binary class") - N_("invalid section index") - "\0" -#define ELF_E_INVALID_OPERAND_IDX \ - (ELF_E_INVALID_INDEX_IDX + sizeof "invalid section index") - N_("invalid operand") - "\0" -#define ELF_E_INVALID_SECTION_IDX \ - (ELF_E_INVALID_OPERAND_IDX + sizeof "invalid operand") - N_("invalid section") - "\0" -#define ELF_E_INVALID_COMMAND_IDX \ - (ELF_E_INVALID_SECTION_IDX + sizeof "invalid section") - N_("invalid command") - "\0" -#define ELF_E_WRONG_ORDER_EHDR_IDX \ - (ELF_E_INVALID_COMMAND_IDX + sizeof "invalid command") - N_("executable header not created first") - "\0" -#define ELF_E_FD_DISABLED_IDX \ - (ELF_E_WRONG_ORDER_EHDR_IDX + sizeof "executable header not created first") - N_("file descriptor disabled") - "\0" -#define ELF_E_FD_MISMATCH_IDX \ - (ELF_E_FD_DISABLED_IDX + sizeof "file descriptor disabled") - N_("archive/member fildes mismatch") - "\0" -#define ELF_E_OFFSET_RANGE_IDX \ - (ELF_E_FD_MISMATCH_IDX + sizeof "archive/member fildes mismatch") - N_("offset out of range") - "\0" -#define ELF_E_NOT_NUL_SECTION_IDX \ - (ELF_E_OFFSET_RANGE_IDX + sizeof "offset out of range") - N_("cannot manipulate null section") - "\0" -#define ELF_E_DATA_MISMATCH_IDX \ - (ELF_E_NOT_NUL_SECTION_IDX + sizeof "cannot manipulate null section") - N_("data/scn mismatch") - "\0" -#define ELF_E_INVALID_SECTION_HEADER_IDX \ - (ELF_E_DATA_MISMATCH_IDX + sizeof "data/scn mismatch") - N_("invalid section header") - "\0" -#define ELF_E_INVALID_DATA_IDX \ - (ELF_E_INVALID_SECTION_HEADER_IDX + sizeof "invalid section header") - N_("invalid data") - "\0" -#define ELF_E_DATA_ENCODING_IDX \ - (ELF_E_INVALID_DATA_IDX + sizeof "invalid data") - N_("unknown data encoding") - "\0" -#define ELF_E_SECTION_TOO_SMALL_IDX \ - (ELF_E_DATA_ENCODING_IDX + sizeof "unknown data encoding") - N_("section `sh_size' too small for data") - "\0" -#define ELF_E_INVALID_ALIGN_IDX \ - (ELF_E_SECTION_TOO_SMALL_IDX + sizeof "section `sh_size' too small for data") - N_("invalid section alignment") - "\0" -#define ELF_E_INVALID_SHENTSIZE_IDX \ - (ELF_E_INVALID_ALIGN_IDX + sizeof "invalid section alignment") - N_("invalid section entry size") - "\0" -#define ELF_E_UPDATE_RO_IDX \ - (ELF_E_INVALID_SHENTSIZE_IDX + sizeof "invalid section entry size") - N_("update() for write on read-only file") - "\0" -#define ELF_E_NOFILE_IDX \ - (ELF_E_UPDATE_RO_IDX + sizeof "update() for write on read-only file") - N_("no such file") - "\0" -#define ELF_E_GROUP_NOT_REL_IDX \ - (ELF_E_NOFILE_IDX + sizeof "no such file") - N_("only relocatable files can contain section groups") - "\0" -#define ELF_E_INVALID_PHDR_IDX \ - (ELF_E_GROUP_NOT_REL_IDX \ - + sizeof "only relocatable files can contain section groups") - N_("program header only allowed in executables and shared objects") - "\0" -#define ELF_E_NO_PHDR_IDX \ - (ELF_E_INVALID_PHDR_IDX \ - + sizeof "program header only allowed in executables and shared objects") - N_("file has no program header") -}; - - -static const uint_fast16_t msgidx[ELF_E_NUM] = -{ - [ELF_E_NOERROR] = ELF_E_NOERROR_IDX, - [ELF_E_UNKNOWN_ERROR] = ELF_E_UNKNOWN_ERROR_IDX, - [ELF_E_UNKNOWN_VERSION] = ELF_E_UNKNOWN_VERSION_IDX, - [ELF_E_UNKNOWN_TYPE] = ELF_E_UNKNOWN_TYPE_IDX, - [ELF_E_INVALID_HANDLE] = ELF_E_INVALID_HANDLE_IDX, - [ELF_E_SOURCE_SIZE] = ELF_E_SOURCE_SIZE_IDX, - [ELF_E_DEST_SIZE] = ELF_E_DEST_SIZE_IDX, - [ELF_E_INVALID_ENCODING] = ELF_E_INVALID_ENCODING_IDX, - [ELF_E_NOMEM] = ELF_E_NOMEM_IDX, - [ELF_E_INVALID_FILE] = ELF_E_INVALID_FILE_IDX, - [ELF_E_INVALID_OP] = ELF_E_INVALID_OP_IDX, - [ELF_E_NO_VERSION] = ELF_E_NO_VERSION_IDX, - [ELF_E_INVALID_CMD] = ELF_E_INVALID_CMD_IDX, - [ELF_E_RANGE] = ELF_E_RANGE_IDX, - [ELF_E_ARCHIVE_FMAG] = ELF_E_ARCHIVE_FMAG_IDX, - [ELF_E_INVALID_ARCHIVE] = ELF_E_INVALID_ARCHIVE_IDX, - [ELF_E_NO_ARCHIVE] = ELF_E_NO_ARCHIVE_IDX, - [ELF_E_NO_INDEX] = ELF_E_NO_INDEX_IDX, - [ELF_E_READ_ERROR] = ELF_E_READ_ERROR_IDX, - [ELF_E_WRITE_ERROR] = ELF_E_WRITE_ERROR_IDX, - [ELF_E_INVALID_CLASS] = ELF_E_INVALID_CLASS_IDX, - [ELF_E_INVALID_INDEX] = ELF_E_INVALID_INDEX_IDX, - [ELF_E_INVALID_OPERAND] = ELF_E_INVALID_OPERAND_IDX, - [ELF_E_INVALID_SECTION] = ELF_E_INVALID_SECTION_IDX, - [ELF_E_INVALID_COMMAND] = ELF_E_INVALID_COMMAND_IDX, - [ELF_E_WRONG_ORDER_EHDR] = ELF_E_WRONG_ORDER_EHDR_IDX, - [ELF_E_FD_DISABLED] = ELF_E_FD_DISABLED_IDX, - [ELF_E_FD_MISMATCH] = ELF_E_FD_MISMATCH_IDX, - [ELF_E_OFFSET_RANGE] = ELF_E_OFFSET_RANGE_IDX, - [ELF_E_NOT_NUL_SECTION] = ELF_E_NOT_NUL_SECTION_IDX, - [ELF_E_DATA_MISMATCH] = ELF_E_DATA_MISMATCH_IDX, - [ELF_E_INVALID_SECTION_HEADER] = ELF_E_INVALID_SECTION_HEADER_IDX, - [ELF_E_INVALID_DATA] = ELF_E_INVALID_DATA_IDX, - [ELF_E_DATA_ENCODING] = ELF_E_DATA_ENCODING_IDX, - [ELF_E_SECTION_TOO_SMALL] = ELF_E_SECTION_TOO_SMALL_IDX, - [ELF_E_INVALID_ALIGN] = ELF_E_INVALID_ALIGN_IDX, - [ELF_E_INVALID_SHENTSIZE] = ELF_E_INVALID_SHENTSIZE_IDX, - [ELF_E_UPDATE_RO] = ELF_E_UPDATE_RO_IDX, - [ELF_E_NOFILE] = ELF_E_NOFILE_IDX, - [ELF_E_GROUP_NOT_REL] = ELF_E_GROUP_NOT_REL_IDX, - [ELF_E_INVALID_PHDR] = ELF_E_INVALID_PHDR_IDX, - [ELF_E_NO_PHDR] = ELF_E_NO_PHDR_IDX -}; -#define nmsgidx ((int) (sizeof (msgidx) / sizeof (msgidx[0]))) - - -void -__libelf_seterrno (value) - int value; -{ -#ifndef USE_TLS - /* If we have not yet initialized the buffer do it now. */ - once_execute (once, init); - - if (threaded) - /* We do not allocate memory for the data. It is only a word. - We can store it in place of the pointer. */ - setspecific (key, (void *) (intptr_t) value); -#endif /* TLS */ - - global_error = value >= 0 && value < nmsgidx ? value : ELF_E_UNKNOWN_ERROR; -} - - -const char * -elf_errmsg (error) - int error; -{ - int last_error; - -#ifndef USE_TLS - /* If we have not yet initialized the buffer do it now. */ - once_execute (once, init); - - if ((error == 0 || error == -1) && threaded) - /* We do not allocate memory for the data. It is only a word. - We can store it in place of the pointer. */ - last_error = (intptr_t) getspecific (key); - else -#endif /* TLS */ - last_error = global_error; - - if (error == 0) - { - assert (msgidx[last_error] < sizeof (msgstr)); - return last_error != 0 ? _(msgstr + msgidx[last_error]) : NULL; - } - else if (error < -1 || error >= nmsgidx) - return _(msgstr + ELF_E_UNKNOWN_ERROR_IDX); - - assert (msgidx[error == -1 ? last_error : error] < sizeof (msgstr)); - return _(msgstr + msgidx[error == -1 ? last_error : error]); -} - - -#ifndef USE_TLS -/* Free the thread specific data, this is done if a thread terminates. */ -static void -free_key_mem (void *mem) -{ - setspecific (key, NULL); -} - - -/* Initialize the key for the global variable. */ -static void -init (void) -{ - // XXX Screw you, gcc4, the unused function attribute does not work. - __asm ("" :: "r" (free_key_mem)); - - if (key_create (&key, free_key_mem) == 0) - /* Creating the key succeeded. */ - threaded = true; -} -#endif /* TLS */ diff --git a/libelf/elf_fill.c b/libelf/elf_fill.c deleted file mode 100644 index 2880c2ed..00000000 --- a/libelf/elf_fill.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Set fill byte used when constructing ELF objects. - Copyright (C) 1998, 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libelf.h> - -#include "libelfP.h" - -extern int __libelf_fill_byte = 0; - -void -elf_fill (fill) - int fill; -{ - __libelf_fill_byte = fill; -} diff --git a/libelf/elf_flagdata.c b/libelf/elf_flagdata.c deleted file mode 100644 index b5191316..00000000 --- a/libelf/elf_flagdata.c +++ /dev/null @@ -1,59 +0,0 @@ -/* Manipulate ELF data flag. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -unsigned int -elf_flagdata (data, cmd, flags) - Elf_Data *data; - Elf_Cmd cmd; - unsigned int flags; -{ - Elf_Data_Scn *data_scn; - unsigned int result; - - if (data == NULL) - return 0; - - data_scn = (Elf_Data_Scn *) data; - - if (data_scn == NULL || unlikely (data_scn->s->elf->kind != ELF_K_ELF)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return 0; - } - - if (likely (cmd == ELF_C_SET)) - result = (data_scn->s->flags |= (flags & ELF_F_DIRTY)); - else if (likely (cmd == ELF_C_CLR)) - result = (data_scn->s->flags &= ~(flags & ELF_F_DIRTY)); - else - { - __libelf_seterrno (ELF_E_INVALID_COMMAND); - return 0; - } - - return result; -} diff --git a/libelf/elf_flagehdr.c b/libelf/elf_flagehdr.c deleted file mode 100644 index 2099fc51..00000000 --- a/libelf/elf_flagehdr.c +++ /dev/null @@ -1,56 +0,0 @@ -/* Manipulate ELF header flags. - Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1999. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -unsigned int -elf_flagehdr (elf, cmd, flags) - Elf *elf; - Elf_Cmd cmd; - unsigned int flags; -{ - unsigned int result; - - if (elf == NULL) - return 0; - - if (unlikely (elf->kind != ELF_K_ELF)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return 0; - } - - if (likely (cmd == ELF_C_SET)) - result = (elf->state.elf.ehdr_flags |= (flags & ELF_F_DIRTY)); - else if (cmd == ELF_C_CLR) - result = (elf->state.elf.ehdr_flags &= ~(flags & ELF_F_DIRTY)); - else - { - __libelf_seterrno (ELF_E_INVALID_COMMAND); - return 0; - } - - return result; -} diff --git a/libelf/elf_flagelf.c b/libelf/elf_flagelf.c deleted file mode 100644 index 3a001f67..00000000 --- a/libelf/elf_flagelf.c +++ /dev/null @@ -1,58 +0,0 @@ -/* Manipulate ELF file flags. - Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1999. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -unsigned int -elf_flagelf (elf, cmd, flags) - Elf *elf; - Elf_Cmd cmd; - unsigned int flags; -{ - unsigned int result; - - if (elf == NULL) - return 0; - - if (unlikely (elf->kind != ELF_K_ELF)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return 0; - } - - if (likely (cmd == ELF_C_SET)) - result = (elf->flags - |= (flags & (ELF_F_DIRTY | ELF_F_LAYOUT | ELF_F_PERMISSIVE))); - else if (likely (cmd == ELF_C_CLR)) - result = (elf->flags - &= ~(flags & (ELF_F_DIRTY | ELF_F_LAYOUT | ELF_F_PERMISSIVE))); - else - { - __libelf_seterrno (ELF_E_INVALID_COMMAND); - return 0; - } - - return result; -} diff --git a/libelf/elf_flagphdr.c b/libelf/elf_flagphdr.c deleted file mode 100644 index c2f8794d..00000000 --- a/libelf/elf_flagphdr.c +++ /dev/null @@ -1,56 +0,0 @@ -/* Manipulate ELF program header flags. - Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1999. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -unsigned int -elf_flagphdr (elf, cmd, flags) - Elf *elf; - Elf_Cmd cmd; - unsigned int flags; -{ - unsigned int result; - - if (elf == NULL) - return 0; - - if (unlikely (elf->kind != ELF_K_ELF)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return 0; - } - - if (likely (cmd == ELF_C_SET)) - result = (elf->state.elf.phdr_flags |= (flags & ELF_F_DIRTY)); - else if (likely (cmd == ELF_C_CLR)) - result = (elf->state.elf.phdr_flags &= ~(flags & ELF_F_DIRTY)); - else - { - __libelf_seterrno (ELF_E_INVALID_COMMAND); - return 0; - } - - return result; -} diff --git a/libelf/elf_flagscn.c b/libelf/elf_flagscn.c deleted file mode 100644 index 9cd1cc40..00000000 --- a/libelf/elf_flagscn.c +++ /dev/null @@ -1,56 +0,0 @@ -/* Manipulate ELF section flags. - Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1999. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -unsigned int -elf_flagscn (scn, cmd, flags) - Elf_Scn *scn; - Elf_Cmd cmd; - unsigned int flags; -{ - unsigned int result; - - if (scn == NULL) - return 0; - - if (unlikely (scn->elf->kind != ELF_K_ELF)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return 0; - } - - if (likely (cmd == ELF_C_SET)) - result = (scn->flags |= (flags & ELF_F_DIRTY)); - else if (likely (cmd == ELF_C_CLR)) - result = (scn->flags &= ~(flags & ELF_F_DIRTY)); - else - { - __libelf_seterrno (ELF_E_INVALID_COMMAND); - return 0; - } - - return result; -} diff --git a/libelf/elf_flagshdr.c b/libelf/elf_flagshdr.c deleted file mode 100644 index 0972d27f..00000000 --- a/libelf/elf_flagshdr.c +++ /dev/null @@ -1,56 +0,0 @@ -/* Manipulate ELF section header flags. - Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1999. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -unsigned int -elf_flagshdr (scn, cmd, flags) - Elf_Scn *scn; - Elf_Cmd cmd; - unsigned int flags; -{ - unsigned int result; - - if (scn == NULL) - return 0; - - if (unlikely (scn->elf->kind != ELF_K_ELF)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return 0; - } - - if (likely (cmd == ELF_C_SET)) - result = (scn->shdr_flags |= (flags & ELF_F_DIRTY)); - else if (likely (cmd == ELF_C_CLR)) - result = (scn->shdr_flags &= ~(flags & ELF_F_DIRTY)); - else - { - __libelf_seterrno (ELF_E_INVALID_COMMAND); - return 0; - } - - return result; -} diff --git a/libelf/elf_getarhdr.c b/libelf/elf_getarhdr.c deleted file mode 100644 index da0b4a42..00000000 --- a/libelf/elf_getarhdr.c +++ /dev/null @@ -1,53 +0,0 @@ -/* Read header of next archive member. - Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <libelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -Elf_Arhdr * -elf_getarhdr (elf) - Elf *elf; -{ - Elf *parent = elf->parent; - - /* Calling this function is not ok for any file type but archives. */ - if (parent == NULL) - { - __libelf_seterrno (ELF_E_INVALID_OP); - return NULL; - } - - /* Make sure we have read the archive header. */ - if (parent->state.ar.elf_ar_hdr.ar_name == NULL - && __libelf_next_arhdr (parent) != 0) - /* Something went wrong. Maybe there is no member left. */ - return NULL; - - - /* We can be sure the parent is an archive. */ - assert (parent->kind == ELF_K_AR); - - return &parent->state.ar.elf_ar_hdr; -} diff --git a/libelf/elf_getarsym.c b/libelf/elf_getarsym.c deleted file mode 100644 index 33e4bff4..00000000 --- a/libelf/elf_getarsym.c +++ /dev/null @@ -1,251 +0,0 @@ -/* Return symbol table of archive. - Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -//#include <byteswap.h> -//#include <endian.h> -#include <stdint.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> - -#include <dl-hash.h> -#include "libelfP.h" - - -Elf_Arsym * -elf_getarsym (elf, ptr) - Elf *elf; - size_t *ptr; -{ - Elf_Arsym *result; - - if (elf->kind != ELF_K_AR) - { - /* This is no archive. */ - __libelf_seterrno (ELF_E_NO_ARCHIVE); - return NULL; - } - - if (ptr != NULL) - /* In case of an error or when we know the value store the expected - value now. Doing this allows us easier exits in an error case. */ - *ptr = elf->state.ar.ar_sym_num; - - if (elf->state.ar.ar_sym == (Elf_Arsym *) -1l) - { - /* There is no index. */ - __libelf_seterrno (ELF_E_NO_INDEX); - return NULL; - } - - result = elf->state.ar.ar_sym; - if (result == NULL) - { - /* We have not yet read the index. */ - struct ar_hdr *index_hdr; - uint32_t n; - size_t index_size; - char tmpbuf[17]; - size_t ar_sym_len; - Elf_Arsym *arsym; - size_t cnt; - - rwlock_wrlock (elf->lock); - - /* In case we find no index remember this for the next call. */ - elf->state.ar.ar_sym = (Elf_Arsym *) -1l; - - if (elf->map_address == NULL) - { - /* We must read index from the file. */ - assert (elf->fildes != -1); - if (pread (elf->fildes, &elf->state.ar.ar_hdr, - sizeof (struct ar_hdr), elf->start_offset + SARMAG) - != sizeof (struct ar_hdr)) - { - /* It is not possible to read the index. Maybe it does not - exist. */ - __libelf_seterrno (ELF_E_READ_ERROR); - goto out; - } - - index_hdr = &elf->state.ar.ar_hdr; - } - else - { - if (SARMAG + sizeof (struct ar_hdr) > elf->maximum_size) - { - /* There is no room for the full archive. */ - __libelf_seterrno (ELF_E_NO_INDEX); - goto out; - } - - index_hdr = (struct ar_hdr *) (elf->map_address - + elf->start_offset + SARMAG); - } - - /* Now test whether this really is an archive. */ - if (memcmp (index_hdr->ar_fmag, ARFMAG, 2) != 0) - { - /* Invalid magic bytes. */ - __libelf_seterrno (ELF_E_ARCHIVE_FMAG); - goto out; - } - - /* Now test whether this is the index. It is denoted by the - name being "/ ". - XXX This is not entirely true. There are some more forms. - Which of them shall we handle? */ - if (memcmp (index_hdr->ar_name, "/ ", 16) != 0) - { - /* If the index is not the first entry, there is no index. - - XXX Is this true? */ - __libelf_seterrno (ELF_E_NO_INDEX); - goto out; - } - - /* We have an archive. The first word in there is the number of - entries in the table. */ - if (elf->map_address == NULL) - { - if (pread (elf->fildes, &n, sizeof (n), - elf->start_offset + SARMAG + sizeof (struct ar_hdr)) - != sizeof (n)) - { - /* Cannot read the number of entries. */ - __libelf_seterrno (ELF_E_NO_INDEX); - goto out; - } - } - else - n = *(uint32_t *) (elf->map_address + elf->start_offset - + SARMAG + sizeof (struct ar_hdr)); - - if (__BYTE_ORDER == __LITTLE_ENDIAN) - n = bswap_32 (n); - - /* Now we can perform some first tests on whether all the data - needed for the index is available. */ - memcpy (tmpbuf, index_hdr->ar_size, 10); - tmpbuf[10] = '\0'; - index_size = atol (tmpbuf); - - if (SARMAG + sizeof (struct ar_hdr) + index_size > elf->maximum_size - || n * sizeof (uint32_t) > index_size) - { - /* This index table cannot be right since it does not fit into - the file. */ - __libelf_seterrno (ELF_E_NO_INDEX); - goto out; - } - - /* Now we can allocate the arrays needed to store the index. */ - ar_sym_len = (n + 1) * sizeof (Elf_Arsym); - elf->state.ar.ar_sym = (Elf_Arsym *) malloc (ar_sym_len); - if (elf->state.ar.ar_sym != NULL) - { - uint32_t *file_data; - char *str_data; - - if (elf->map_address == NULL) - { - char *new_str; - Elf_Arsym *newp; - - file_data = (uint32_t *) alloca (n * sizeof (uint32_t)); - - ar_sym_len += index_size - n * sizeof (uint32_t); - newp = (Elf_Arsym *) realloc (elf->state.ar.ar_sym, - ar_sym_len); - if (newp == NULL) - { - free (elf->state.ar.ar_sym); - elf->state.ar.ar_sym = NULL; - __libelf_seterrno (ELF_E_NOMEM); - goto out; - } - elf->state.ar.ar_sym = newp; - - new_str = (char *) (elf->state.ar.ar_sym + n + 1); - - /* Now read the data from the file. */ - if ((size_t) pread (elf->fildes, file_data, - n * sizeof (uint32_t), elf->start_offset - + SARMAG + sizeof (struct ar_hdr) - + sizeof (uint32_t)) != n * sizeof (uint32_t) - || ((size_t) pread (elf->fildes, new_str, - index_size - n * sizeof (uint32_t), - elf->start_offset - + SARMAG + sizeof (struct ar_hdr) - + (n + 1) * sizeof (uint32_t)) - != index_size - n * sizeof (uint32_t))) - { - /* We were not able to read the data. */ - free (elf->state.ar.ar_sym); - elf->state.ar.ar_sym = NULL; - __libelf_seterrno (ELF_E_NO_INDEX); - goto out; - } - - str_data = (char *) new_str; - } - else - { - file_data = (uint32_t *) (elf->map_address + elf->start_offset - + SARMAG + sizeof (struct ar_hdr) - + sizeof (uint32_t)); - str_data = (char *) &file_data[n]; - } - - /* Now we can build the data structure. */ - arsym = elf->state.ar.ar_sym; - for (cnt = 0; cnt < n; ++cnt) - { - arsym[cnt].as_name = str_data; - if (__BYTE_ORDER == __LITTLE_ENDIAN) - arsym[cnt].as_off = bswap_32 (file_data[cnt]); - else - arsym[cnt].as_off = file_data[cnt]; - arsym[cnt].as_hash = _dl_elf_hash (str_data); - str_data = rawmemchr (str_data, '\0') + 1; - } - /* At the end a special entry. */ - arsym[n].as_name = NULL; - arsym[n].as_off = 0; - arsym[n].as_hash = ~0UL; - - /* Tell the caller how many entries we have. */ - elf->state.ar.ar_sym_num = n + 1; - } - - result = elf->state.ar.ar_sym; - - out: - rwlock_unlock (elf->lock); - } - - if (ptr != NULL) - *ptr = elf->state.ar.ar_sym_num; - - return result; -} diff --git a/libelf/elf_getbase.c b/libelf/elf_getbase.c deleted file mode 100644 index ea76f416..00000000 --- a/libelf/elf_getbase.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Return offset of first byte for the object. - Copyright (C) 1998, 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -off_t -elf_getbase (elf) - Elf *elf; -{ - return elf == NULL ? (off_t) -1 : elf->start_offset; -} diff --git a/libelf/elf_getdata.c b/libelf/elf_getdata.c deleted file mode 100644 index 2d5f27af..00000000 --- a/libelf/elf_getdata.c +++ /dev/null @@ -1,454 +0,0 @@ -/* Return the next data element from the section after possibly converting it. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stddef.h> -#include <string.h> -#include <unistd.h> - -#include "libelfP.h" -#include "common.h" -#include "elf-knowledge.h" - - -#if _STRING_ARCH_unaligned -# define ALLOW_ALIGNED 1 -#else -# define ALLOW_ALIGNED 0 -#endif - - -#define TYPEIDX(Sh_Type) \ - (Sh_Type >= SHT_NULL && Sh_Type < SHT_NUM \ - ? Sh_Type \ - : (Sh_Type >= SHT_GNU_LIBLIST && Sh_Type <= SHT_HISUNW \ - ? SHT_NUM + Sh_Type - SHT_GNU_LIBLIST \ - : 0)) - -static const struct -{ - Elf_Type type; - size_t size; -#if ALLOW_ALIGNED -# define AL(val) -#else - size_t align; -# define AL(val), val -#endif -} shtype_map[EV_NUM - 1][ELFCLASSNUM - 1][TYPEIDX (SHT_HISUNW) + 1] = -{ - [EV_CURRENT - 1] = - { - [ELFCLASS32 - 1] = - { - /* Associate section types with libelf types, their sizes and - alignment. SHT_GNU_verdef is special since the section does - not contain entries of only one size. */ -#define DEFINE(Bits) \ - [SHT_SYMTAB] = { ELF_T_SYM, sizeof (ElfW2(Bits,Sym)) \ - AL (__alignof__ (ElfW2(Bits,Sym))) }, \ - [SHT_RELA] = { ELF_T_RELA, sizeof (ElfW2(Bits,Rela)) \ - AL (__alignof__ (ElfW2(Bits,Rela))) }, \ - [SHT_HASH] = { ELF_T_WORD, sizeof (ElfW2(Bits,Word)) \ - AL (__alignof__ (ElfW2(Bits,Word))) }, \ - [SHT_DYNAMIC] = { ELF_T_DYN, sizeof (ElfW2(Bits,Dyn)) \ - AL (__alignof__ (ElfW2(Bits,Dyn))) }, \ - [SHT_REL] = { ELF_T_REL, sizeof (ElfW2(Bits,Rel)) \ - AL (__alignof__ (ElfW2(Bits,Rel))) }, \ - [SHT_DYNSYM] = { ELF_T_SYM, sizeof (ElfW2(Bits,Sym)) \ - AL (__alignof__ (ElfW2(Bits,Sym))) }, \ - [SHT_INIT_ARRAY] = { ELF_T_ADDR, sizeof (ElfW2(Bits,Addr)) \ - AL (__alignof__ (ElfW2(Bits,Addr))) }, \ - [SHT_FINI_ARRAY] = { ELF_T_ADDR, sizeof (ElfW2(Bits,Addr)) \ - AL (__alignof__ (ElfW2(Bits,Addr))) }, \ - [SHT_PREINIT_ARRAY] = { ELF_T_ADDR, sizeof (ElfW2(Bits,Addr)) \ - AL (__alignof__ (ElfW2(Bits,Addr))) }, \ - [SHT_GROUP] = { ELF_T_WORD, sizeof (Elf32_Word) \ - AL (__alignof__ (Elf32_Word)) }, \ - [SHT_SYMTAB_SHNDX] = { ELF_T_WORD, sizeof (Elf32_Word) \ - AL (__alignof__ (Elf32_Word)) }, \ - [TYPEIDX (SHT_GNU_verdef)] = { ELF_T_VDEF, 1 AL (1) }, \ - [TYPEIDX (SHT_GNU_verneed)] = { ELF_T_VNEED, \ - sizeof (ElfW2(Bits,Verneed)) \ - AL (__alignof__ (ElfW2(Bits,Verneed)))},\ - [TYPEIDX (SHT_GNU_versym)] = { ELF_T_HALF, sizeof (ElfW2(Bits,Versym)) \ - AL (__alignof__ (ElfW2(Bits,Versym))) }, \ - [TYPEIDX (SHT_SUNW_syminfo)] = { ELF_T_SYMINFO, \ - sizeof (ElfW2(Bits,Syminfo)) \ - AL(__alignof__ (ElfW2(Bits,Syminfo)))},\ - [TYPEIDX (SHT_SUNW_move)] = { ELF_T_MOVE, sizeof (ElfW2(Bits,Move)) \ - AL (__alignof__ (ElfW2(Bits,Move))) }, \ - [TYPEIDX (SHT_GNU_LIBLIST)] = { ELF_T_LIB, sizeof (ElfW2(Bits,Lib)) \ - AL (__alignof__ (ElfW2(Bits,Lib))) } - DEFINE (32) - }, - [ELFCLASS64 - 1] = - { - DEFINE (64) - } - } -}; - - -/* Convert the data in the current section. */ -static void -convert_data (Elf_Scn *scn, int version, int eclass, int data, - size_t size, size_t type) -{ -#if ALLOW_ALIGNED - /* No need to compute the alignment requirement of the host. */ - const size_t align = 1; -#else -# if EV_NUM != 2 - size_t align = shtype_map[__libelf_version - 1][eclass - 1][type].align; -# else - size_t align = shtype_map[0][eclass - 1][type].align; -# endif -#endif - - if (data == MY_ELFDATA) - { - if (ALLOW_ALIGNED - || (((size_t) ((char *) scn->rawdata_base)) & (align - 1)) == 0) - /* No need to copy, we can use the raw data. */ - scn->data_base = scn->rawdata_base; - else - { - scn->data_base = (char *) malloc (size); - if (scn->data_base == NULL) - { - __libelf_seterrno (ELF_E_NOMEM); - return; - } - - /* The copy will be appropriately aligned for direct access. */ - memcpy (scn->data_base, scn->rawdata_base, size); - } - } - else - { - xfct_t fp; - - scn->data_base = (char *) malloc (size); - if (scn->data_base == NULL) - { - __libelf_seterrno (ELF_E_NOMEM); - return; - } - - /* Get the conversion function. */ -#if EV_NUM != 2 - fp = __elf_xfctstom[version - 1][__libelf_version - 1][eclass - 1][type]; -#else - fp = __elf_xfctstom[0][0][eclass - 1][type]; -#endif - - fp (scn->data_base, scn->rawdata_base, size, 0); - } - - scn->data_list.data.d.d_buf = scn->data_base; - scn->data_list.data.d.d_size = size; - scn->data_list.data.d.d_type = type; - scn->data_list.data.d.d_off = scn->rawdata.d.d_off; - scn->data_list.data.d.d_align = scn->rawdata.d.d_align; - scn->data_list.data.d.d_version = scn->rawdata.d.d_version; - - scn->data_list.data.s = scn; -} - - -/* Store the information for the raw data in the `rawdata' element. */ -int -internal_function_def -__libelf_set_rawdata (Elf_Scn *scn) -{ - size_t offset; - size_t size; - size_t align; - int type; - Elf *elf = scn->elf; - - if (elf->class == ELFCLASS32) - { - Elf32_Shdr *shdr = scn->shdr.e32 ?: INTUSE(elf32_getshdr) (scn); - - if (shdr == NULL) - /* Something went terribly wrong. */ - return 1; - - offset = shdr->sh_offset; - size = shdr->sh_size; - type = shdr->sh_type; - align = shdr->sh_addralign; - } - else - { - Elf64_Shdr *shdr = scn->shdr.e64 ?: INTUSE(elf64_getshdr) (scn); - - if (shdr == NULL) - /* Something went terribly wrong. */ - return 1; - - offset = shdr->sh_offset; - size = shdr->sh_size; - type = shdr->sh_type; - align = shdr->sh_addralign; - } - - /* If the section has no data (for whatever reason), leave the `d_buf' - pointer NULL. */ - if (size != 0 && type != SHT_NOBITS) - { - /* First a test whether the section is valid at all. */ - size_t entsize; - - if (type == SHT_HASH) - { - GElf_Ehdr ehdr_mem; - - entsize = SH_ENTSIZE_HASH (gelf_getehdr (elf, &ehdr_mem)); - } - else - { -#if EV_NUM != 2 - entsize = shtype_map[__libelf_version - 1][elf->class - 1][TYPEIDX (type)].size; -#else - entsize = shtype_map[0][elf->class - 1][TYPEIDX (type)].size; -#endif - } - - /* We assume it is an array of bytes if it is none of the structured - sections we know of. */ - if (entsize == 0) - entsize = 1; - - if (size % entsize != 0) - { - __libelf_seterrno (ELF_E_INVALID_DATA); - return 1; - } - - /* We can use the mapped or loaded data if available. */ - if (elf->map_address != NULL) - { - /* First see whether the information in the section header is - valid and it does not ask for too much. */ - if (offset + size > elf->maximum_size) - { - /* Something is wrong. */ - __libelf_seterrno (ELF_E_INVALID_SECTION_HEADER); - return 1; - } - - scn->rawdata_base = scn->rawdata.d.d_buf - = (char *) elf->map_address + elf->start_offset + offset; - } - else if (elf->fildes != -1) - { - /* We have to read the data from the file. Allocate the needed - memory. */ - scn->rawdata_base = scn->rawdata.d.d_buf - = (char *) malloc (size); - if (scn->rawdata.d.d_buf == NULL) - { - __libelf_seterrno (ELF_E_NOMEM); - return 1; - } - - if ((size_t) pread (elf->fildes, scn->rawdata.d.d_buf, size, - elf->start_offset + offset) != size) - { - /* Cannot read the data. */ - free (scn->rawdata.d.d_buf); - scn->rawdata_base = scn->rawdata.d.d_buf = NULL; - __libelf_seterrno (ELF_E_READ_ERROR); - return 1; - } - } - else - { - /* The file descriptor is already closed, we cannot get the data - anymore. */ - __libelf_seterrno (ELF_E_FD_DISABLED); - return 1; - } - } - - scn->rawdata.d.d_size = size; - /* Some broken ELF ABI for 64-bit machines use the wrong hash table - entry size. See elf-knowledge.h for more information. */ - if (type == SHT_HASH && elf->class == ELFCLASS64) - { - GElf_Ehdr ehdr_mem; - - scn->rawdata.d.d_type = (SH_ENTSIZE_HASH (gelf_getehdr (elf, &ehdr_mem)) - == 4 ? ELF_T_WORD : ELF_T_XWORD); - } - else - { -#if EV_NUM != 2 - scn->rawdata.d.d_type = - shtype_map[__libelf_version - 1][elf->class - 1][TYPEIDX (type)].type; -#else - scn->rawdata.d.d_type = - shtype_map[0][elf->class - 1][TYPEIDX (type)].type; -#endif - } - scn->rawdata.d.d_off = 0; - scn->rawdata.d.d_align = align; - if (elf->class == ELFCLASS32 - || (offsetof (struct Elf, state.elf32.ehdr) - == offsetof (struct Elf, state.elf64.ehdr))) - scn->rawdata.d.d_version = - elf->state.elf32.ehdr->e_ident[EI_VERSION]; - else - scn->rawdata.d.d_version = - elf->state.elf64.ehdr->e_ident[EI_VERSION]; - - scn->rawdata.s = scn; - - scn->data_read = 1; - - /* We actually read data from the file. At least we tried. */ - scn->flags |= ELF_F_FILEDATA; - - return 0; -} - - -Elf_Data * -elf_getdata (scn, data) - Elf_Scn *scn; - Elf_Data *data; -{ - Elf_Data *result = NULL; - Elf *elf; - - if (scn == NULL) - return NULL; - - if (unlikely (scn->elf->kind != ELF_K_ELF)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - /* We will need this multiple times later on. */ - elf = scn->elf; - - rwlock_rdlock (elf->lock); - - /* If `data' is not NULL this means we are not addressing the initial - data in the file. But this also means this data is already read - (since otherwise it is not possible to have a valid `data' pointer) - and all the data structures are initialized as well. In this case - we can simply walk the list of data records. */ - if (data != NULL) - { - Elf_Data_List *runp; - - /* It is not possible that if DATA is not NULL the first entry is - returned. But this also means that there must be a first data - entry. */ - if (scn->data_list_rear == NULL - /* The section the reference data is for must match the section - parameter. */ - || unlikely (((Elf_Data_Scn *) data)->s != scn)) - { - __libelf_seterrno (ELF_E_DATA_MISMATCH); - goto out; - } - - /* We start searching with the first entry. */ - runp = &scn->data_list; - - while (1) - { - /* If `data' does not match any known record punt. */ - if (runp == NULL) - { - __libelf_seterrno (ELF_E_DATA_MISMATCH); - goto out; - } - - if (&runp->data.d == data) - /* Found the entry. */ - break; - - runp = runp->next; - } - - /* Return the data for the next data record. */ - result = runp->next ? &runp->next->data.d : NULL; - goto out; - } - - /* If the data for this section was not yet initialized do it now. */ - if (scn->data_read == 0) - { - /* We cannot acquire a write lock while we are holding a read - lock. Therefore give up the read lock and then get the write - lock. But this means that the data could meanwhile be - modified, therefore start the tests again. */ - rwlock_unlock (elf->lock); - rwlock_wrlock (elf->lock); - - /* Read the data from the file. There is always a file (or - memory region) associated with this descriptor since - otherwise the `data_read' flag would be set. */ - if (scn->data_read == 0 && __libelf_set_rawdata (scn) != 0) - /* Something went wrong. The error value is already set. */ - goto out; - } - - /* At this point we know the raw data is available. But it might be - empty in case the section has size zero (for whatever reason). - Now create the converted data in case this is necessary. */ - if (scn->data_list_rear == NULL) - { - if (scn->rawdata.d.d_buf != NULL && scn->rawdata.d.d_size > 0) - /* Convert according to the version and the type. */ - convert_data (scn, __libelf_version, elf->class, - (elf->class == ELFCLASS32 - || (offsetof (struct Elf, state.elf32.ehdr) - == offsetof (struct Elf, state.elf64.ehdr)) - ? elf->state.elf32.ehdr->e_ident[EI_DATA] - : elf->state.elf64.ehdr->e_ident[EI_DATA]), - scn->rawdata.d.d_size, - scn->rawdata.d.d_type); - else - /* This is an empty or NOBITS section. There is no buffer but - the size information etc is important. */ - scn->data_list.data.d = scn->rawdata.d; - - scn->data_list_rear = &scn->data_list; - } - - /* If no data is present we cannot return any. */ - if (scn->data_list_rear != NULL) - /* Return the first data element in the list. */ - result = &scn->data_list.data.d; - - out: - rwlock_unlock (elf->lock); - - return result; -} -INTDEF(elf_getdata) diff --git a/libelf/elf_getident.c b/libelf/elf_getident.c deleted file mode 100644 index b673b5c6..00000000 --- a/libelf/elf_getident.c +++ /dev/null @@ -1,51 +0,0 @@ -/* Retrieve file identification data. - Copyright (C) 1998, 1999, 2000, 2002, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stddef.h> - -#include "libelfP.h" - - -char * -elf_getident (elf, ptr) - Elf *elf; - size_t *ptr; -{ - /* In case this is no ELF file, the handle is invalid and we return - NULL. */ - if (elf == NULL || elf->kind != ELF_K_ELF) - { - if (ptr != NULL) - *ptr = 0; - return NULL; - } - - /* We already read the ELF header. Return a pointer to it and store - the length in *PTR. */ - if (ptr != NULL) - *ptr = EI_NIDENT; - - return (char *) (elf->class == ELFCLASS32 - || (offsetof (struct Elf, state.elf32.ehdr) - == offsetof (struct Elf, state.elf64.ehdr)) - ? elf->state.elf32.ehdr->e_ident - : elf->state.elf64.ehdr->e_ident); -} diff --git a/libelf/elf_getscn.c b/libelf/elf_getscn.c deleted file mode 100644 index a6b4767c..00000000 --- a/libelf/elf_getscn.c +++ /dev/null @@ -1,77 +0,0 @@ -/* Get section at specific index. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004 Red Hat, Inc. - Contributed by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <stddef.h> -#include <stdlib.h> - -#include "libelfP.h" - - -Elf_Scn * -elf_getscn (elf, idx) - Elf *elf; - size_t idx; -{ - if (elf == NULL) - return NULL; - - if (unlikely (elf->kind != ELF_K_ELF)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - rwlock_rdlock (elf->lock); - - Elf_Scn *result = NULL; - - /* Find the section in the list. */ - Elf_ScnList *runp = (elf->class == ELFCLASS32 - || (offsetof (struct Elf, state.elf32.scns) - == offsetof (struct Elf, state.elf64.scns)) - ? &elf->state.elf32.scns : &elf->state.elf64.scns); - while (1) - { - if (idx < runp->max) - { - if (idx < runp->cnt) - result = &runp->data[idx]; - else - __libelf_seterrno (ELF_E_INVALID_INDEX); - break; - } - - idx -= runp->max; - - runp = runp->next; - if (runp == NULL) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - break; - } - } - - rwlock_unlock (elf->lock); - - return result; -} -INTDEF(elf_getscn) diff --git a/libelf/elf_getshnum.c b/libelf/elf_getshnum.c deleted file mode 100644 index 52d6a056..00000000 --- a/libelf/elf_getshnum.c +++ /dev/null @@ -1,64 +0,0 @@ -/* Return number of sections in the ELF file. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <gelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -int -elf_getshnum (elf, dst) - Elf *elf; - size_t *dst; -{ - int result = 0; - int idx; - - if (elf == NULL) - return -1; - - if (unlikely (elf->kind != ELF_K_ELF)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return -1; - } - - rwlock_rdlock (elf->lock); - - idx = elf->state.elf.scns_last->cnt; - if (idx != 0 - || (elf->state.elf.scns_last - != (elf->class == ELFCLASS32 - || (offsetof (Elf, state.elf32.scns) - == offsetof (Elf, state.elf64.scns)) - ? &elf->state.elf32.scns : &elf->state.elf64.scns))) - /* There is at least one section. */ - *dst = 1 + elf->state.elf.scns_last->data[idx - 1].index; - else - *dst = 0; - - rwlock_unlock (elf->lock); - - return result; -} -INTDEF(elf_getshnum) diff --git a/libelf/elf_getshstrndx.c b/libelf/elf_getshstrndx.c deleted file mode 100644 index 706092b7..00000000 --- a/libelf/elf_getshstrndx.c +++ /dev/null @@ -1,168 +0,0 @@ -/* Return section index of section header string table. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <gelf.h> -#include <stddef.h> -#include <unistd.h> - -#include "libelfP.h" -#include "common.h" - - -int -elf_getshstrndx (elf, dst) - Elf *elf; - size_t *dst; -{ - int result = 0; - - if (elf == NULL) - return -1; - - if (unlikely (elf->kind != ELF_K_ELF)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return -1; - } - - rwlock_rdlock (elf->lock); - - /* We rely here on the fact that the `elf' element is a common prefix - of `elf32' and `elf64'. */ - assert (offsetof (struct Elf, state.elf.ehdr) - == offsetof (struct Elf, state.elf32.ehdr)); - assert (sizeof (elf->state.elf.ehdr) - == sizeof (elf->state.elf32.ehdr)); - assert (offsetof (struct Elf, state.elf.ehdr) - == offsetof (struct Elf, state.elf64.ehdr)); - assert (sizeof (elf->state.elf.ehdr) - == sizeof (elf->state.elf64.ehdr)); - - if (unlikely (elf->state.elf.ehdr == NULL)) - { - __libelf_seterrno (ELF_E_WRONG_ORDER_EHDR); - result = -1; - } - else - { - Elf32_Word num; - - num = (elf->class == ELFCLASS32 - ? elf->state.elf32.ehdr->e_shstrndx - : elf->state.elf64.ehdr->e_shstrndx); - - /* Determine whether the index is too big to fit in the ELF - header. */ - if (unlikely (num == SHN_XINDEX)) - { - /* Yes. Search the zeroth section header. */ - if (elf->class == ELFCLASS32) - { - size_t offset; - - if (elf->state.elf32.scns.data[0].shdr.e32 != NULL) - { - num = elf->state.elf32.scns.data[0].shdr.e32->sh_link; - goto success; - } - - offset = elf->state.elf32.ehdr->e_shoff; - - if (elf->map_address != NULL - && elf->state.elf32.ehdr->e_ident[EI_DATA] == MY_ELFDATA - && (ALLOW_UNALIGNED - || (((size_t) ((char *) elf->map_address + offset)) - & (__alignof__ (Elf32_Shdr) - 1)) == 0)) - /* We can directly access the memory. */ - num = ((Elf32_Shdr *) (elf->map_address + offset))->sh_link; - else - { - /* We avoid reading in all the section headers. Just read - the first one. */ - Elf32_Shdr shdr_mem; - - if (pread (elf->fildes, &shdr_mem, sizeof (Elf32_Shdr), - offset) != sizeof (Elf32_Shdr)) - { - /* We must be able to read this ELF section header. */ - __libelf_seterrno (ELF_E_INVALID_FILE); - result = -1; - goto out; - } - - if (elf->state.elf32.ehdr->e_ident[EI_DATA] != MY_ELFDATA) - CONVERT (shdr_mem.sh_link); - num = shdr_mem.sh_link; - } - } - else - { - size_t offset; - - if (elf->state.elf64.scns.data[0].shdr.e64 != NULL) - { - num = elf->state.elf64.scns.data[0].shdr.e64->sh_link; - goto success; - } - - offset = elf->state.elf64.ehdr->e_shoff; - - if (elf->map_address != NULL - && elf->state.elf64.ehdr->e_ident[EI_DATA] == MY_ELFDATA - && (ALLOW_UNALIGNED - || (((size_t) ((char *) elf->map_address + offset)) - & (__alignof__ (Elf64_Shdr) - 1)) == 0)) - /* We can directly access the memory. */ - num = ((Elf64_Shdr *) (elf->map_address + offset))->sh_link; - else - { - /* We avoid reading in all the section headers. Just read - the first one. */ - Elf64_Shdr shdr_mem; - - if (pread (elf->fildes, &shdr_mem, sizeof (Elf64_Shdr), - offset) != sizeof (Elf64_Shdr)) - { - /* We must be able to read this ELF section header. */ - __libelf_seterrno (ELF_E_INVALID_FILE); - result = -1; - goto out; - } - - if (elf->state.elf64.ehdr->e_ident[EI_DATA] != MY_ELFDATA) - CONVERT (shdr_mem.sh_link); - num = shdr_mem.sh_link; - } - } - } - - /* Store the result. */ - success: - *dst = num; - } - - out: - rwlock_unlock (elf->lock); - - return result; -} -INTDEF(elf_getshstrndx) diff --git a/libelf/elf_hash.c b/libelf/elf_hash.c deleted file mode 100644 index 38f4ae06..00000000 --- a/libelf/elf_hash.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Hash function used in ELF implementations. - Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Contributed by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libelfP.h> - -/* Get the implementation. */ -#include <dl-hash.h> - -unsigned long int -elf_hash (string) - const char *string; -{ - return _dl_elf_hash (string); -} -INTDEF(elf_hash) diff --git a/libelf/elf_kind.c b/libelf/elf_kind.c deleted file mode 100644 index a67ebe72..00000000 --- a/libelf/elf_kind.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Return the kind of file associated with the descriptor. - Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Contributed by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -Elf_Kind -elf_kind (elf) - Elf *elf; -{ - return elf == NULL ? ELF_K_NONE : elf->kind; -} diff --git a/libelf/elf_memory.c b/libelf/elf_memory.c deleted file mode 100644 index 57221f99..00000000 --- a/libelf/elf_memory.c +++ /dev/null @@ -1,40 +0,0 @@ -/* Create descriptor for memory region. - Copyright (C) 1999, 2000, 2002 Red Hat, Inc. - Contributed by Ulrich Drepper <drepper@redhat.com>, 1999. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -Elf * -elf_memory (image, size) - char *image; - size_t size; -{ - if (image == NULL) - { - __libelf_seterrno (ELF_E_INVALID_OPERAND); - return NULL; - } - - return __libelf_read_mmaped_file (-1, image, 0, size, ELF_C_READ, NULL); -} diff --git a/libelf/elf_ndxscn.c b/libelf/elf_ndxscn.c deleted file mode 100644 index edd6bdae..00000000 --- a/libelf/elf_ndxscn.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Get index of section. - Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Contributed by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -size_t -elf_ndxscn (scn) - Elf_Scn *scn; -{ - if (scn == NULL) - return SHN_UNDEF; - - return scn->index; -} diff --git a/libelf/elf_newdata.c b/libelf/elf_newdata.c deleted file mode 100644 index bae3b3f5..00000000 --- a/libelf/elf_newdata.c +++ /dev/null @@ -1,97 +0,0 @@ -/* Create new, empty section data. - Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. - Contributed by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stddef.h> -#include <stdlib.h> - -#include "libelfP.h" - - -Elf_Data * -elf_newdata (Elf_Scn *scn) -{ - Elf_Data_List *result = NULL; - - if (scn == NULL) - return NULL; - - if (unlikely (scn->index == 0)) - { - /* It is not allowed to add something to the 0th section. */ - __libelf_seterrno (ELF_E_NOT_NUL_SECTION); - return NULL; - } - - if (scn->elf->class == ELFCLASS32 - || (offsetof (struct Elf, state.elf32.ehdr) - == offsetof (struct Elf, state.elf64.ehdr)) - ? scn->elf->state.elf32.ehdr == NULL - : scn->elf->state.elf64.ehdr == NULL) - { - __libelf_seterrno (ELF_E_WRONG_ORDER_EHDR); - return NULL; - } - - rwlock_wrlock (scn->elf->lock); - - if (scn->data_read && scn->data_list_rear == NULL) - { - /* This means the section was created by the user and this is the - first data. */ - result = &scn->data_list; - result->flags = ELF_F_DIRTY; - } - else - { - /* Create a new, empty data descriptor. */ - result = (Elf_Data_List *) calloc (1, sizeof (Elf_Data_List)); - if (result == NULL) - { - __libelf_seterrno (ELF_E_NOMEM); - goto out; - } - - result->flags = ELF_F_DIRTY | ELF_F_MALLOCED; - - if (scn->data_list_rear == NULL) - /* We create new data without reading/converting the data from the - file. That is fine but we have to remember this. */ - scn->data_list_rear = &scn->data_list; - } - - /* Set the predefined values. */ - result->data.d.d_version = __libelf_version; - - result->data.s = scn; - - /* Add to the end of the list. */ - if (scn->data_list_rear != NULL) - scn->data_list_rear->next = result; - - scn->data_list_rear = result; - - out: - rwlock_unlock (scn->elf->lock); - - /* Please note that the following is thread safe and is also defined - for RESULT == NULL since it still return NULL. */ - return &result->data.d; -} diff --git a/libelf/elf_newscn.c b/libelf/elf_newscn.c deleted file mode 100644 index f3ea0d80..00000000 --- a/libelf/elf_newscn.c +++ /dev/null @@ -1,143 +0,0 @@ -/* Append new section. - Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <stdbool.h> -#include <stddef.h> -#include <stdlib.h> -#include <string.h> - -#include "libelfP.h" - - -Elf_Scn * -elf_newscn (elf) - Elf *elf; -{ - Elf_Scn *result = NULL; - bool first = false; - - if (elf == NULL) - return NULL; - - /* We rely on the prefix of the `elf', `elf32', and `elf64' element - being the same. */ - assert (offsetof (Elf, state.elf.scns_last) - == offsetof (Elf, state.elf32.scns_last)); - assert (offsetof (Elf, state.elf.scns_last) - == offsetof (Elf, state.elf64.scns_last)); - assert (offsetof (Elf, state.elf32.scns) - == offsetof (Elf, state.elf64.scns)); - - rwlock_wrlock (elf->lock); - - again: - if (elf->state.elf.scns_last->cnt < elf->state.elf.scns_last->max) - { - result = &elf->state.elf.scns_last->data[elf->state.elf.scns_last->cnt]; - - if (++elf->state.elf.scns_last->cnt == 1 - && (elf->state.elf.scns_last - == (elf->class == ELFCLASS32 - || (offsetof (Elf, state.elf32.scns) - == offsetof (Elf, state.elf64.scns)) - ? &elf->state.elf32.scns : &elf->state.elf64.scns))) - /* This is zeroth section. */ - first = true; - else - { - assert (elf->state.elf.scns_last->cnt > 1); - result->index = result[-1].index + 1; - } - } - else - { - /* We must allocate a new element. */ - Elf_ScnList *newp; - - assert (elf->state.elf.scnincr > 0); - - newp = (Elf_ScnList *) calloc (sizeof (Elf_ScnList) - + ((elf->state.elf.scnincr *= 2) - * sizeof (Elf_Scn)), 1); - if (newp == NULL) - { - __libelf_seterrno (ELF_E_NOMEM); - goto out; - } - - result = &newp->data[0]; - - /* One section used. */ - ++newp->cnt; - - /* This is the number of sections we allocated. */ - newp->max = elf->state.elf.scnincr; - - /* Remember the index for the first section in this block. */ - newp->data[0].index - = 1 + elf->state.elf.scns_last->data[elf->state.elf.scns_last->max - 1].index; - - /* Enqueue the new list element. */ - elf->state.elf.scns_last = elf->state.elf.scns_last->next = newp; - } - - /* Create a section header for this section. */ - if (elf->class == ELFCLASS32) - { - result->shdr.e32 = (Elf32_Shdr *) calloc (1, sizeof (Elf32_Shdr)); - if (result->shdr.e32 == NULL) - { - __libelf_seterrno (ELF_E_NOMEM); - goto out; - } - } - else - { - result->shdr.e64 = (Elf64_Shdr *) calloc (1, sizeof (Elf64_Shdr)); - if (result->shdr.e64 == NULL) - { - __libelf_seterrno (ELF_E_NOMEM); - goto out; - } - } - - result->elf = elf; - result->shdr_flags = ELF_F_DIRTY | ELF_F_MALLOCED; - result->list = elf->state.elf.scns_last; - - /* Initialize the data part. */ - result->data_read = 1; - if (unlikely (first)) - { - /* For the first section we mark the data as already available. */ - //result->data_list_rear = &result->data_list; - first = false; - goto again; - } - - result->flags |= ELF_F_DIRTY; - - out: - rwlock_unlock (elf->lock); - - return result; -} diff --git a/libelf/elf_next.c b/libelf/elf_next.c deleted file mode 100644 index 58a07753..00000000 --- a/libelf/elf_next.c +++ /dev/null @@ -1,53 +0,0 @@ -/* Advance in archive to next element. - Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Contributed by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <libelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -Elf_Cmd -elf_next (elf) - Elf *elf; -{ - Elf *parent; - - /* Be gratious, the specs demand it. */ - if (elf == NULL || elf->parent == NULL) - return ELF_C_NULL; - - /* We can be sure the parent is an archive. */ - parent = elf->parent; - assert (parent->kind == ELF_K_AR); - - /* Now advance the offset. */ - parent->state.ar.offset += (sizeof (struct ar_hdr) - + ((parent->state.ar.elf_ar_hdr.ar_size + 1) - & ~1l)); - - /* Get the next archive header. */ - if (__libelf_next_arhdr (parent) != 0) - return ELF_C_NULL; - - return elf->cmd; -} diff --git a/libelf/elf_nextscn.c b/libelf/elf_nextscn.c deleted file mode 100644 index de9df64b..00000000 --- a/libelf/elf_nextscn.c +++ /dev/null @@ -1,77 +0,0 @@ -/* Get next section. - Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. - Contributed by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <libelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -Elf_Scn * -elf_nextscn (elf, scn) - Elf *elf; - Elf_Scn *scn; -{ - Elf_Scn *result = NULL; - - if (elf == NULL) - return NULL; - - rwlock_rdlock (elf->lock); - - if (scn == NULL) - { - /* If no section handle is given return the first (not 0th) section. */ - if (elf->class == ELFCLASS32 - || (offsetof (Elf, state.elf32.scns) - == offsetof (Elf, state.elf64.scns))) - { - if (elf->state.elf32.scns.cnt > 1) - result = &elf->state.elf32.scns.data[1]; - } - else - { - if (elf->state.elf64.scns.cnt > 1) - result = &elf->state.elf64.scns.data[1]; - } - } - else - { - Elf_ScnList *list = scn->list; - - if (scn + 1 < &list->data[list->cnt]) - result = scn + 1; - else if (scn + 1 == &list->data[list->max] - && (list = list->next) != NULL) - { - /* If there is another element in the section list it must - have at least one entry. */ - assert (list->cnt > 0); - result = &list->data[0]; - } - } - - rwlock_unlock (elf->lock); - - return result; -} -INTDEF(elf_nextscn) diff --git a/libelf/elf_rand.c b/libelf/elf_rand.c deleted file mode 100644 index 76c3862f..00000000 --- a/libelf/elf_rand.c +++ /dev/null @@ -1,49 +0,0 @@ -/* Select specific element in archive. - Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Contributed by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -size_t -elf_rand (elf, offset) - Elf *elf; - size_t offset; -{ - /* Be gratious, the specs demand it. */ - if (elf == NULL || elf->kind != ELF_K_AR) - return 0; - - /* Save the old offset and set the offset. */ - elf->state.ar.offset = elf->start_offset + offset; - - /* Get the next archive header. */ - if (__libelf_next_arhdr (elf) != 0) - { - /* Mark the archive header as unusable. */ - elf->state.ar.elf_ar_hdr.ar_name = NULL; - return 0; - } - - return offset; -} diff --git a/libelf/elf_rawdata.c b/libelf/elf_rawdata.c deleted file mode 100644 index 547c37f4..00000000 --- a/libelf/elf_rawdata.c +++ /dev/null @@ -1,66 +0,0 @@ -/* Return raw section content. - Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Contributed by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdlib.h> - -#include "libelfP.h" - - -Elf_Data * -elf_rawdata (scn, data) - Elf_Scn *scn; - Elf_Data *data; -{ - if (scn == NULL || scn->elf->kind != ELF_K_ELF) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - /* If `data' is not NULL this means we are not addressing the initial - data in the file. But this also means this data is already read - (since otherwise it is not possible to have a valid `data' pointer) - and all the data structures are initialized as well. In this case - we can simply walk the list of data records. */ - if (data != NULL - || (scn->data_read != 0 && (scn->flags & ELF_F_FILEDATA) == 0)) - { - /* We don't allow accessing any but the data read from the file - as raw. */ - __libelf_seterrno (ELF_E_DATA_MISMATCH); - return NULL; - } - - /* If the data for this section was not yet initialized do it now. */ - if (scn->data_read == 0) - { - /* First thing we do is to read the data from the file. There is - always a file (or memory region) associated with this descriptor - since otherwise the `data_read' flag would be set. */ - if (__libelf_set_rawdata (scn) != 0) - /* Something went wrong. The error value is already set. */ - return NULL; - } - - /* Return the first data element in the list. */ - return &scn->rawdata.d; -} -INTDEF(elf_rawdata) diff --git a/libelf/elf_rawfile.c b/libelf/elf_rawfile.c deleted file mode 100644 index 3f6dc3c8..00000000 --- a/libelf/elf_rawfile.c +++ /dev/null @@ -1,51 +0,0 @@ -/* Retrieve uninterpreted file contents. - Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Contributed by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -char * -elf_rawfile (elf, ptr) - Elf *elf; - size_t *ptr; -{ - if (elf == NULL) - { - /* No valid descriptor. */ - __libelf_seterrno (ELF_E_INVALID_HANDLE); - error_out: - if (ptr != NULL) - *ptr = 0; - return NULL; - } - - /* If the file is not mmap'ed and not previously loaded, do it now. */ - if (elf->map_address == NULL && __libelf_readall (elf) == NULL) - goto error_out; - - if (ptr != NULL) - *ptr = elf->maximum_size; - - return (char *) elf->map_address + elf->start_offset; -} diff --git a/libelf/elf_readall.c b/libelf/elf_readall.c deleted file mode 100644 index d36da270..00000000 --- a/libelf/elf_readall.c +++ /dev/null @@ -1,116 +0,0 @@ -/* Read all of the file associated with the descriptor. - Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. - Contributed by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <unistd.h> - -#include "libelfP.h" -#include "common.h" - - -static void -set_address (Elf *elf, size_t offset) -{ - if (elf->kind == ELF_K_AR) - { - Elf *child = elf->state.ar.children; - - while (child != NULL) - { - if (child->map_address == NULL) - { - child->map_address = elf->map_address; - child->start_offset -= offset; - if (child->kind == ELF_K_AR) - child->state.ar.offset -= offset; - - set_address (child, offset); - } - - child = child->next; - } - } -} - - -char * -__libelf_readall (elf) - Elf *elf; -{ - /* Get the file. */ - rwlock_wrlock (elf->lock); - - if (elf->map_address == NULL && unlikely (elf->fildes == -1)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - rwlock_unlock (elf->lock); - return NULL; - } - - /* If the file is not mmap'ed and not previously loaded, do it now. */ - if (elf->map_address == NULL) - { - char *mem; - - /* If this is an archive and we have derived descriptors get the - locks for all of them. */ - libelf_acquire_all (elf); - - /* Allocate all the memory we need. */ - mem = (char *) malloc (elf->maximum_size); - if (mem != NULL) - { - /* Read the file content. */ - if ((size_t) pread (elf->fildes, mem, elf->maximum_size, - elf->start_offset) != elf->maximum_size) - { - /* Something went wrong. */ - __libelf_seterrno (ELF_E_READ_ERROR); - free (mem); - } - else - { - /* Remember the address. */ - elf->map_address = mem; - - /* Also remember that we allocated the memory. */ - elf->flags |= ELF_F_MALLOCED; - - /* Propagate the information down to all children and - their children. */ - set_address (elf, elf->start_offset); - - /* Correct the own offsets. */ - if (elf->kind == ELF_K_AR) - elf->state.ar.offset -= elf->start_offset; - elf->start_offset = 0; - } - } - else - __libelf_seterrno (ELF_E_NOMEM); - - /* Free the locks on the children. */ - libelf_release_all (elf); - } - - rwlock_unlock (elf->lock); - - return (char *) elf->map_address; -} diff --git a/libelf/elf_strptr.c b/libelf/elf_strptr.c deleted file mode 100644 index 327adfd1..00000000 --- a/libelf/elf_strptr.c +++ /dev/null @@ -1,122 +0,0 @@ -/* Return string pointer from string section. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004 Red Hat, Inc. - Contributed by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -char * -elf_strptr (elf, idx, offset) - Elf *elf; - size_t idx; - size_t offset; -{ - if (elf == NULL) - return NULL; - - if (elf->kind != ELF_K_ELF) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - rwlock_rdlock (elf->lock); - - char *result = NULL; - Elf_Scn *strscn; - - /* Find the section in the list. */ - Elf_ScnList *runp = (elf->class == ELFCLASS32 - || (offsetof (struct Elf, state.elf32.scns) - == offsetof (struct Elf, state.elf64.scns)) - ? &elf->state.elf32.scns : &elf->state.elf64.scns); - while (1) - { - if (idx < runp->max) - { - if (idx < runp->cnt) - strscn = &runp->data[idx]; - else - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - break; - } - - idx -= runp->max; - - runp = runp->next; - if (runp == NULL) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - } - - if (elf->class == ELFCLASS32) - { - if (unlikely (strscn->shdr.e32->sh_type != SHT_STRTAB)) - { - /* This is no string section. */ - __libelf_seterrno (ELF_E_INVALID_SECTION); - goto out; - } - - if (unlikely (offset >= strscn->shdr.e32->sh_size)) - { - /* The given offset is too big, it is beyond this section. */ - __libelf_seterrno (ELF_E_OFFSET_RANGE); - goto out; - } - } - else - { - if (unlikely (strscn->shdr.e64->sh_type != SHT_STRTAB)) - { - /* This is no string section. */ - __libelf_seterrno (ELF_E_INVALID_SECTION); - goto out; - } - - if (unlikely (offset >= strscn->shdr.e64->sh_size)) - { - /* The given offset is too big, it is beyond this section. */ - __libelf_seterrno (ELF_E_OFFSET_RANGE); - goto out; - } - } - - if (strscn->rawdata_base == NULL - /* Read the section data. */ - && __libelf_set_rawdata (strscn) != 0) - goto out; - - result = &strscn->rawdata_base[offset]; - - out: - rwlock_unlock (elf->lock); - - return result; -} -INTDEF(elf_strptr) diff --git a/libelf/elf_update.c b/libelf/elf_update.c deleted file mode 100644 index ece22251..00000000 --- a/libelf/elf_update.c +++ /dev/null @@ -1,173 +0,0 @@ -/* Update data structures for changes and write them out. - Copyright (C) 1999, 2000, 2001, 2002, 2004 Red Hat, Inc. - Contributed by Ulrich Drepper <drepper@redhat.com>, 1999. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libelf.h> -#include <unistd.h> -#include <sys/mman.h> - -#include "libelfP.h" - - -static off_t -write_file (Elf *elf, off_t size, int change_bo, size_t shnum) -{ - int class = elf->class; - - /* Adjust the size in any case. We do this even if we use `write'. - We cannot do this if this file is in an archive. We also don't - do it *now* if we are shortening the file since this would - prevent programs to use the data of the file in generating the - new file. We truncate the file later in this case. */ - if (elf->parent == NULL - && (elf->maximum_size == ~((size_t) 0) || size > elf->maximum_size) - && unlikely (ftruncate (elf->fildes, size) != 0)) - { - __libelf_seterrno (ELF_E_WRITE_ERROR); - return -1; - } - - /* Try to map the file if this isn't done yet. */ - if (elf->map_address == NULL && elf->cmd == ELF_C_WRITE_MMAP) - { - elf->map_address = mmap (NULL, size, PROT_READ | PROT_WRITE, - MAP_SHARED, elf->fildes, 0); - if (unlikely (elf->map_address == MAP_FAILED)) - elf->map_address = NULL; - } - - if (elf->map_address != NULL) - { - /* The file is mmaped. */ - if ((class == ELFCLASS32 - ? __elf32_updatemmap (elf, change_bo, shnum) - : __elf64_updatemmap (elf, change_bo, shnum)) != 0) - /* Some problem while writing. */ - size = -1; - } - else - { - /* The file is not mmaped. */ - if ((class == ELFCLASS32 - ? __elf32_updatefile (elf, change_bo, shnum) - : __elf64_updatefile (elf, change_bo, shnum)) != 0) - /* Some problem while writing. */ - size = -1; - } - - if (size != -1 - && elf->parent == NULL - && elf->maximum_size != ~((size_t) 0) - && size < elf->maximum_size - && unlikely (ftruncate (elf->fildes, size) != 0)) - { - __libelf_seterrno (ELF_E_WRITE_ERROR); - size = -1; - } - - if (size != -1 && elf->parent == NULL) - elf->maximum_size = size; - - return size; -} - - -off_t -elf_update (elf, cmd) - Elf *elf; - Elf_Cmd cmd; -{ - size_t shnum; - off_t size; - int change_bo = 0; - - if (cmd != ELF_C_NULL - && cmd != ELF_C_WRITE - && unlikely (cmd != ELF_C_WRITE_MMAP)) - { - __libelf_seterrno (ELF_E_INVALID_CMD); - return -1; - } - - if (elf == NULL) - return -1; - - if (elf->kind != ELF_K_ELF) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return -1; - } - - rwlock_rdlock (elf->lock); - - /* Make sure we have an ELF header. */ - if (elf->state.elf.ehdr == NULL) - { - __libelf_seterrno (ELF_E_WRONG_ORDER_EHDR); - size = -1; - goto out; - } - - /* Determine the number of sections. */ - shnum = (elf->state.elf.scns_last->cnt == 0 - ? 0 - : 1 + elf->state.elf.scns_last->data[elf->state.elf.scns_last->cnt - 1].index); - - /* Update the ELF descriptor. First, place the program header. It - will come right after the ELF header. The count the size of all - sections and finally place the section table. */ - size = (elf->class == ELFCLASS32 - ? __elf32_updatenull (elf, &change_bo, shnum) - : __elf64_updatenull (elf, &change_bo, shnum)); - if (likely (size != -1) - /* See whether we actually have to write out the data. */ - && (cmd == ELF_C_WRITE || cmd == ELF_C_WRITE_MMAP)) - { - if (elf->cmd != ELF_C_RDWR - && elf->cmd != ELF_C_RDWR_MMAP - && elf->cmd != ELF_C_WRITE - && unlikely (elf->cmd != ELF_C_WRITE_MMAP)) - { - __libelf_seterrno (ELF_E_UPDATE_RO); - size = -1; - } - else if (unlikely (elf->fildes == -1)) - { - /* We closed the file already. */ - __libelf_seterrno (ELF_E_FD_DISABLED); - size = -1; - } - else - { - if (elf->parent != NULL) - { - extern int puts (const char *); - puts ("this is an archive member"); - } - - size = write_file (elf, size, change_bo, shnum); - } - } - - out: - rwlock_unlock (elf->lock); - - return size; -} diff --git a/libelf/elf_version.c b/libelf/elf_version.c deleted file mode 100644 index 16bfce10..00000000 --- a/libelf/elf_version.c +++ /dev/null @@ -1,58 +0,0 @@ -/* Coordinate ELF library and application versions. - Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Contributed by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libelfP.h> - - -/* Is the version initialized? */ -int __libelf_version_initialized; - -/* Currently selected version. */ -unsigned int __libelf_version = EV_CURRENT; - - -unsigned int -elf_version (version) - unsigned int version; -{ - if (version == EV_NONE) - return __libelf_version; - - if (likely (version < EV_NUM)) - { - /* Phew, we know this version. */ - unsigned int last_version = __libelf_version; - - /* Store the new version. */ - __libelf_version = version; - - /* Signal that the version is now initialized. */ - __libelf_version_initialized = 1; - - /* And return the last version. */ - return last_version; - } - - /* We cannot handle this version. */ - __libelf_seterrno (ELF_E_UNKNOWN_VERSION); - return EV_NONE; -} -INTDEF(elf_version) diff --git a/libelf/exttypes.h b/libelf/exttypes.h deleted file mode 100644 index b6bde829..00000000 --- a/libelf/exttypes.h +++ /dev/null @@ -1,86 +0,0 @@ -/* External ELF types. - Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Contributed by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef _EXTTYPES_H -#define _EXTTYPES_H 1 - -/* Integral types. */ -typedef char Elf32_Ext_Addr[ELF32_FSZ_ADDR]; -typedef char Elf32_Ext_Off[ELF32_FSZ_OFF]; -typedef char Elf32_Ext_Half[ELF32_FSZ_HALF]; -typedef char Elf32_Ext_Sword[ELF32_FSZ_SWORD]; -typedef char Elf32_Ext_Word[ELF32_FSZ_WORD]; -typedef char Elf32_Ext_Sxword[ELF32_FSZ_SXWORD]; -typedef char Elf32_Ext_Xword[ELF32_FSZ_XWORD]; - -typedef char Elf64_Ext_Addr[ELF64_FSZ_ADDR]; -typedef char Elf64_Ext_Off[ELF64_FSZ_OFF]; -typedef char Elf64_Ext_Half[ELF64_FSZ_HALF]; -typedef char Elf64_Ext_Sword[ELF64_FSZ_SWORD]; -typedef char Elf64_Ext_Word[ELF64_FSZ_WORD]; -typedef char Elf64_Ext_Sxword[ELF64_FSZ_SXWORD]; -typedef char Elf64_Ext_Xword[ELF64_FSZ_XWORD]; - - -/* Define the composed types. */ -#define START(Bits, Name, EName) typedef struct { -#define END(Bits, Name) } ElfW2(Bits, Name) -#define TYPE_NAME(Type, Name) Type Name; -#define TYPE_EXTRA(Text) Text -#define TYPE_XLATE(Text) - -/* Get the abstract definitions. */ -#include "abstract.h" - -/* And define the types. */ -Ehdr32 (Ext_); -Phdr32 (Ext_); -Shdr32 (Ext_); -Sym32 (Ext_); -Rel32 (Ext_); -Rela32 (Ext_); -Note32 (Ext_); -Dyn32 (Ext_); -Verdef32 (Ext_); -Verdaux32 (Ext_); -Verneed32 (Ext_); -Vernaux32 (Ext_); -Syminfo32 (Ext_); -Move32 (Ext_); - -Ehdr64 (Ext_); -Phdr64 (Ext_); -Shdr64 (Ext_); -Sym64 (Ext_); -Rel64 (Ext_); -Rela64 (Ext_); -Note64 (Ext_); -Dyn64 (Ext_); -Verdef64 (Ext_); -Verdaux64 (Ext_); -Verneed64 (Ext_); -Vernaux64 (Ext_); -Syminfo64 (Ext_); -Move64 (Ext_); - -#undef START -#undef END -#undef TYPE_NAME -#undef TYPE_EXTRA -#undef TYPE_XLATE - -#endif /* exttypes.h */ diff --git a/libelf/gelf.h b/libelf/gelf.h deleted file mode 100644 index 9d9b3239..00000000 --- a/libelf/gelf.h +++ /dev/null @@ -1,304 +0,0 @@ -/* This file defines generic ELF types, structures, and macros. - Copyright (C) 1999, 2000, 2001, 2002, 2004 Red Hat, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef _GELF_H -#define _GELF_H 1 - -#include <libelf.h> - - -#ifdef __cplusplus -extern "C" { -#endif - -/* Class independent type definitions. Correctly speaking this is not - true. We assume that 64-bit binaries are the largest class and - therefore all other classes can be represented without loss. */ - -/* Type for a 16-bit quantity. */ -typedef Elf64_Half GElf_Half; - -/* Types for signed and unsigned 32-bit quantities. */ -typedef Elf64_Word GElf_Word; -typedef Elf64_Sword GElf_Sword; - -/* Types for signed and unsigned 64-bit quantities. */ -typedef Elf64_Xword GElf_Xword; -typedef Elf64_Sxword GElf_Sxword; - -/* Type of addresses. */ -typedef Elf64_Addr GElf_Addr; - -/* Type of file offsets. */ -typedef Elf64_Off GElf_Off; - - -/* The ELF file header. This appears at the start of every ELF file. */ -typedef Elf64_Ehdr GElf_Ehdr; - -/* Section header. */ -typedef Elf64_Shdr GElf_Shdr; - -/* Section index. */ -/* XXX This should probably be a larger type in preparation of times when - regular section indices can be larger. */ -typedef Elf64_Section GElf_Section; - -/* Symbol table entry. */ -typedef Elf64_Sym GElf_Sym; - -/* The syminfo section if available contains additional information about - every dynamic symbol. */ -typedef Elf64_Syminfo GElf_Syminfo; - -/* Relocation table entry without addend (in section of type SHT_REL). */ -typedef Elf64_Rel GElf_Rel; - -/* Relocation table entry with addend (in section of type SHT_RELA). */ -typedef Elf64_Rela GElf_Rela; - -/* Program segment header. */ -typedef Elf64_Phdr GElf_Phdr; - -/* Dynamic section entry. */ -typedef Elf64_Dyn GElf_Dyn; - - -/* Version definition sections. */ -typedef Elf64_Verdef GElf_Verdef; - -/* Auxialiary version information. */ -typedef Elf64_Verdaux GElf_Verdaux; - -/* Version dependency section. */ -typedef Elf64_Verneed GElf_Verneed; - -/* Auxiliary needed version information. */ -typedef Elf64_Vernaux GElf_Vernaux; - - -/* Type for version symbol information. */ -typedef Elf64_Versym GElf_Versym; - - -/* Auxiliary vector. */ -typedef Elf64_auxv_t GElf_auxv_t; - - -/* Note section contents. */ -typedef Elf64_Nhdr GElf_Nhdr; - - -/* Move structure. */ -typedef Elf64_Move GElf_Move; - - -/* Library list structure. */ -typedef Elf64_Lib GElf_Lib; - - -/* How to extract and insert information held in the st_info field. */ - -#define GELF_ST_BIND(val) ELF64_ST_BIND (val) -#define GELF_ST_TYPE(val) ELF64_ST_TYPE (val) -#define GELF_ST_INFO(bind, type) ELF64_ST_INFO (bind, type) - -/* How to extract information held in the st_other field. */ - -#define GELF_ST_VISIBILITY(val) ELF64_ST_VISIBILITY (val) - - -/* How to extract and insert information held in the r_info field. */ - -#define GELF_R_SYM(info) ELF64_R_SYM (info) -#define GELF_R_TYPE(info) ELF64_R_TYPE (info) -#define GELF_R_INFO(sym, type) ELF64_R_INFO (sym, type) - - -/* How to extract and insert information held in the m_info field. */ -#define GELF_M_SYM(info) ELF64_M_SYM (info) -#define GELF_M_SIZE(info) ELF64_M_SIZE (info) -#define GELF_M_INFO(sym, size) ELF64_M_INFO (sym, size) - - -/* Get class of the file associated with ELF. */ -extern int gelf_getclass (Elf *__elf); - - -/* Return size of array of COUNT elemeents of the type denoted by TYPE - in the external representation. The binary class is taken from ELF. - The result is based on version VERSION of the ELF standard. */ -extern size_t gelf_fsize (Elf *__elf, Elf_Type __type, size_t __count, - unsigned int __version); - -/* Retrieve object file header. */ -extern GElf_Ehdr *gelf_getehdr (Elf *__elf, GElf_Ehdr *__dest); - -/* Update the ELF header. */ -extern int gelf_update_ehdr (Elf *__elf, GElf_Ehdr *__src); - -/* Create new ELF header if none exists. */ -extern unsigned long int gelf_newehdr (Elf *__elf, int __class); - -/* Retrieve section header. */ -extern GElf_Shdr *gelf_getshdr (Elf_Scn *__scn, GElf_Shdr *__dst); - -/* Update section header. */ -extern int gelf_update_shdr (Elf_Scn *__scn, GElf_Shdr *__src); - -/* Retrieve program header table entry. */ -extern GElf_Phdr *gelf_getphdr (Elf *__elf, int __ndx, GElf_Phdr *__dst); - -/* Update the program header. */ -extern int gelf_update_phdr (Elf *__elf, int __ndx, GElf_Phdr *__src); - -/* Create new program header with PHNUM entries. */ -extern unsigned long int gelf_newphdr (Elf *__elf, size_t __phnum); - - -/* Convert data structure from the representation in the file represented - by ELF to their memory representation. */ -extern Elf_Data *gelf_xlatetom (Elf *__elf, Elf_Data *__dest, - const Elf_Data *__src, unsigned int __encode); - -/* Convert data structure from to the representation in memory - represented by ELF file representation. */ -extern Elf_Data *gelf_xlatetof (Elf *__elf, Elf_Data *__dest, - const Elf_Data *__src, unsigned int __encode); - - -/* Retrieve REL relocation info at the given index. */ -extern GElf_Rel *gelf_getrel (Elf_Data *__data, int __ndx, GElf_Rel *__dst); - -/* Retrieve RELA relocation info at the given index. */ -extern GElf_Rela *gelf_getrela (Elf_Data *__data, int __ndx, GElf_Rela *__dst); - -/* Update REL relocation information at given index. */ -extern int gelf_update_rel (Elf_Data *__dst, int __ndx, GElf_Rel *__src); - -/* Update RELA relocation information at given index. */ -extern int gelf_update_rela (Elf_Data *__dst, int __ndx, GElf_Rela *__src); - - -/* Retrieve symbol information from the symbol table at the given index. */ -extern GElf_Sym *gelf_getsym (Elf_Data *__data, int __ndx, GElf_Sym *__dst); - -/* Update symbol information in the symbol table at the given index. */ -extern int gelf_update_sym (Elf_Data *__data, int __ndx, GElf_Sym *__src); - - -/* Retrieve symbol information and separate section index from the - symbol table at the given index. */ -extern GElf_Sym *gelf_getsymshndx (Elf_Data *__symdata, Elf_Data *__shndxdata, - int __ndx, GElf_Sym *__sym, - Elf32_Word *__xshndx); - -/* Update symbol information and separate section index in the symbol - table at the given index. */ -extern int gelf_update_symshndx (Elf_Data *__symdata, Elf_Data *__shndxdata, - int __ndx, GElf_Sym *__sym, - Elf32_Word __xshndx); - - -/* Retrieve additional symbol information from the symbol table at the - given index. */ -extern GElf_Syminfo *gelf_getsyminfo (Elf_Data *__data, int __ndx, - GElf_Syminfo *__dst); - -/* Update additional symbol information in the symbol table at the - given index. */ -extern int gelf_update_syminfo (Elf_Data *__data, int __ndx, - GElf_Syminfo *__src); - - -/* Get information from dynamic table at the given index. */ -extern GElf_Dyn *gelf_getdyn (Elf_Data *__data, int __ndx, GElf_Dyn *__dst); - -/* Update information in dynamic table at the given index. */ -extern int gelf_update_dyn (Elf_Data *__dst, int __ndx, GElf_Dyn *__src); - - -/* Get move structure at the given index. */ -extern GElf_Move *gelf_getmove (Elf_Data *__data, int __ndx, GElf_Move *__dst); - -/* Update move structure at the given index. */ -extern int gelf_update_move (Elf_Data *__data, int __ndx, - GElf_Move *__src); - - -/* Get library from table at the given index. */ -extern GElf_Lib *gelf_getlib (Elf_Data *__data, int __ndx, GElf_Lib *__dst); - -/* Update library in table at the given index. */ -extern int gelf_update_lib (Elf_Data *__data, int __ndx, GElf_Lib *__src); - - - -/* Retrieve symbol version information at given index. */ -extern GElf_Versym *gelf_getversym (Elf_Data *__data, int __ndx, - GElf_Versym *__dst); - -/* Update symbol version information. */ -extern int gelf_update_versym (Elf_Data *__data, int __ndx, - GElf_Versym *__src); - - -/* Retrieve required symbol version information at given offset. */ -extern GElf_Verneed *gelf_getverneed (Elf_Data *__data, int __offset, - GElf_Verneed *__dst); - -/* Update required symbol version information. */ -extern int gelf_update_verneed (Elf_Data *__data, int __offset, - GElf_Verneed *__src); - -/* Retrieve additional required symbol version information at given offset. */ -extern GElf_Vernaux *gelf_getvernaux (Elf_Data *__data, int __offset, - GElf_Vernaux *__dst); - -/* Update additional required symbol version information. */ -extern int gelf_update_vernaux (Elf_Data *__data, int __offset, - GElf_Vernaux *__src); - - -/* Retrieve symbol version definition information at given offset. */ -extern GElf_Verdef *gelf_getverdef (Elf_Data *__data, int __offset, - GElf_Verdef *__dst); - -/* Update symbol version definition information. */ -extern int gelf_update_verdef (Elf_Data *__data, int __offset, - GElf_Verdef *__src); - -/* Retrieve additional symbol version definition information at given - offset. */ -extern GElf_Verdaux *gelf_getverdaux (Elf_Data *__data, int __offset, - GElf_Verdaux *__dst); - -/* Update additional symbol version definition information. */ -extern int gelf_update_verdaux (Elf_Data *__data, int __offset, - GElf_Verdaux *__src); - - -/* Retrieve uninterpreted chunk of the file contents. */ -extern char *gelf_rawchunk (Elf *__elf, GElf_Off __offset, GElf_Word __size); - -/* Release uninterpreted chunk of the file contents. */ -extern void gelf_freechunk (Elf *__elf, char *__ptr); - -#ifdef __cplusplus -} -#endif - -#endif /* gelf.h */ diff --git a/libelf/gelf_checksum.c b/libelf/gelf_checksum.c deleted file mode 100644 index bbd04df9..00000000 --- a/libelf/gelf_checksum.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Convert from file to memory representation. Generic ELF version. - Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <gelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -long int -gelf_checksum (elf) - Elf *elf; -{ - if (elf == NULL) - return -1l; - - return (elf->class == ELFCLASS32 - ? INTUSE(elf32_checksum) (elf) : INTUSE(elf64_checksum) (elf)); -} diff --git a/libelf/gelf_freechunk.c b/libelf/gelf_freechunk.c deleted file mode 100644 index c47ec9aa..00000000 --- a/libelf/gelf_freechunk.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Release uninterpreted chunk of the file contents. - Copyright (C) 2002 Red Hat, Inc. - Contributed by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libelf.h> -#include <stddef.h> -#include <stdlib.h> - -#include "libelfP.h" - - -void -gelf_freechunk (elf, ptr) - Elf *elf; - char *ptr; -{ - if (elf == NULL) - /* No valid descriptor. */ - return; - - /* We do not have to do anything if the pointer returned by - gelf_rawchunk points into the memory allocated for the ELF - descriptor. */ - if (ptr < (char *) elf->map_address + elf->start_offset - || ptr >= ((char *) elf->map_address + elf->start_offset - + elf->maximum_size)) - free (ptr); -} diff --git a/libelf/gelf_fsize.c b/libelf/gelf_fsize.c deleted file mode 100644 index 0432ba0b..00000000 --- a/libelf/gelf_fsize.c +++ /dev/null @@ -1,96 +0,0 @@ -/* Return the size of an object file type. - Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <gelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -/* These are the sizes for all the known types. */ -const size_t __libelf_type_sizes[EV_NUM - 1][ELFCLASSNUM - 1][ELF_T_NUM] = -{ - /* We have no entry for EV_NONE siince we have to set an error. */ - [EV_CURRENT - 1] = { - [ELFCLASS32 - 1] = { -#define TYPE_SIZES(LIBELFBITS) \ - [ELF_T_ADDR] = ELFW2(LIBELFBITS, FSZ_ADDR), \ - [ELF_T_OFF] = ELFW2(LIBELFBITS, FSZ_OFF), \ - [ELF_T_BYTE] = 1, \ - [ELF_T_HALF] = ELFW2(LIBELFBITS, FSZ_HALF), \ - [ELF_T_WORD] = ELFW2(LIBELFBITS, FSZ_WORD), \ - [ELF_T_SWORD] = ELFW2(LIBELFBITS, FSZ_SWORD), \ - [ELF_T_XWORD] = ELFW2(LIBELFBITS, FSZ_XWORD), \ - [ELF_T_SXWORD] = ELFW2(LIBELFBITS, FSZ_SXWORD), \ - [ELF_T_EHDR] = sizeof (ElfW2(LIBELFBITS, Ext_Ehdr)), \ - [ELF_T_SHDR] = sizeof (ElfW2(LIBELFBITS, Ext_Shdr)), \ - [ELF_T_SYM] = sizeof (ElfW2(LIBELFBITS, Ext_Sym)), \ - [ELF_T_REL] = sizeof (ElfW2(LIBELFBITS, Ext_Rel)), \ - [ELF_T_RELA] = sizeof (ElfW2(LIBELFBITS, Ext_Rela)), \ - [ELF_T_PHDR] = sizeof (ElfW2(LIBELFBITS, Ext_Phdr)), \ - [ELF_T_DYN] = sizeof (ElfW2(LIBELFBITS, Ext_Dyn)), \ - [ELF_T_VDEF] = sizeof (ElfW2(LIBELFBITS, Ext_Verdef)), \ - [ELF_T_VDAUX] = sizeof (ElfW2(LIBELFBITS, Ext_Verdaux)), \ - [ELF_T_VNEED] = sizeof (ElfW2(LIBELFBITS, Ext_Verneed)), \ - [ELF_T_VNAUX] = sizeof (ElfW2(LIBELFBITS, Ext_Vernaux)), \ - [ELF_T_NHDR] = sizeof (ElfW2(LIBELFBITS, Ext_Nhdr)), \ - [ELF_T_SYMINFO] = sizeof (ElfW2(LIBELFBITS, Ext_Syminfo)), \ - [ELF_T_MOVE] = sizeof (ElfW2(LIBELFBITS, Ext_Move)) - TYPE_SIZES (32) - }, - [ELFCLASS64 - 1] = { - TYPE_SIZES (64) - } - } -}; - - -size_t -gelf_fsize (elf, type, count, version) - Elf *elf; - Elf_Type type; - size_t count; - unsigned int version; -{ - /* We do not have differences between file and memory sizes. Better - not since otherwise `mmap' would not work. */ - if (elf == NULL) - return 0; - - if (version == EV_NONE || version >= EV_NUM) - { - __libelf_seterrno (ELF_E_UNKNOWN_VERSION); - return 0; - } - - if (type >= ELF_T_NUM) - { - __libelf_seterrno (ELF_E_UNKNOWN_TYPE); - return 0; - } - -#if EV_NUM != 2 - return count * __libelf_type_sizes[version - 1][elf->class - 1][type]; -#else - return count * __libelf_type_sizes[0][elf->class - 1][type]; -#endif -} -INTDEF(gelf_fsize) diff --git a/libelf/gelf_getclass.c b/libelf/gelf_getclass.c deleted file mode 100644 index 2ae1b329..00000000 --- a/libelf/gelf_getclass.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Return the class of file associated with the descriptor. - Copyright (C) 1999, 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1999. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <gelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -int -gelf_getclass (elf) - Elf *elf; -{ - return elf == NULL || elf->kind != ELF_K_ELF ? ELFCLASSNONE : elf->class; -} diff --git a/libelf/gelf_getdyn.c b/libelf/gelf_getdyn.c deleted file mode 100644 index d75744ea..00000000 --- a/libelf/gelf_getdyn.c +++ /dev/null @@ -1,99 +0,0 @@ -/* Get information from dynamic table at the given index. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -GElf_Dyn * -gelf_getdyn (data, ndx, dst) - Elf_Data *data; - int ndx; - GElf_Dyn *dst; -{ - Elf_Data_Scn *data_scn = (Elf_Data_Scn *) data; - GElf_Dyn *result = NULL; - Elf *elf; - - if (data_scn == NULL) - return NULL; - - if (unlikely (data_scn->d.d_type != ELF_T_DYN)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - elf = data_scn->s->elf; - - rwlock_rdlock (elf->lock); - - /* This is the one place where we have to take advantage of the fact - that an `Elf_Data' pointer is also a pointer to `Elf_Data_Scn'. - The interface is broken so that it requires this hack. */ - if (elf->class == ELFCLASS32) - { - Elf32_Dyn *src; - - /* Here it gets a bit more complicated. The format of the symbol - table entries has to be adopted. The user better has provided - a buffer where we can store the information. While copying the - data we are converting the format. */ - if (unlikely ((ndx + 1) * sizeof (Elf32_Dyn) > data_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - src = &((Elf32_Dyn *) data_scn->d.d_buf)[ndx]; - - /* This might look like a simple copy operation but it's - not. There are zero- and sign-extensions going on. */ - dst->d_tag = src->d_tag; - /* It OK to copy `d_val' since `d_ptr' has the same size. */ - dst->d_un.d_val = src->d_un.d_val; - } - else - { - /* If this is a 64 bit object it's easy. */ - assert (sizeof (GElf_Dyn) == sizeof (Elf64_Dyn)); - - /* The data is already in the correct form. Just make sure the - index is OK. */ - if (unlikely ((ndx + 1) * sizeof (GElf_Dyn) > data_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - *dst = ((GElf_Dyn *) data_scn->d.d_buf)[ndx]; - } - - result = dst; - - out: - rwlock_unlock (elf->lock); - - return result; -} diff --git a/libelf/gelf_getehdr.c b/libelf/gelf_getehdr.c deleted file mode 100644 index 6b926442..00000000 --- a/libelf/gelf_getehdr.c +++ /dev/null @@ -1,88 +0,0 @@ -/* Get ELF header. - Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -GElf_Ehdr * -gelf_getehdr (elf, dest) - Elf *elf; - GElf_Ehdr *dest; -{ - GElf_Ehdr *result = NULL; - - if (elf == NULL) - return NULL; - - if (unlikely (elf->kind != ELF_K_ELF)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - rwlock_rdlock (elf->lock); - - if (elf->class == ELFCLASS32) - { - Elf32_Ehdr *ehdr = elf->state.elf32.ehdr; - - /* Maybe no ELF header was created yet. */ - if (ehdr == NULL) - __libelf_seterrno (ELF_E_WRONG_ORDER_EHDR); - else - { - /* Convert the 32-bit struct to an 64-bit one. */ - memcpy (dest->e_ident, ehdr->e_ident, EI_NIDENT); -#define COPY(name) \ - dest->name = ehdr->name - COPY (e_type); - COPY (e_machine); - COPY (e_version); - COPY (e_entry); - COPY (e_phoff); - COPY (e_shoff); - COPY (e_flags); - COPY (e_ehsize); - COPY (e_phentsize); - COPY (e_phnum); - COPY (e_shentsize); - COPY (e_shnum); - COPY (e_shstrndx); - - result = dest; - } - } - else - { - /* Maybe no ELF header was created yet. */ - if (elf->state.elf64.ehdr == NULL) - __libelf_seterrno (ELF_E_WRONG_ORDER_EHDR); - else - result = memcpy (dest, elf->state.elf64.ehdr, sizeof (*dest)); - } - - rwlock_unlock (elf->lock); - - return result; -} diff --git a/libelf/gelf_getlib.c b/libelf/gelf_getlib.c deleted file mode 100644 index 9366c79a..00000000 --- a/libelf/gelf_getlib.c +++ /dev/null @@ -1,68 +0,0 @@ -/* Get library from table at the given index. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -GElf_Lib * -gelf_getlib (data, ndx, dst) - Elf_Data *data; - int ndx; - GElf_Lib *dst; -{ - if (data == NULL) - return NULL; - - if (unlikely (data->d_type != ELF_T_LIB)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - Elf_Data_Scn *data_scn = (Elf_Data_Scn *) data; - - rwlock_rdlock (data_scn->s->elf->lock); - - /* The on disk format of Elf32_Lib and Elf64_Lib is identical. So - we can simplify things significantly. */ - assert (sizeof (GElf_Lib) == sizeof (Elf32_Lib)); - assert (sizeof (GElf_Lib) == sizeof (Elf64_Lib)); - - /* The data is already in the correct form. Just make sure the - index is OK. */ - GElf_Lib *result = NULL; - if (unlikely ((ndx + 1) * sizeof (GElf_Lib) > data->d_size)) - __libelf_seterrno (ELF_E_INVALID_INDEX); - else - { - *dst = ((GElf_Lib *) data->d_buf)[ndx]; - - result = dst; - } - - rwlock_unlock (data_scn->s->elf->lock); - - return result; -} diff --git a/libelf/gelf_getmove.c b/libelf/gelf_getmove.c deleted file mode 100644 index a3b96bbc..00000000 --- a/libelf/gelf_getmove.c +++ /dev/null @@ -1,70 +0,0 @@ -/* Get move structure at the given index. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <gelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -GElf_Move * -gelf_getmove (data, ndx, dst) - Elf_Data *data; - int ndx; - GElf_Move *dst; -{ - GElf_Move *result = NULL; - Elf *elf; - - if (data == NULL) - return NULL; - - if (unlikely (data->d_type != ELF_T_MOVE)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - /* The types for 32 and 64 bit are the same. Lucky us. */ - assert (sizeof (GElf_Move) == sizeof (Elf32_Move)); - assert (sizeof (GElf_Move) == sizeof (Elf64_Move)); - - /* The data is already in the correct form. Just make sure the - index is OK. */ - if (unlikely ((ndx + 1) * sizeof (GElf_Move) > data->d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - elf = ((Elf_Data_Scn *) data)->s->elf; - rwlock_rdlock (elf->lock); - - *dst = ((GElf_Move *) data->d_buf)[ndx]; - - rwlock_unlock (elf->lock); - - result = dst; - - out: - return result; -} diff --git a/libelf/gelf_getphdr.c b/libelf/gelf_getphdr.c deleted file mode 100644 index fd033e56..00000000 --- a/libelf/gelf_getphdr.c +++ /dev/null @@ -1,117 +0,0 @@ -/* Return program header table entry. - Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -GElf_Phdr * -gelf_getphdr (elf, ndx, dst) - Elf *elf; - int ndx; - GElf_Phdr *dst; -{ - GElf_Phdr *result = NULL; - - if (elf == NULL) - return NULL; - - if (unlikely (elf->kind != ELF_K_ELF)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - if (dst == NULL) - { - __libelf_seterrno (ELF_E_INVALID_OPERAND); - return NULL; - } - - rwlock_rdlock (elf->lock); - - if (elf->class == ELFCLASS32) - { - /* Copy the elements one-by-one. */ - Elf32_Phdr *phdr = elf->state.elf32.phdr; - - if (phdr == NULL) - { - phdr = INTUSE(elf32_getphdr) (elf); - if (phdr == NULL) - /* The error number is already set. */ - goto out; - } - - /* Test whether the index is ok. */ - if (ndx >= elf->state.elf32.ehdr->e_phnum) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - /* We know the result now. */ - result = dst; - - /* Now correct the pointer to point to the correct element. */ - phdr += ndx; - -#define COPY(Name) result->Name = phdr->Name - COPY (p_type); - COPY (p_offset); - COPY (p_vaddr); - COPY (p_paddr); - COPY (p_filesz); - COPY (p_memsz); - COPY (p_flags); - COPY (p_align); - } - else - { - /* Copy the elements one-by-one. */ - Elf64_Phdr *phdr = elf->state.elf64.phdr; - - if (phdr == NULL) - { - phdr = INTUSE(elf64_getphdr) (elf); - if (phdr == NULL) - /* The error number is already set. */ - goto out; - } - - /* Test whether the index is ok. */ - if (ndx >= elf->state.elf64.ehdr->e_phnum) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - /* We only have to copy the data. */ - result = memcpy (dst, phdr + ndx, sizeof (GElf_Phdr)); - } - - out: - rwlock_unlock (elf->lock); - - return result; -} diff --git a/libelf/gelf_getrel.c b/libelf/gelf_getrel.c deleted file mode 100644 index 7dc78a7e..00000000 --- a/libelf/gelf_getrel.c +++ /dev/null @@ -1,96 +0,0 @@ -/* Get REL relocation information at given index. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -GElf_Rel * -gelf_getrel (data, ndx, dst) - Elf_Data *data; - int ndx; - GElf_Rel *dst; -{ - Elf_Data_Scn *data_scn = (Elf_Data_Scn *) data; - Elf_Scn *scn; - GElf_Rel *result; - - if (data_scn == NULL) - return NULL; - - if (unlikely (ndx < 0)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - return NULL; - } - - if (unlikely (data_scn->d.d_type != ELF_T_REL)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - /* This is the one place where we have to take advantage of the fact - that an `Elf_Data' pointer is also a pointer to `Elf_Data_Scn'. - The interface is broken so that it requires this hack. */ - scn = data_scn->s; - - rwlock_rdlock (scn->elf->lock); - - if (scn->elf->class == ELFCLASS32) - { - /* We have to convert the data. */ - if (unlikely ((ndx + 1) * sizeof (Elf32_Rel) > data_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - result = NULL; - } - else - { - Elf32_Rel *src = &((Elf32_Rel *) data_scn->d.d_buf)[ndx]; - - dst->r_offset = src->r_offset; - dst->r_info = GELF_R_INFO (ELF32_R_SYM (src->r_info), - ELF32_R_TYPE (src->r_info)); - - result = dst; - } - } - else - { - /* Simply copy the data after we made sure we are actually getting - correct data. */ - if (unlikely ((ndx + 1) * sizeof (Elf64_Rel) > data_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - result = NULL; - } - else - result = memcpy (dst, &((Elf64_Rel *) data_scn->d.d_buf)[ndx], - sizeof (Elf64_Rel)); - } - - rwlock_unlock (scn->elf->lock); - - return result; -} diff --git a/libelf/gelf_getrela.c b/libelf/gelf_getrela.c deleted file mode 100644 index fb94b008..00000000 --- a/libelf/gelf_getrela.c +++ /dev/null @@ -1,97 +0,0 @@ -/* Get RELA relocation information at given index. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -GElf_Rela * -gelf_getrela (data, ndx, dst) - Elf_Data *data; - int ndx; - GElf_Rela *dst; -{ - Elf_Data_Scn *data_scn = (Elf_Data_Scn *) data; - Elf_Scn *scn; - GElf_Rela *result; - - if (data_scn == NULL) - return NULL; - - if (unlikely (ndx < 0)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - return NULL; - } - - if (unlikely (data_scn->d.d_type != ELF_T_RELA)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - /* This is the one place where we have to take advantage of the fact - that an `Elf_Data' pointer is also a pointer to `Elf_Data_Scn'. - The interface is broken so that it requires this hack. */ - scn = data_scn->s; - - rwlock_rdlock (scn->elf->lock); - - if (scn->elf->class == ELFCLASS32) - { - /* We have to convert the data. */ - if (unlikely ((ndx + 1) * sizeof (Elf32_Rela) > data_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - result = NULL; - } - else - { - Elf32_Rela *src = &((Elf32_Rela *) data_scn->d.d_buf)[ndx]; - - dst->r_offset = src->r_offset; - dst->r_info = GELF_R_INFO (ELF32_R_SYM (src->r_info), - ELF32_R_TYPE (src->r_info)); - dst->r_addend = src->r_addend; - - result = dst; - } - } - else - { - /* Simply copy the data after we made sure we are actually getting - correct data. */ - if (unlikely ((ndx + 1) * sizeof (Elf64_Rela) > data_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - result = NULL; - } - else - result = memcpy (dst, &((Elf64_Rela *) data_scn->d.d_buf)[ndx], - sizeof (Elf64_Rela)); - } - - rwlock_unlock (scn->elf->lock); - - return result; -} diff --git a/libelf/gelf_getshdr.c b/libelf/gelf_getshdr.c deleted file mode 100644 index 4ea5886d..00000000 --- a/libelf/gelf_getshdr.c +++ /dev/null @@ -1,91 +0,0 @@ -/* Return section header. - Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -GElf_Shdr * -gelf_getshdr (scn, dst) - Elf_Scn *scn; - GElf_Shdr *dst; -{ - GElf_Shdr *result = NULL; - - if (scn == NULL) - return NULL; - - if (dst == NULL) - { - __libelf_seterrno (ELF_E_INVALID_OPERAND); - return NULL; - } - - rwlock_rdlock (scn->elf->lock); - - if (scn->elf->class == ELFCLASS32) - { - /* Copy the elements one-by-one. */ - Elf32_Shdr *shdr = scn->shdr.e32 ?: INTUSE(elf32_getshdr) (scn); - - if (shdr == NULL) - { - __libelf_seterrno (ELF_E_INVALID_OPERAND); - goto out; - } - -#define COPY(name) \ - dst->name = shdr->name - COPY (sh_name); - COPY (sh_type); - COPY (sh_flags); - COPY (sh_addr); - COPY (sh_offset); - COPY (sh_size); - COPY (sh_link); - COPY (sh_info); - COPY (sh_addralign); - COPY (sh_entsize); - - result = dst; - } - else - { - Elf64_Shdr *shdr = scn->shdr.e64 ?: INTUSE(elf64_getshdr) (scn); - - if (shdr == NULL) - { - __libelf_seterrno (ELF_E_INVALID_OPERAND); - goto out; - } - - /* We only have to copy the data. */ - result = memcpy (dst, shdr, sizeof (GElf_Shdr)); - } - - out: - rwlock_unlock (scn->elf->lock); - - return result; -} -INTDEF(gelf_getshdr) diff --git a/libelf/gelf_getsym.c b/libelf/gelf_getsym.c deleted file mode 100644 index 90536c60..00000000 --- a/libelf/gelf_getsym.c +++ /dev/null @@ -1,105 +0,0 @@ -/* Get symbol information from symbol table at the given index. - Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1999. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -GElf_Sym * -gelf_getsym (data, ndx, dst) - Elf_Data *data; - int ndx; - GElf_Sym *dst; -{ - Elf_Data_Scn *data_scn = (Elf_Data_Scn *) data; - GElf_Sym *result = NULL; - - if (data == NULL) - return NULL; - - if (unlikely (data->d_type != ELF_T_SYM)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - rwlock_rdlock (data_scn->s->elf->lock); - - /* This is the one place where we have to take advantage of the fact - that an `Elf_Data' pointer is also a pointer to `Elf_Data_Scn'. - The interface is broken so that it requires this hack. */ - if (data_scn->s->elf->class == ELFCLASS32) - { - Elf32_Sym *src; - - /* Here it gets a bit more complicated. The format of the symbol - table entries has to be adopted. The user better has provided - a buffer where we can store the information. While copying the - data we are converting the format. */ - if (unlikely ((ndx + 1) * sizeof (Elf32_Sym) > data->d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - src = &((Elf32_Sym *) data->d_buf)[ndx]; - - /* This might look like a simple copy operation but it's - not. There are zero- and sign-extensions going on. */ -#define COPY(name) \ - dst->name = src->name - COPY (st_name); - /* Please note that we can simply copy the `st_info' element since - the definitions of ELFxx_ST_BIND and ELFxx_ST_TYPE are the same - for the 64 bit variant. */ - COPY (st_info); - COPY (st_other); - COPY (st_shndx); - COPY (st_value); - COPY (st_size); - } - else - { - /* If this is a 64 bit object it's easy. */ - assert (sizeof (GElf_Sym) == sizeof (Elf64_Sym)); - - /* The data is already in the correct form. Just make sure the - index is OK. */ - if (unlikely ((ndx + 1) * sizeof (GElf_Sym) > data->d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - *dst = ((GElf_Sym *) data->d_buf)[ndx]; - } - - result = dst; - - out: - rwlock_unlock (data_scn->s->elf->lock); - - return result; -} -INTDEF(gelf_getsym) diff --git a/libelf/gelf_getsyminfo.c b/libelf/gelf_getsyminfo.c deleted file mode 100644 index 70cfdcd3..00000000 --- a/libelf/gelf_getsyminfo.c +++ /dev/null @@ -1,68 +0,0 @@ -/* Get additional symbol information from symbol table at the given index. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -GElf_Syminfo * -gelf_getsyminfo (data, ndx, dst) - Elf_Data *data; - int ndx; - GElf_Syminfo *dst; -{ - GElf_Syminfo *result = NULL; - - if (data == NULL) - return NULL; - - if (unlikely (data->d_type != ELF_T_SYMINFO)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - /* The types for 32 and 64 bit are the same. Lucky us. */ - assert (sizeof (GElf_Syminfo) == sizeof (Elf32_Syminfo)); - assert (sizeof (GElf_Syminfo) == sizeof (Elf64_Syminfo)); - - rwlock_rdlock (((Elf_Data_Scn *) data)->s->elf->lock); - - /* The data is already in the correct form. Just make sure the - index is OK. */ - if (unlikely ((ndx + 1) * sizeof (GElf_Syminfo) > data->d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - *dst = ((GElf_Syminfo *) data->d_buf)[ndx]; - - result = dst; - - out: - rwlock_unlock (((Elf_Data_Scn *) data)->s->elf->lock); - - return result; -} diff --git a/libelf/gelf_getsymshndx.c b/libelf/gelf_getsymshndx.c deleted file mode 100644 index 856f4919..00000000 --- a/libelf/gelf_getsymshndx.c +++ /dev/null @@ -1,128 +0,0 @@ -/* Get symbol information and separate section index from symbol table - at the given index. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -GElf_Sym * -gelf_getsymshndx (symdata, shndxdata, ndx, dst, dstshndx) - Elf_Data *symdata; - Elf_Data *shndxdata; - int ndx; - GElf_Sym *dst; - Elf32_Word *dstshndx; -{ - Elf_Data_Scn *symdata_scn = (Elf_Data_Scn *) symdata; - Elf_Data_Scn *shndxdata_scn = (Elf_Data_Scn *) shndxdata; - GElf_Sym *result = NULL; - Elf32_Word shndx = 0; - - if (symdata == NULL) - return NULL; - - if (unlikely (symdata->d_type != ELF_T_SYM) - || (likely (shndxdata_scn != NULL) - && unlikely (shndxdata->d_type != ELF_T_WORD))) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - rwlock_rdlock (symdata_scn->s->elf->lock); - - /* The user is not required to pass a data descriptor for an extended - section index table. */ - if (likely (shndxdata_scn != NULL)) - { - if (unlikely ((ndx + 1) * sizeof (Elf32_Word) > shndxdata_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - shndx = ((Elf32_Word *) shndxdata_scn->d.d_buf)[ndx]; - } - - /* This is the one place where we have to take advantage of the fact - that an `Elf_Data' pointer is also a pointer to `Elf_Data_Scn'. - The interface is broken so that it requires this hack. */ - if (symdata_scn->s->elf->class == ELFCLASS32) - { - Elf32_Sym *src; - - /* Here it gets a bit more complicated. The format of the symbol - table entries has to be adopted. The user better has provided - a buffer where we can store the information. While copying the - data we are converting the format. */ - if (unlikely ((ndx + 1) * sizeof (Elf32_Sym) > symdata->d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - src = &((Elf32_Sym *) symdata->d_buf)[ndx]; - - /* This might look like a simple copy operation but it's - not. There are zero- and sign-extensions going on. */ -#define COPY(name) \ - dst->name = src->name - COPY (st_name); - /* Please note that we can simply copy the `st_info' element since - the definitions of ELFxx_ST_BIND and ELFxx_ST_TYPE are the same - for the 64 bit variant. */ - COPY (st_info); - COPY (st_other); - COPY (st_shndx); - COPY (st_value); - COPY (st_size); - } - else - { - /* If this is a 64 bit object it's easy. */ - assert (sizeof (GElf_Sym) == sizeof (Elf64_Sym)); - - /* The data is already in the correct form. Just make sure the - index is OK. */ - if (unlikely ((ndx + 1) * sizeof (GElf_Sym) > symdata->d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - *dst = ((GElf_Sym *) symdata->d_buf)[ndx]; - } - - /* Now we can store the section index. */ - if (dstshndx != NULL) - *dstshndx = shndx; - - result = dst; - - out: - rwlock_unlock (symdata_scn->s->elf->lock); - - return result; -} diff --git a/libelf/gelf_getverdaux.c b/libelf/gelf_getverdaux.c deleted file mode 100644 index 0a14b121..00000000 --- a/libelf/gelf_getverdaux.c +++ /dev/null @@ -1,70 +0,0 @@ -/* Get additional symbol version definition information at the given offset. - Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1999. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -GElf_Verdaux * -gelf_getverdaux (data, offset, dst) - Elf_Data *data; - int offset; - GElf_Verdaux *dst; -{ - GElf_Verdaux *result; - - if (data == NULL) - return NULL; - - if (unlikely (data->d_type != ELF_T_VDEF)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - /* It's easy to handle this type. It has the same size for 32 and - 64 bit objects. */ - assert (sizeof (GElf_Verdaux) == sizeof (Elf32_Verdaux)); - assert (sizeof (GElf_Verdaux) == sizeof (Elf64_Verdaux)); - - rwlock_rdlock (((Elf_Data_Scn *) data)->s->elf->lock); - - /* The data is already in the correct form. Just make sure the - index is OK. */ - if (unlikely (offset < 0) - || unlikely (offset + sizeof (GElf_Verdaux) > data->d_size) - || unlikely (offset % __alignof__ (GElf_Verdaux) != 0)) - { - __libelf_seterrno (ELF_E_OFFSET_RANGE); - result = NULL; - } - else - result = (GElf_Verdaux *) memcpy (dst, (char *) data->d_buf + offset, - sizeof (GElf_Verdaux)); - - - rwlock_unlock (((Elf_Data_Scn *) data)->s->elf->lock); - - return result; -} diff --git a/libelf/gelf_getverdef.c b/libelf/gelf_getverdef.c deleted file mode 100644 index b9492ef7..00000000 --- a/libelf/gelf_getverdef.c +++ /dev/null @@ -1,69 +0,0 @@ -/* Get symbol version definition information at the given offset. - Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1999. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -GElf_Verdef * -gelf_getverdef (data, offset, dst) - Elf_Data *data; - int offset; - GElf_Verdef *dst; -{ - GElf_Verdef *result; - - if (data == NULL) - return NULL; - - if (unlikely (data->d_type != ELF_T_VDEF)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - /* It's easy to handle this type. It has the same size for 32 and - 64 bit objects. */ - assert (sizeof (GElf_Verdef) == sizeof (Elf32_Verdef)); - assert (sizeof (GElf_Verdef) == sizeof (Elf64_Verdef)); - - rwlock_rdlock (((Elf_Data_Scn *) data)->s->elf->lock); - - /* The data is already in the correct form. Just make sure the - index is OK. */ - if (unlikely (offset < 0) - || unlikely (offset + sizeof (GElf_Verdef) > data->d_size) - || unlikely (offset % __alignof__ (GElf_Verdef) != 0)) - { - __libelf_seterrno (ELF_E_OFFSET_RANGE); - result = NULL; - } - else - result = (GElf_Verdef *) memcpy (dst, (char *) data->d_buf + offset, - sizeof (GElf_Verdef)); - - rwlock_unlock (((Elf_Data_Scn *) data)->s->elf->lock); - - return result; -} diff --git a/libelf/gelf_getvernaux.c b/libelf/gelf_getvernaux.c deleted file mode 100644 index fbaa109a..00000000 --- a/libelf/gelf_getvernaux.c +++ /dev/null @@ -1,72 +0,0 @@ -/* Get additional required symbol version information at the given offset. - Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1999. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -GElf_Vernaux * -gelf_getvernaux (data, offset, dst) - Elf_Data *data; - int offset; - GElf_Vernaux *dst; -{ - GElf_Vernaux *result; - - if (data == NULL) - return NULL; - - if (unlikely (data->d_type != ELF_T_VNEED)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - /* It's easy to handle this type. It has the same size for 32 and - 64 bit objects. And fortunately the `ElfXXX_Vernaux' records - also have the same size. */ - assert (sizeof (GElf_Vernaux) == sizeof (Elf32_Verneed)); - assert (sizeof (GElf_Vernaux) == sizeof (Elf64_Verneed)); - assert (sizeof (GElf_Vernaux) == sizeof (Elf32_Vernaux)); - assert (sizeof (GElf_Vernaux) == sizeof (Elf64_Vernaux)); - - rwlock_rdlock (((Elf_Data_Scn *) data)->s->elf->lock); - - /* The data is already in the correct form. Just make sure the - index is OK. */ - if (unlikely (offset < 0) - || unlikely (offset + sizeof (GElf_Vernaux) > data->d_size) - || unlikely (offset % sizeof (GElf_Vernaux) != 0)) - { - __libelf_seterrno (ELF_E_OFFSET_RANGE); - result = NULL; - } - else - result = (GElf_Vernaux *) memcpy (dst, (char *) data->d_buf + offset, - sizeof (GElf_Verneed)); - - rwlock_unlock (((Elf_Data_Scn *) data)->s->elf->lock); - - return result; -} diff --git a/libelf/gelf_getverneed.c b/libelf/gelf_getverneed.c deleted file mode 100644 index 573e116a..00000000 --- a/libelf/gelf_getverneed.c +++ /dev/null @@ -1,72 +0,0 @@ -/* Get required symbol version information at the given offset. - Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1999. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -GElf_Verneed * -gelf_getverneed (data, offset, dst) - Elf_Data *data; - int offset; - GElf_Verneed *dst; -{ - GElf_Verneed *result; - - if (data == NULL) - return NULL; - - if (unlikely (data->d_type != ELF_T_VNEED)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - /* It's easy to handle this type. It has the same size for 32 and - 64 bit objects. And fortunately the `ElfXXX_Vernaux' records - also have the same size. */ - assert (sizeof (GElf_Verneed) == sizeof (Elf32_Verneed)); - assert (sizeof (GElf_Verneed) == sizeof (Elf64_Verneed)); - assert (sizeof (GElf_Verneed) == sizeof (Elf32_Vernaux)); - assert (sizeof (GElf_Verneed) == sizeof (Elf64_Vernaux)); - - rwlock_rdlock (((Elf_Data_Scn *) data)->s->elf->lock); - - /* The data is already in the correct form. Just make sure the - index is OK. */ - if (unlikely (offset < 0) - || unlikely (offset + sizeof (GElf_Verneed) > data->d_size) - || unlikely (offset % sizeof (GElf_Verneed) != 0)) - { - __libelf_seterrno (ELF_E_OFFSET_RANGE); - result = NULL; - } - else - result = (GElf_Verneed *) memcpy (dst, (char *) data->d_buf + offset, - sizeof (GElf_Verneed)); - - rwlock_unlock (((Elf_Data_Scn *) data)->s->elf->lock); - - return result; -} diff --git a/libelf/gelf_getversym.c b/libelf/gelf_getversym.c deleted file mode 100644 index 9274b142..00000000 --- a/libelf/gelf_getversym.c +++ /dev/null @@ -1,77 +0,0 @@ -/* Get symbol version information at the given index. - Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1999. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -GElf_Versym * -gelf_getversym (data, ndx, dst) - Elf_Data *data; - int ndx; - GElf_Versym *dst; -{ - Elf_Data_Scn *data_scn = (Elf_Data_Scn *) data; - Elf_Scn *scn; - GElf_Versym *result; - - if (data == NULL) - return NULL; - - if (unlikely (data->d_type != ELF_T_HALF)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - /* This is the one place where we have to take advantage of the fact - that an `Elf_Data' pointer is also a pointer to `Elf_Data_Scn'. - The interface is broken so that it requires this hack. */ - scn = data_scn->s; - - /* It's easy to handle this type. It has the same size for 32 and - 64 bit objects. */ - assert (sizeof (GElf_Versym) == sizeof (Elf32_Versym)); - assert (sizeof (GElf_Versym) == sizeof (Elf64_Versym)); - - rwlock_rdlock (scn->elf->lock); - - /* The data is already in the correct form. Just make sure the - index is OK. */ - if (unlikely ((ndx + 1) * sizeof (GElf_Versym) > data->d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - result = NULL; - } - else - { - *dst = ((GElf_Versym *) data->d_buf)[ndx]; - - result = dst; - } - - rwlock_unlock (scn->elf->lock); - - return result; -} diff --git a/libelf/gelf_newehdr.c b/libelf/gelf_newehdr.c deleted file mode 100644 index 587283f4..00000000 --- a/libelf/gelf_newehdr.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Create new ELF header. - Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <gelf.h> -#include <stdlib.h> - -#include "libelfP.h" - - -unsigned long int -gelf_newehdr (elf, class) - Elf *elf; - int class; -{ - return (class == ELFCLASS32 - ? (unsigned long int) INTUSE(elf32_newehdr) (elf) - : (unsigned long int) INTUSE(elf64_newehdr) (elf)); -} diff --git a/libelf/gelf_newphdr.c b/libelf/gelf_newphdr.c deleted file mode 100644 index d1d433e8..00000000 --- a/libelf/gelf_newphdr.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Create new ELF program header. - Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <gelf.h> -#include <stdlib.h> - -#include "libelfP.h" - - -unsigned long int -gelf_newphdr (elf, phnum) - Elf *elf; - size_t phnum; -{ - return (elf->class == ELFCLASS32 - ? (unsigned long int) INTUSE(elf32_newphdr) (elf, phnum) - : (unsigned long int) INTUSE(elf64_newphdr) (elf, phnum)); -} diff --git a/libelf/gelf_rawchunk.c b/libelf/gelf_rawchunk.c deleted file mode 100644 index 667f3013..00000000 --- a/libelf/gelf_rawchunk.c +++ /dev/null @@ -1,71 +0,0 @@ -/* Retrieve uninterpreted chunk of the file contents. - Copyright (C) 2002 Red Hat, Inc. - Contributed by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libelf.h> -#include <stddef.h> -#include <stdlib.h> -#include <unistd.h> - -#include "libelfP.h" - - -char * -gelf_rawchunk (elf, offset, size) - Elf *elf; - GElf_Off offset; - GElf_Word size; -{ - if (elf == NULL) - { - /* No valid descriptor. */ - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return NULL; - } - - if (offset >= elf->maximum_size - || offset + size >= elf->maximum_size - || offset + size < offset) - { - /* Invalid request. */ - __libelf_seterrno (ELF_E_INVALID_OP); - return NULL; - } - - /* If the file is mmap'ed return an appropriate pointer. */ - if (elf->map_address != NULL) - return (char *) elf->map_address + elf->start_offset + offset; - - /* We allocate the memory and read the data from the file. */ - char *result = (char *) malloc (size); - if (result == NULL) - __libelf_seterrno (ELF_E_NOMEM); - else - /* Read the file content. */ - if ((size_t) pread (elf->fildes, result, size, elf->start_offset + offset) - != size) - { - /* Something went wrong. */ - __libelf_seterrno (ELF_E_READ_ERROR); - free (result); - } - - return result; -} diff --git a/libelf/gelf_update_dyn.c b/libelf/gelf_update_dyn.c deleted file mode 100644 index b066fd62..00000000 --- a/libelf/gelf_update_dyn.c +++ /dev/null @@ -1,104 +0,0 @@ -/* Update information in dynamic table at the given index. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -int -gelf_update_dyn (data, ndx, src) - Elf_Data *data; - int ndx; - GElf_Dyn *src; -{ - Elf_Data_Scn *data_scn = (Elf_Data_Scn *) data; - Elf_Scn *scn; - int result = 0; - - if (data == NULL) - return 0; - - if (unlikely (ndx < 0)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - return 0; - } - - if (unlikely (data_scn->d.d_type != ELF_T_DYN)) - { - /* The type of the data better should match. */ - __libelf_seterrno (ELF_E_DATA_MISMATCH); - return 0; - } - - scn = data_scn->s; - rwlock_wrlock (scn->elf->lock); - - if (scn->elf->class == ELFCLASS32) - { - Elf32_Dyn *dyn; - - /* There is the possibility that the values in the input are - too large. */ - if (unlikely (src->d_tag < -0x80000000ll) - || unlikely (src->d_tag > 0x7fffffffll) - || unlikely (src->d_un.d_val > 0xffffffffull)) - { - __libelf_seterrno (ELF_E_INVALID_DATA); - goto out; - } - - /* Check whether we have to resize the data buffer. */ - if (unlikely ((ndx + 1) * sizeof (Elf32_Dyn) > data_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - dyn = &((Elf32_Dyn *) data_scn->d.d_buf)[ndx]; - - dyn->d_tag = src->d_tag; - dyn->d_un.d_val = src->d_un.d_val; - } - else - { - /* Check whether we have to resize the data buffer. */ - if (unlikely ((ndx + 1) * sizeof (Elf64_Dyn) > data_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - ((Elf64_Dyn *) data_scn->d.d_buf)[ndx] = *src; - } - - result = 1; - - /* Mark the section as modified. */ - scn->flags |= ELF_F_DIRTY; - - out: - rwlock_unlock (scn->elf->lock); - - return result; -} diff --git a/libelf/gelf_update_ehdr.c b/libelf/gelf_update_ehdr.c deleted file mode 100644 index e13121d0..00000000 --- a/libelf/gelf_update_ehdr.c +++ /dev/null @@ -1,103 +0,0 @@ -/* Update ELF header. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -int -gelf_update_ehdr (Elf *elf, GElf_Ehdr *src) -{ - int result = 0; - - if (elf == NULL) - return 0; - - if (unlikely (elf->kind != ELF_K_ELF)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return 0; - } - - rwlock_wrlock (elf->lock); - - if (elf->class == ELFCLASS32) - { - Elf32_Ehdr *ehdr = elf->state.elf32.ehdr; - - if (ehdr == NULL) - { - __libelf_seterrno (ELF_E_WRONG_ORDER_EHDR); - goto out; - } - - /* We have to convert the data to the 32 bit format. This might - overflow some fields so we have to test for this case before - copying. */ - if (unlikely (src->e_entry > 0xffffffffull) - || unlikely (src->e_phoff > 0xffffffffull) - || unlikely (src->e_shoff > 0xffffffffull)) - { - __libelf_seterrno (ELF_E_INVALID_DATA); - goto out; - } - - /* Copy the data. */ - memcpy (ehdr->e_ident, src->e_ident, EI_NIDENT); -#define COPY(name) \ - ehdr->name = src->name - COPY (e_type); - COPY (e_machine); - COPY (e_version); - COPY (e_entry); - COPY (e_phoff); - COPY (e_shoff); - COPY (e_flags); - COPY (e_ehsize); - COPY (e_phentsize); - COPY (e_phnum); - COPY (e_shentsize); - COPY (e_shnum); - COPY (e_shstrndx); - } - else - { - Elf64_Ehdr *ehdr = elf->state.elf64.ehdr; - - if (ehdr == NULL) - { - __libelf_seterrno (ELF_E_WRONG_ORDER_EHDR); - goto out; - } - - /* Just copy the data. */ - memcpy (ehdr, src, sizeof (Elf64_Ehdr)); - } - - result = 1; - - out: - rwlock_unlock (elf->lock); - - return result; -} diff --git a/libelf/gelf_update_lib.c b/libelf/gelf_update_lib.c deleted file mode 100644 index 08ce2296..00000000 --- a/libelf/gelf_update_lib.c +++ /dev/null @@ -1,72 +0,0 @@ -/* Update library in table at the given index. - Copyright (C) 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <gelf.h> -#include <stdlib.h> -#include <string.h> - -#include "libelfP.h" - - -int -gelf_update_lib (data, ndx, src) - Elf_Data *data; - int ndx; - GElf_Lib *src; -{ - if (data == NULL) - return 0; - - if (unlikely (ndx < 0)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - return 0; - } - - Elf_Data_Scn *data_scn = (Elf_Data_Scn *) data; - if (unlikely (data_scn->d.d_type != ELF_T_LIB)) - { - /* The type of the data better should match. */ - __libelf_seterrno (ELF_E_DATA_MISMATCH); - return 0; - } - - Elf_Scn *scn = data_scn->s; - rwlock_wrlock (scn->elf->lock); - - /* Check whether we have to resize the data buffer. */ - int result = 0; - if (unlikely ((ndx + 1) * sizeof (Elf64_Lib) > data_scn->d.d_size)) - __libelf_seterrno (ELF_E_INVALID_INDEX); - else - { - ((Elf64_Lib *) data_scn->d.d_buf)[ndx] = *src; - - result = 1; - - /* Mark the section as modified. */ - scn->flags |= ELF_F_DIRTY; - } - - rwlock_unlock (scn->elf->lock); - - return result; -} diff --git a/libelf/gelf_update_move.c b/libelf/gelf_update_move.c deleted file mode 100644 index 090e3975..00000000 --- a/libelf/gelf_update_move.c +++ /dev/null @@ -1,69 +0,0 @@ -/* Update move structure at the given index. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <gelf.h> -#include <stdlib.h> - -#include "libelfP.h" - - -int -gelf_update_move (data, ndx, src) - Elf_Data *data; - int ndx; - GElf_Move *src; -{ - Elf_Data_Scn *data_scn = (Elf_Data_Scn *) data; - - if (data == NULL) - return 0; - - /* The types for 32 and 64 bit are the same. Lucky us. */ - assert (sizeof (GElf_Move) == sizeof (Elf32_Move)); - assert (sizeof (GElf_Move) == sizeof (Elf64_Move)); - - /* Check whether we have to resize the data buffer. */ - if (unlikely (ndx < 0) - || unlikely ((ndx + 1) * sizeof (GElf_Move) > data_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - return 0; - } - - if (unlikely (data_scn->d.d_type != ELF_T_MOVE)) - { - /* The type of the data better should match. */ - __libelf_seterrno (ELF_E_DATA_MISMATCH); - return 0; - } - - rwlock_wrlock (data_scn->s->elf->lock); - - ((GElf_Move *) data_scn->d.d_buf)[ndx] = *src; - - /* Mark the section as modified. */ - data_scn->s->flags |= ELF_F_DIRTY; - - rwlock_unlock (data_scn->s->elf->lock); - - return 1; -} diff --git a/libelf/gelf_update_phdr.c b/libelf/gelf_update_phdr.c deleted file mode 100644 index ddd4e1ee..00000000 --- a/libelf/gelf_update_phdr.c +++ /dev/null @@ -1,120 +0,0 @@ -/* Update program header program header table entry. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -int -gelf_update_phdr (Elf *elf, int ndx, GElf_Phdr *src) -{ - int result = 0; - - if (elf == NULL) - return 0; - - if (unlikely (elf->kind != ELF_K_ELF)) - { - __libelf_seterrno (ELF_E_INVALID_HANDLE); - return 0; - } - - rwlock_wrlock (elf->lock); - - if (elf->class == ELFCLASS32) - { - Elf32_Phdr *phdr = elf->state.elf32.phdr; - - /* We have to convert the data to the 32 bit format. This might - overflow some fields so we have to test for this case before - copying. */ - if (unlikely (src->p_offset > 0xffffffffull) - || unlikely (src->p_vaddr > 0xffffffffull) - || unlikely (src->p_paddr > 0xffffffffull) - || unlikely (src->p_filesz > 0xffffffffull) - || unlikely (src->p_memsz > 0xffffffffull) - || unlikely (src->p_align > 0xffffffffull)) - { - __libelf_seterrno (ELF_E_INVALID_DATA); - goto out; - } - - if (phdr == NULL) - { - phdr = INTUSE(elf32_getphdr) (elf); - if (phdr == NULL) - /* The error number is already set. */ - goto out; - } - - /* Test whether the index is ok. */ - if (unlikely (ndx >= elf->state.elf32.ehdr->e_phnum)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - /* Now correct the pointer to point to the correct element. */ - phdr += ndx; - -#define COPY(name) \ - phdr->name = src->name - COPY (p_type); - COPY (p_offset); - COPY (p_vaddr); - COPY (p_paddr); - COPY (p_filesz); - COPY (p_memsz); - COPY (p_flags); - COPY (p_align); - } - else - { - Elf64_Phdr *phdr = elf->state.elf64.phdr; - - if (phdr == NULL) - { - phdr = INTUSE(elf64_getphdr) (elf); - if (phdr == NULL) - /* The error number is already set. */ - goto out; - } - - /* Test whether the index is ok. */ - if (unlikely (ndx >= elf->state.elf64.ehdr->e_phnum)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - /* Just copy the data. */ - memcpy (phdr + ndx, src, sizeof (Elf64_Phdr)); - } - - result = 1; - - out: - rwlock_unlock (elf->lock); - - return result; -} diff --git a/libelf/gelf_update_rel.c b/libelf/gelf_update_rel.c deleted file mode 100644 index c59c6dd4..00000000 --- a/libelf/gelf_update_rel.c +++ /dev/null @@ -1,102 +0,0 @@ -/* Update REL relocation information at given index. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <gelf.h> -#include <stdlib.h> - -#include "libelfP.h" - - -int -gelf_update_rel (Elf_Data *dst, int ndx, GElf_Rel *src) -{ - Elf_Data_Scn *data_scn = (Elf_Data_Scn *) dst; - Elf_Scn *scn; - int result = 0; - - if (dst == NULL) - return 0; - - if (unlikely (ndx < 0)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - return 0; - } - - if (unlikely (data_scn->d.d_type != ELF_T_REL)) - { - /* The type of the data better should match. */ - __libelf_seterrno (ELF_E_DATA_MISMATCH); - return 0; - } - - scn = data_scn->s; - rwlock_wrlock (scn->elf->lock); - - if (scn->elf->class == ELFCLASS32) - { - Elf32_Rel *rel; - - /* There is the possibility that the values in the input are - too large. */ - if (unlikely (src->r_offset > 0xffffffffull) - || unlikely (GELF_R_SYM (src->r_info) > 0xffffff) - || unlikely (GELF_R_TYPE (src->r_info) > 0xff)) - { - __libelf_seterrno (ELF_E_INVALID_DATA); - goto out; - } - - /* Check whether we have to resize the data buffer. */ - if (unlikely ((ndx + 1) * sizeof (Elf32_Rel) > data_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - rel = &((Elf32_Rel *) data_scn->d.d_buf)[ndx]; - - rel->r_offset = src->r_offset; - rel->r_info = ELF32_R_INFO (GELF_R_SYM (src->r_info), - GELF_R_TYPE (src->r_info)); - } - else - { - /* Check whether we have to resize the data buffer. */ - if (unlikely ((ndx + 1) * sizeof (Elf64_Rel) > data_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - ((Elf64_Rel *) data_scn->d.d_buf)[ndx] = *src; - } - - result = 1; - - /* Mark the section as modified. */ - scn->flags |= ELF_F_DIRTY; - - out: - rwlock_unlock (scn->elf->lock); - - return result; -} diff --git a/libelf/gelf_update_rela.c b/libelf/gelf_update_rela.c deleted file mode 100644 index f932c018..00000000 --- a/libelf/gelf_update_rela.c +++ /dev/null @@ -1,105 +0,0 @@ -/* Update RELA relocation information at given index. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <gelf.h> -#include <stdlib.h> - -#include "libelfP.h" - - -int -gelf_update_rela (Elf_Data *dst, int ndx, GElf_Rela *src) -{ - Elf_Data_Scn *data_scn = (Elf_Data_Scn *) dst; - Elf_Scn *scn; - int result = 0; - - if (dst == NULL) - return 0; - - if (unlikely (ndx < 0)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - return 0; - } - - if (unlikely (data_scn->d.d_type != ELF_T_RELA)) - { - /* The type of the data better should match. */ - __libelf_seterrno (ELF_E_DATA_MISMATCH); - return 0; - } - - scn = data_scn->s; - rwlock_wrlock (scn->elf->lock); - - if (scn->elf->class == ELFCLASS32) - { - Elf32_Rela *rel; - - /* There is the possibility that the values in the input are - too large. */ - if (unlikely (src->r_offset > 0xffffffffull) - || unlikely (GELF_R_SYM (src->r_info) > 0xffffff) - || unlikely (GELF_R_TYPE (src->r_info) > 0xff) - || unlikely (src->r_addend < -0x80000000ll) - || unlikely (src->r_addend > 0x7fffffffll)) - { - __libelf_seterrno (ELF_E_INVALID_DATA); - goto out; - } - - /* Check whether we have to resize the data buffer. */ - if (unlikely ((ndx + 1) * sizeof (Elf32_Rela) > data_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - rel = &((Elf32_Rela *) data_scn->d.d_buf)[ndx]; - - rel->r_offset = src->r_offset; - rel->r_info = ELF32_R_INFO (GELF_R_SYM (src->r_info), - GELF_R_TYPE (src->r_info)); - rel->r_addend = src->r_addend; - } - else - { - /* Check whether we have to resize the data buffer. */ - if (unlikely ((ndx + 1) * sizeof (Elf64_Rela) > data_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - ((Elf64_Rela *) data_scn->d.d_buf)[ndx] = *src; - } - - result = 1; - - /* Mark the section as modified. */ - scn->flags |= ELF_F_DIRTY; - - out: - rwlock_unlock (scn->elf->lock); - - return result; -} diff --git a/libelf/gelf_update_shdr.c b/libelf/gelf_update_shdr.c deleted file mode 100644 index c54e8c52..00000000 --- a/libelf/gelf_update_shdr.c +++ /dev/null @@ -1,94 +0,0 @@ -/* Update section header. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -int -gelf_update_shdr (Elf_Scn *scn, GElf_Shdr *src) -{ - int result = 0; - Elf *elf; - - if (scn == NULL || src == NULL) - return 0; - - elf = scn->elf; - rwlock_wrlock (elf->lock); - - if (elf->class == ELFCLASS32) - { - Elf32_Shdr *shdr = scn->shdr.e32 ?: INTUSE(elf32_getshdr) (scn); - - if (shdr == NULL) - { - __libelf_seterrno (ELF_E_INVALID_OPERAND); - goto out; - } - - if (unlikely (src->sh_flags > 0xffffffffull) - || unlikely (src->sh_addr > 0xffffffffull) - || unlikely (src->sh_offset > 0xffffffffull) - || unlikely (src->sh_size > 0xffffffffull) - || unlikely (src->sh_addralign > 0xffffffffull) - || unlikely (src->sh_entsize > 0xffffffffull)) - { - __libelf_seterrno (ELF_E_INVALID_DATA); - goto out; - } - -#define COPY(name) \ - shdr->name = src->name - COPY (sh_name); - COPY (sh_type); - COPY (sh_flags); - COPY (sh_addr); - COPY (sh_offset); - COPY (sh_size); - COPY (sh_link); - COPY (sh_info); - COPY (sh_addralign); - COPY (sh_entsize); - } - else - { - Elf64_Shdr *shdr = scn->shdr.e64 ?: INTUSE(elf64_getshdr) (scn); - - if (shdr == NULL) - { - __libelf_seterrno (ELF_E_INVALID_OPERAND); - goto out; - } - - /* We only have to copy the data. */ - (void) memcpy (shdr, src, sizeof (GElf_Shdr)); - } - - result = 1; - - out: - rwlock_unlock (elf->lock); - - return result; -} diff --git a/libelf/gelf_update_sym.c b/libelf/gelf_update_sym.c deleted file mode 100644 index 8fc7dd66..00000000 --- a/libelf/gelf_update_sym.c +++ /dev/null @@ -1,113 +0,0 @@ -/* Update symbol information in symbol table at the given index. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <gelf.h> -#include <stdlib.h> -#include <string.h> - -#include "libelfP.h" - - -int -gelf_update_sym (data, ndx, src) - Elf_Data *data; - int ndx; - GElf_Sym *src; -{ - Elf_Data_Scn *data_scn = (Elf_Data_Scn *) data; - Elf_Scn *scn; - int result = 0; - - if (data == NULL) - return 0; - - if (unlikely (ndx < 0)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - return 0; - } - - if (unlikely (data_scn->d.d_type != ELF_T_SYM)) - { - /* The type of the data better should match. */ - __libelf_seterrno (ELF_E_DATA_MISMATCH); - return 0; - } - - scn = data_scn->s; - rwlock_wrlock (scn->elf->lock); - - if (scn->elf->class == ELFCLASS32) - { - Elf32_Sym *sym; - - /* There is the possibility that the values in the input are - too large. */ - if (unlikely (src->st_value > 0xffffffffull) - || unlikely (src->st_size > 0xffffffffull)) - { - __libelf_seterrno (ELF_E_INVALID_DATA); - goto out; - } - - /* Check whether we have to resize the data buffer. */ - if (unlikely ((ndx + 1) * sizeof (Elf32_Sym) > data_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - sym = &((Elf32_Sym *) data_scn->d.d_buf)[ndx]; - -#define COPY(name) \ - sym->name = src->name - COPY (st_name); - COPY (st_value); - COPY (st_size); - /* Please note that we can simply copy the `st_info' element since - the definitions of ELFxx_ST_BIND and ELFxx_ST_TYPE are the same - for the 64 bit variant. */ - COPY (st_info); - COPY (st_other); - COPY (st_shndx); - } - else - { - /* Check whether we have to resize the data buffer. */ - if (unlikely ((ndx + 1) * sizeof (Elf64_Sym) > data_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - ((Elf64_Sym *) data_scn->d.d_buf)[ndx] = *src; - } - - result = 1; - - /* Mark the section as modified. */ - scn->flags |= ELF_F_DIRTY; - - out: - rwlock_unlock (scn->elf->lock); - - return result; -} diff --git a/libelf/gelf_update_syminfo.c b/libelf/gelf_update_syminfo.c deleted file mode 100644 index a60aa5c5..00000000 --- a/libelf/gelf_update_syminfo.c +++ /dev/null @@ -1,80 +0,0 @@ -/* Update additional symbol information in symbol table at the given index. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <gelf.h> -#include <stdlib.h> - -#include "libelfP.h" - - -int -gelf_update_syminfo (data, ndx, src) - Elf_Data *data; - int ndx; - GElf_Syminfo *src; -{ - Elf_Data_Scn *data_scn = (Elf_Data_Scn *) data; - Elf_Scn *scn; - int result = 0; - - if (data == NULL) - return 0; - - if (unlikely (ndx < 0)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - return 0; - } - - if (unlikely (data_scn->d.d_type != ELF_T_SYMINFO)) - { - /* The type of the data better should match. */ - __libelf_seterrno (ELF_E_DATA_MISMATCH); - return 0; - } - - /* The types for 32 and 64 bit are the same. Lucky us. */ - assert (sizeof (GElf_Syminfo) == sizeof (Elf32_Syminfo)); - assert (sizeof (GElf_Syminfo) == sizeof (Elf64_Syminfo)); - - scn = data_scn->s; - rwlock_wrlock (scn->elf->lock); - - /* Check whether we have to resize the data buffer. */ - if (unlikely ((ndx + 1) * sizeof (GElf_Syminfo) > data_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - ((GElf_Syminfo *) data_scn->d.d_buf)[ndx] = *src; - - result = 1; - - /* Mark the section as modified. */ - scn->flags |= ELF_F_DIRTY; - - out: - rwlock_unlock (scn->elf->lock); - - return result; -} diff --git a/libelf/gelf_update_symshndx.c b/libelf/gelf_update_symshndx.c deleted file mode 100644 index 4f376150..00000000 --- a/libelf/gelf_update_symshndx.c +++ /dev/null @@ -1,143 +0,0 @@ -/* Update symbol information and section index in symbol table at the - given index. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <gelf.h> -#include <stdlib.h> -#include <string.h> - -#include "libelfP.h" - - -int -gelf_update_symshndx (symdata, shndxdata, ndx, src, srcshndx) - Elf_Data *symdata; - Elf_Data *shndxdata; - int ndx; - GElf_Sym *src; - Elf32_Word srcshndx; -{ - Elf_Data_Scn *symdata_scn = (Elf_Data_Scn *) symdata; - Elf_Data_Scn *shndxdata_scn = (Elf_Data_Scn *) shndxdata; - Elf_Scn *scn; - Elf32_Word *shndx = NULL; - int result = 0; - - if (symdata == NULL) - return 0; - - if (unlikely (ndx < 0)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - return 0; - } - - if (unlikely (symdata_scn->d.d_type != ELF_T_SYM)) - { - /* The type of the data better should match. */ - __libelf_seterrno (ELF_E_DATA_MISMATCH); - return 0; - } - - scn = symdata_scn->s; - /* We simply have to believe the user that the two sections belong to - the same ELF file. */ - rwlock_wrlock (scn->elf->lock); - - /* The user is not required to pass a data descriptor for an extended - section index table. */ - if (shndxdata_scn != NULL) - { - if (unlikely ((ndx + 1) * sizeof (Elf32_Word) > shndxdata_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - shndx = &((Elf32_Word *) shndxdata_scn->d.d_buf)[ndx]; - } - /* But if s/he does not the extended sectio index must be zero. */ - else if (unlikely (srcshndx != 0)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - if (scn->elf->class == ELFCLASS32) - { - Elf32_Sym *sym; - - /* There is the possibility that the values in the input are - too large. */ - if (unlikely (src->st_value > 0xffffffffull) - || unlikely (src->st_size > 0xffffffffull)) - { - __libelf_seterrno (ELF_E_INVALID_DATA); - goto out; - } - - /* Check whether we have to resize the data buffer. */ - if (unlikely ((ndx + 1) * sizeof (Elf32_Sym) > symdata_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - sym = &((Elf32_Sym *) symdata_scn->d.d_buf)[ndx]; - -#define COPY(name) \ - sym->name = src->name - COPY (st_name); - COPY (st_value); - COPY (st_size); - /* Please note that we can simply copy the `st_info' element since - the definitions of ELFxx_ST_BIND and ELFxx_ST_TYPE are the same - for the 64 bit variant. */ - COPY (st_info); - COPY (st_other); - COPY (st_shndx); - } - else - { - /* Check whether we have to resize the data buffer. */ - if (unlikely ((ndx + 1) * sizeof (Elf64_Sym) > symdata_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - goto out; - } - - ((Elf64_Sym *) symdata_scn->d.d_buf)[ndx] = *src; - } - - /* Now we can store the section index. */ - if (shndx != NULL) - *shndx = srcshndx; - - result = 1; - - /* Mark the section as modified. */ - scn->flags |= ELF_F_DIRTY; - - out: - rwlock_unlock (scn->elf->lock); - - return result; -} diff --git a/libelf/gelf_update_verdaux.c b/libelf/gelf_update_verdaux.c deleted file mode 100644 index e21428e0..00000000 --- a/libelf/gelf_update_verdaux.c +++ /dev/null @@ -1,69 +0,0 @@ -/* Update additional symbol version definition information. - Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -int -gelf_update_verdaux (data, offset, src) - Elf_Data *data; - int offset; - GElf_Verdaux *src; -{ - Elf_Data_Scn *data_scn = (Elf_Data_Scn *) data; - - if (data == NULL) - return 0; - - /* The types for 32 and 64 bit are the same. Lucky us. */ - assert (sizeof (GElf_Verdaux) == sizeof (Elf32_Verdaux)); - assert (sizeof (GElf_Verdaux) == sizeof (Elf64_Verdaux)); - - /* Check whether we have to resize the data buffer. */ - if (unlikely (offset < 0) - || unlikely ((offset + sizeof (GElf_Verdaux)) > data_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - return 0; - } - - if (unlikely (data_scn->d.d_type != ELF_T_VDEF)) - { - /* The type of the data better should match. */ - __libelf_seterrno (ELF_E_DATA_MISMATCH); - return 0; - } - - rwlock_wrlock (data_scn->s->elf->lock); - - memcpy ((char *) data_scn->d.d_buf + offset, src, sizeof (GElf_Verdaux)); - - /* Mark the section as modified. */ - data_scn->s->flags |= ELF_F_DIRTY; - - rwlock_unlock (data_scn->s->elf->lock); - - return 1; -} diff --git a/libelf/gelf_update_verdef.c b/libelf/gelf_update_verdef.c deleted file mode 100644 index 833a058b..00000000 --- a/libelf/gelf_update_verdef.c +++ /dev/null @@ -1,69 +0,0 @@ -/* Update symbol version definition information. - Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -int -gelf_update_verdef (data, offset, src) - Elf_Data *data; - int offset; - GElf_Verdef *src; -{ - Elf_Data_Scn *data_scn = (Elf_Data_Scn *) data; - - if (data == NULL) - return 0; - - /* The types for 32 and 64 bit are the same. Lucky us. */ - assert (sizeof (GElf_Verdef) == sizeof (Elf32_Verdef)); - assert (sizeof (GElf_Verdef) == sizeof (Elf64_Verdef)); - - /* Check whether we have to resize the data buffer. */ - if (unlikely (offset < 0) - || unlikely ((offset + sizeof (GElf_Verdef)) > data_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - return 0; - } - - if (unlikely (data_scn->d.d_type != ELF_T_VDEF)) - { - /* The type of the data better should match. */ - __libelf_seterrno (ELF_E_DATA_MISMATCH); - return 0; - } - - rwlock_wrlock (data_scn->s->elf->lock); - - memcpy ((char *) data_scn->d.d_buf + offset, src, sizeof (GElf_Verdef)); - - /* Mark the section as modified. */ - data_scn->s->flags |= ELF_F_DIRTY; - - rwlock_unlock (data_scn->s->elf->lock); - - return 1; -} diff --git a/libelf/gelf_update_vernaux.c b/libelf/gelf_update_vernaux.c deleted file mode 100644 index 3f506d48..00000000 --- a/libelf/gelf_update_vernaux.c +++ /dev/null @@ -1,69 +0,0 @@ -/* Update additional required symbol version information. - Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -int -gelf_update_vernaux (data, offset, src) - Elf_Data *data; - int offset; - GElf_Vernaux *src; -{ - Elf_Data_Scn *data_scn = (Elf_Data_Scn *) data; - - if (data == NULL) - return 0; - - /* The types for 32 and 64 bit are the same. Lucky us. */ - assert (sizeof (GElf_Vernaux) == sizeof (Elf32_Vernaux)); - assert (sizeof (GElf_Vernaux) == sizeof (Elf64_Vernaux)); - - /* Check whether we have to resize the data buffer. */ - if (unlikely (offset < 0) - || unlikely ((offset + sizeof (GElf_Vernaux)) > data_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - return 0; - } - - if (unlikely (data_scn->d.d_type != ELF_T_VNEED)) - { - /* The type of the data better should match. */ - __libelf_seterrno (ELF_E_DATA_MISMATCH); - return 0; - } - - rwlock_wrlock (data_scn->s->elf->lock); - - memcpy ((char *) data_scn->d.d_buf + offset, src, sizeof (GElf_Vernaux)); - - /* Mark the section as modified. */ - data_scn->s->flags |= ELF_F_DIRTY; - - rwlock_unlock (data_scn->s->elf->lock); - - return 1; -} diff --git a/libelf/gelf_update_verneed.c b/libelf/gelf_update_verneed.c deleted file mode 100644 index 6fccd937..00000000 --- a/libelf/gelf_update_verneed.c +++ /dev/null @@ -1,69 +0,0 @@ -/* Update required symbol version information. - Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <gelf.h> -#include <string.h> - -#include "libelfP.h" - - -int -gelf_update_verneed (data, offset, src) - Elf_Data *data; - int offset; - GElf_Verneed *src; -{ - Elf_Data_Scn *data_scn = (Elf_Data_Scn *) data; - - if (data == NULL) - return 0; - - /* The types for 32 and 64 bit are the same. Lucky us. */ - assert (sizeof (GElf_Verneed) == sizeof (Elf32_Verneed)); - assert (sizeof (GElf_Verneed) == sizeof (Elf64_Verneed)); - - /* Check whether we have to resize the data buffer. */ - if (unlikely (offset < 0) - || unlikely ((offset + sizeof (GElf_Verneed)) > data_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - return 0; - } - - if (unlikely (data_scn->d.d_type != ELF_T_VNEED)) - { - /* The type of the data better should match. */ - __libelf_seterrno (ELF_E_DATA_MISMATCH); - return 0; - } - - rwlock_wrlock (data_scn->s->elf->lock); - - memcpy ((char *) data_scn->d.d_buf + offset, src, sizeof (GElf_Verneed)); - - /* Mark the section as modified. */ - data_scn->s->flags |= ELF_F_DIRTY; - - rwlock_unlock (data_scn->s->elf->lock); - - return 1; -} diff --git a/libelf/gelf_update_versym.c b/libelf/gelf_update_versym.c deleted file mode 100644 index 404d5bc3..00000000 --- a/libelf/gelf_update_versym.c +++ /dev/null @@ -1,69 +0,0 @@ -/* Update symbol version information. - Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <gelf.h> -#include <stdlib.h> - -#include "libelfP.h" - - -int -gelf_update_versym (data, ndx, src) - Elf_Data *data; - int ndx; - GElf_Versym *src; -{ - Elf_Data_Scn *data_scn = (Elf_Data_Scn *) data; - - if (data == NULL) - return 0; - - /* The types for 32 and 64 bit are the same. Lucky us. */ - assert (sizeof (GElf_Versym) == sizeof (Elf32_Versym)); - assert (sizeof (GElf_Versym) == sizeof (Elf64_Versym)); - - /* Check whether we have to resize the data buffer. */ - if (unlikely (ndx < 0) - || unlikely ((ndx + 1) * sizeof (GElf_Versym) > data_scn->d.d_size)) - { - __libelf_seterrno (ELF_E_INVALID_INDEX); - return 0; - } - - if (unlikely (data_scn->d.d_type != ELF_T_HALF)) - { - /* The type of the data better should match. */ - __libelf_seterrno (ELF_E_DATA_MISMATCH); - return 0; - } - - rwlock_wrlock (data_scn->s->elf->lock); - - ((GElf_Versym *) data_scn->d.d_buf)[ndx] = *src; - - /* Mark the section as modified. */ - data_scn->s->flags |= ELF_F_DIRTY; - - rwlock_unlock (data_scn->s->elf->lock); - - return 1; -} diff --git a/libelf/gelf_xlate.c b/libelf/gelf_xlate.c deleted file mode 100644 index 25284b4d..00000000 --- a/libelf/gelf_xlate.c +++ /dev/null @@ -1,180 +0,0 @@ -/* Transformation functions for ELF data types. - Copyright (C) 1998, 1999, 2000, 2002, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -//#include <byteswap.h> -#include <stdint.h> -#include <string.h> - -#include "libelfP.h" - -#ifndef LIBELFBITS -# define LIBELFBITS 32 -#endif - - -/* Well, what shall I say. Nothing to do here. */ -#define elf_cvt_Byte(dest, src, n) \ - (__builtin_constant_p (n) && (n) == 1 \ - ? (void) (*((char *) (dest)) = *((char *) (src))) \ - : Elf32_cvt_Byte (dest, src, n)) -static void -(elf_cvt_Byte) (void *dest, const void *src, size_t n, int encode) -{ - memmove (dest, src, n); -} - - -/* We'll optimize the definition of the conversion functions here a - bit. We need only functions for 16, 32, and 64 bits. The - functions referenced in the table will be aliases for one of these - functions. Which one is decided by the ELFxx_FSZ_type. */ -#define LEN2_SWAP(Src) bswap_16 (*((uint16_t *) Src)) -#define word2_t uint16_t - -#define LEN4_SWAP(Src) bswap_32 (*((uint32_t *) Src)) -#define word4_t uint32_t - -#define LEN8_SWAP(Src) bswap_64 (*((uint64_t *) Src)) -#define word8_t uint64_t - - -/* Now define the conversion functions for the basic types. We use here - the fact that file and memory types are the same and that we have the - ELFxx_FSZ_* macros. - - At the same time we define inline functions which we will use to - convert the complex types. */ -#define FUNDAMENTAL(NAME, Name, Bits) \ - INLINE2 (ELFW2(Bits,FSZ_##NAME), ElfW2(Bits,cvt_##Name), ElfW2(Bits,Name)) -#define INLINE2(Bytes, FName, TName) \ - INLINE3 (Bytes, FName, TName) -#define INLINE3(Bytes, FName, TName) \ - static void FName (void *dest, const void *ptr, size_t len, int encode) \ - { \ - size_t n = len / sizeof (TName); \ - if (dest < ptr) \ - { \ - word##Bytes##_t *tdest = (word##Bytes##_t *) dest; \ - const word##Bytes##_t *tptr = (const word##Bytes##_t *) ptr; \ - while (n-- > 0) \ - { \ - *tdest++ = LEN##Bytes##_SWAP (tptr); \ - tptr++; \ - } \ - } \ - else \ - { \ - word##Bytes##_t *tdest = (word##Bytes##_t *) dest + n; \ - const word##Bytes##_t *tptr = (const word##Bytes##_t *) ptr + n; \ - while (n-- > 0) \ - { \ - --tptr; \ - *--tdest = LEN##Bytes##_SWAP (tptr); \ - } \ - } \ - } \ - \ - static inline void FName##1 (void *dest, const void *ptr) \ - { \ - *((word##Bytes##_t *) dest) = \ - LEN##Bytes##_SWAP ((((word##Bytes##_t *) ptr))); \ - } - - -/* Now the tricky part: define the transformation functions for the - complex types. We will use the definitions of the types in - abstract.h. */ -#define START(Bits, Name, EName) \ - static void \ - ElfW2 (Bits, cvt_##Name) (void *dest, const void *src, size_t len, \ - int encode) \ - { ElfW2(Bits, Name) *tdest = (ElfW2(Bits, Name) *) dest; \ - ElfW2(Bits, Name) *tsrc = (ElfW2(Bits, Name) *) src; \ - size_t n = len / sizeof (ElfW2(Bits, Name)); \ - for (; n > 0; ++tdest, ++tsrc, --n) { -#define END(Bits, Name) } } -#define TYPE_EXTRA(Code) -#define TYPE_XLATE(Code) Code -#define TYPE_NAME(Type, Name) TYPE_NAME2 (Type, Name) -#define TYPE_NAME2(Type, Name) Type##1 (&tdest->Name, &tsrc->Name); -#define TYPE(Name, Bits) TYPE2 (Name, Bits) -#define TYPE2(Name, Bits) TYPE3 (Name##Bits) -#define TYPE3(Name) Name (cvt_) - -/* Signal that we are generating conversion functions. */ -#define GENERATE_CONVERSION - -/* First generate the 32-bit conversion functions. */ -#define LIBELFBITS 32 -#include "gelf_xlate.h" - -/* Now generate the 64-bit conversion functions. */ -#define LIBELFBITS 64 -#include "gelf_xlate.h" - - -/* We have a few functions which we must create by hand since the sections - do not contain records of only one type. */ -#include "version_xlate.h" - - -/* Now the externally visible table with the function pointers. */ -const xfct_t __elf_xfctstom[EV_NUM - 1][EV_NUM - 1][ELFCLASSNUM - 1][ELF_T_NUM] = -{ - [EV_CURRENT - 1] = { - [EV_CURRENT - 1] = { - [ELFCLASS32 - 1] = { -#define define_xfcts(Bits) \ - [ELF_T_BYTE] = elf_cvt_Byte, \ - [ELF_T_ADDR] = ElfW2(Bits, cvt_Addr), \ - [ELF_T_DYN] = ElfW2(Bits, cvt_Dyn), \ - [ELF_T_EHDR] = ElfW2(Bits, cvt_Ehdr), \ - [ELF_T_HALF] = ElfW2(Bits, cvt_Half), \ - [ELF_T_OFF] = ElfW2(Bits, cvt_Off), \ - [ELF_T_PHDR] = ElfW2(Bits, cvt_Phdr), \ - [ELF_T_RELA] = ElfW2(Bits, cvt_Rela), \ - [ELF_T_REL] = ElfW2(Bits, cvt_Rel), \ - [ELF_T_SHDR] = ElfW2(Bits, cvt_Shdr), \ - [ELF_T_SWORD] = ElfW2(Bits, cvt_Sword), \ - [ELF_T_SYM] = ElfW2(Bits, cvt_Sym), \ - [ELF_T_WORD] = ElfW2(Bits, cvt_Word), \ - [ELF_T_XWORD] = ElfW2(Bits, cvt_Xword), \ - [ELF_T_SXWORD] = ElfW2(Bits, cvt_Sxword), \ - [ELF_T_VDEF] = elf_cvt_Verdef, \ - [ELF_T_VDAUX] = elf_cvt_Verdef, \ - [ELF_T_VNEED] = elf_cvt_Verneed, \ - [ELF_T_VNAUX] = elf_cvt_Verneed, \ - [ELF_T_NHDR] = ElfW2(Bits, cvt_Nhdr), \ - [ELF_T_SYMINFO] = ElfW2(Bits, cvt_Syminfo), \ - [ELF_T_MOVE] = ElfW2(Bits, cvt_Move), \ - [ELF_T_LIB] = ElfW2(Bits, cvt_Lib) - define_xfcts (32) - }, - [ELFCLASS64 - 1] = { - define_xfcts (64) - } - } - } -}; -/* For now we only handle the case where the memory representation is the - same as the file representation. Should this change we have to define - separate functions. For now reuse them. */ -//strong_alias (__elf_xfctstom, __elf_xfctstof) diff --git a/libelf/gelf_xlate.h b/libelf/gelf_xlate.h deleted file mode 100644 index 42e91c08..00000000 --- a/libelf/gelf_xlate.h +++ /dev/null @@ -1,43 +0,0 @@ -/* Helper file for type conversion function generation. - Copyright (C) 1998, 1999, 2000, 2002, 2004 Red Hat, Inc. - Contributed by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - - -/* Simple types. */ -FUNDAMENTAL (ADDR, Addr, LIBELFBITS); -FUNDAMENTAL (OFF, Off, LIBELFBITS); -FUNDAMENTAL (HALF, Half, LIBELFBITS); -FUNDAMENTAL (WORD, Word, LIBELFBITS); -FUNDAMENTAL (SWORD, Sword, LIBELFBITS); -FUNDAMENTAL (XWORD, Xword, LIBELFBITS); -FUNDAMENTAL (SXWORD, Sxword, LIBELFBITS); - -/* The structured types. */ -TYPE (Ehdr, LIBELFBITS) -TYPE (Phdr, LIBELFBITS) -TYPE (Shdr, LIBELFBITS) -TYPE (Sym, LIBELFBITS) -TYPE (Rel, LIBELFBITS) -TYPE (Rela, LIBELFBITS) -TYPE (Note, LIBELFBITS) -TYPE (Dyn, LIBELFBITS) -TYPE (Syminfo, LIBELFBITS) -TYPE (Move, LIBELFBITS) -TYPE (Lib, LIBELFBITS) - - -/* Prepare for the next round. */ -#undef LIBELFBITS diff --git a/libelf/gelf_xlatetof.c b/libelf/gelf_xlatetof.c deleted file mode 100644 index 53cfae2e..00000000 --- a/libelf/gelf_xlatetof.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Convert from memory to file representation. Generic ELF version. - Copyright (C) 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <gelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -Elf_Data * -gelf_xlatetof (elf, dest, src, encode) - Elf *elf; - Elf_Data *dest; - const Elf_Data * src; - unsigned int encode; -{ - if (elf == NULL) - return NULL; - - return (elf->class == ELFCLASS32 - ? INTUSE(elf32_xlatetof) (dest, src, encode) - : INTUSE(elf64_xlatetof) (dest, src, encode)); -} diff --git a/libelf/gelf_xlatetom.c b/libelf/gelf_xlatetom.c deleted file mode 100644 index 9295ee09..00000000 --- a/libelf/gelf_xlatetom.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Convert from file to memory representation. Generic ELF version. - Copyright (C) 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <gelf.h> -#include <stddef.h> - -#include "libelfP.h" - - -Elf_Data * -gelf_xlatetom (elf, dest, src, encode) - Elf *elf; - Elf_Data *dest; - const Elf_Data * src; - unsigned int encode; -{ - if (elf == NULL) - return NULL; - - return (elf->class == ELFCLASS32 - ? INTUSE(elf32_xlatetom) (dest, src, encode) - : INTUSE(elf64_xlatetom) (dest, src, encode)); -} diff --git a/libelf/libelf.h b/libelf/libelf.h deleted file mode 100644 index 5b3dc00b..00000000 --- a/libelf/libelf.h +++ /dev/null @@ -1,343 +0,0 @@ -/* Interface for libelf. - Copyright (C) 1998, 1999, 2000, 2002, 2004 Red Hat, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef _LIBELF_H -#define _LIBELF_H 1 - -#include <sys/types.h> - -/* Get the ELF types. */ -#include <elf.h> - - -/* Known translation types. */ -typedef enum -{ - ELF_T_BYTE, /* unsigned char */ - ELF_T_ADDR, /* Elf32_Addr, Elf64_Addr, ... */ - ELF_T_DYN, /* Dynamic section record. */ - ELF_T_EHDR, /* ELF header. */ - ELF_T_HALF, /* Elf32_Half, Elf64_Half, ... */ - ELF_T_OFF, /* Elf32_Off, Elf64_Off, ... */ - ELF_T_PHDR, /* Program header. */ - ELF_T_RELA, /* Relocation entry with addend. */ - ELF_T_REL, /* Relocation entry. */ - ELF_T_SHDR, /* Section header. */ - ELF_T_SWORD, /* Elf32_Sword, Elf64_Sword, ... */ - ELF_T_SYM, /* Symbol record. */ - ELF_T_WORD, /* Elf32_Word, Elf64_Word, ... */ - ELF_T_XWORD, /* Elf32_Xword, Elf64_Xword, ... */ - ELF_T_SXWORD, /* Elf32_Sxword, Elf64_Sxword, ... */ - ELF_T_VDEF, /* Elf32_Verdef, Elf64_Verdef, ... */ - ELF_T_VDAUX, /* Elf32_Verdaux, Elf64_Verdaux, ... */ - ELF_T_VNEED, /* Elf32_Verneed, Elf64_Verneed, ... */ - ELF_T_VNAUX, /* Elf32_Vernaux, Elf64_Vernaux, ... */ - ELF_T_NHDR, /* Elf32_Nhdr, Elf64_Nhdr, ... */ - ELF_T_SYMINFO, /* Elf32_Syminfo, Elf64_Syminfo, ... */ - ELF_T_MOVE, /* Elf32_Move, Elf64_Move, ... */ - ELF_T_LIB, /* Elf32_Lib, Elf64_Lib, ... */ - /* Keep this the last entry. */ - ELF_T_NUM -} Elf_Type; - -/* Descriptor for data to be converted to or from memory format. */ -typedef struct -{ - void *d_buf; /* Pointer to the actual data. */ - Elf_Type d_type; /* Type of this piece of data. */ - unsigned int d_version; /* ELF version. */ - size_t d_size; /* Size in bytes. */ - off_t d_off; /* Offset into section. */ - size_t d_align; /* Alignment in section. */ -} Elf_Data; - - -/* Commands for `...'. */ -typedef enum -{ - ELF_C_NULL, /* Nothing, terminate, or compute only. */ - ELF_C_READ, /* Read .. */ - ELF_C_RDWR, /* Read and write .. */ - ELF_C_WRITE, /* Write .. */ - ELF_C_CLR, /* Clear flag. */ - ELF_C_SET, /* Set flag. */ - ELF_C_FDDONE, /* Signal that file descriptor will not be - used anymore. */ - ELF_C_FDREAD, /* Read rest of data so that file descriptor - is not used anymore. */ - /* The following are extensions. */ - ELF_C_READ_MMAP, /* Read, but mmap the file if possible. */ - ELF_C_RDWR_MMAP, /* Read and write, with mmap. */ - ELF_C_WRITE_MMAP, /* Write, with mmap. */ - ELF_C_READ_MMAP_PRIVATE, /* Read, but memory is writable, results are - not written to the file. */ - ELF_C_EMPTY, /* Copy basic file data but not the content. */ - /* Keep this the last entry. */ - ELF_C_NUM -} Elf_Cmd; - - -/* Flags for the ELF structures. */ -enum -{ - ELF_F_DIRTY = 0x1, -#define ELF_F_DIRTY ELF_F_DIRTY - ELF_F_LAYOUT = 0x4, -#define ELF_F_LAYOUT ELF_F_LAYOUT - ELF_F_PERMISSIVE = 0x8 -#define ELF_F_PERMISSIVE ELF_F_PERMISSIVE -}; - - -/* Identification values for recognized object files. */ -typedef enum -{ - ELF_K_NONE, /* Unknown. */ - ELF_K_AR, /* Archive. */ - ELF_K_COFF, /* Stupid old COFF. */ - ELF_K_ELF, /* ELF file. */ - /* Keep this the last entry. */ - ELF_K_NUM -} Elf_Kind; - - -/* Archive member header. */ -typedef struct -{ - char *ar_name; /* Name of archive member. */ - time_t ar_date; /* File date. */ - uid_t ar_uid; /* User ID. */ - gid_t ar_gid; /* Group ID. */ - mode_t ar_mode; /* File mode. */ - off_t ar_size; /* File size. */ - char *ar_rawname; /* Original name of archive member. */ -} Elf_Arhdr; - - -/* Archive symbol table entry. */ -typedef struct -{ - char *as_name; /* Symbol name. */ - size_t as_off; /* Offset for this file in the archive. */ - unsigned long int as_hash; /* Hash value of the name. */ -} Elf_Arsym; - - -/* Descriptor for the ELF file. */ -typedef struct Elf Elf; - -/* Descriptor for ELF file section. */ -typedef struct Elf_Scn Elf_Scn; - - -#ifdef __cplusplus -extern "C" { -#endif - -/* Return descriptor for ELF file to work according to CMD. */ -extern Elf *elf_begin (int __fildes, Elf_Cmd __cmd, Elf *__ref); - -/* Create a clone of an existing ELF descriptor. */ - extern Elf *elf_clone (Elf *__elf, Elf_Cmd __cmd); - -/* Create descriptor for memory region. */ -extern Elf *elf_memory (char *__image, size_t __size); - -/* Advance archive descriptor to next element. */ -extern Elf_Cmd elf_next (Elf *__elf); - -/* Free resources allocated for ELF. */ -extern int elf_end (Elf *__elf); - -/* Update ELF descriptor and write file to disk. */ -extern off_t elf_update (Elf *__elf, Elf_Cmd __cmd); - -/* Determine what kind of file is associated with ELF. */ -extern Elf_Kind elf_kind (Elf *__elf) __attribute__ ((__pure__)); - -/* Get the base offset for an object file. */ -extern off_t elf_getbase (Elf *__elf); - - -/* Retrieve file identification data. */ -extern char *elf_getident (Elf *__elf, size_t *__ptr); - -/* Retrieve class-dependent object file header. */ -extern Elf32_Ehdr *elf32_getehdr (Elf *__elf); -/* Similar but this time the binary calls is ELFCLASS64. */ -extern Elf64_Ehdr *elf64_getehdr (Elf *__elf); - -/* Create ELF header if none exists. */ -extern Elf32_Ehdr *elf32_newehdr (Elf *__elf); -/* Similar but this time the binary calls is ELFCLASS64. */ -extern Elf64_Ehdr *elf64_newehdr (Elf *__elf); - -/* Retrieve class-dependent program header table. */ -extern Elf32_Phdr *elf32_getphdr (Elf *__elf); -/* Similar but this time the binary calls is ELFCLASS64. */ -extern Elf64_Phdr *elf64_getphdr (Elf *__elf); - -/* Create ELF program header. */ -extern Elf32_Phdr *elf32_newphdr (Elf *__elf, size_t __cnt); -/* Similar but this time the binary calls is ELFCLASS64. */ -extern Elf64_Phdr *elf64_newphdr (Elf *__elf, size_t __cnt); - - -/* Get section at INDEX. */ -extern Elf_Scn *elf_getscn (Elf *__elf, size_t __index); - -/* Get index of section. */ -extern size_t elf_ndxscn (Elf_Scn *__scn); - -/* Get section with next section index. */ -extern Elf_Scn *elf_nextscn (Elf *__elf, Elf_Scn *__scn); - -/* Create a new section and append it at the end of the table. */ -extern Elf_Scn *elf_newscn (Elf *__elf); - -/* Get the number of sections in the ELF file. If the file uses more - sections than can be represented in the e_shnum field of the ELF - header the information from the sh_size field in the zeroth section - header is used. */ -extern int elf_getshnum (Elf *__elf, size_t *__dst); - - -/* Get the section index of the section header string table in the ELF - file. If the index cannot be represented in the e_shnum field of - the ELF header the information from the sh_link field in the zeroth - section header is used. */ -extern int elf_getshstrndx (Elf *__elf, size_t *__dst); - - -/* Retrieve section header of ELFCLASS32 binary. */ -extern Elf32_Shdr *elf32_getshdr (Elf_Scn *__scn); -/* Similar for ELFCLASS64. */ -extern Elf64_Shdr *elf64_getshdr (Elf_Scn *__scn); - - -/* Set or clear flags for ELF file. */ -extern unsigned int elf_flagelf (Elf *__elf, Elf_Cmd __cmd, - unsigned int __flags); -/* Similarly for the ELF header. */ -extern unsigned int elf_flagehdr (Elf *__elf, Elf_Cmd __cmd, - unsigned int __flags); -/* Similarly for the ELF program header. */ -extern unsigned int elf_flagphdr (Elf *__elf, Elf_Cmd __cmd, - unsigned int __flags); -/* Similarly for the given ELF section. */ -extern unsigned int elf_flagscn (Elf_Scn *__scn, Elf_Cmd __cmd, - unsigned int __flags); -/* Similarly for the given ELF data. */ -extern unsigned int elf_flagdata (Elf_Data *__data, Elf_Cmd __cmd, - unsigned int __flags); -/* Similarly for the given ELF section header. */ -extern unsigned int elf_flagshdr (Elf_Scn *__scn, Elf_Cmd __cmd, - unsigned int __flags); - - -/* Get data from section while translating from file representation - to memory representation. */ -extern Elf_Data *elf_getdata (Elf_Scn *__scn, Elf_Data *__data); - -/* Get uninterpreted section content. */ -extern Elf_Data *elf_rawdata (Elf_Scn *__scn, Elf_Data *__data); - -/* Create new data descriptor for section SCN. */ -extern Elf_Data *elf_newdata (Elf_Scn *__scn); - - -/* Return pointer to string at OFFSET in section INDEX. */ -extern char *elf_strptr (Elf *__elf, size_t __index, size_t __offset); - - -/* Return header of archive. */ -extern Elf_Arhdr *elf_getarhdr (Elf *__elf); - -/* Select archive element at OFFSET. */ -extern size_t elf_rand (Elf *__elf, size_t __offset); - -/* Get symbol table of archhive. */ -extern Elf_Arsym *elf_getarsym (Elf *__elf, size_t *__ptr); - - -/* Control ELF descriptor. */ -extern int elf_cntl (Elf *__elf, Elf_Cmd __cmd); - -/* Retrieve uninterpreted file contents. */ -extern char *elf_rawfile (Elf *__elf, size_t *__ptr); - - -/* Return size of array of COUNT elements of the type denoted by TYPE - in the external representation. The binary class is taken from ELF. - The result is based on version VERSION of the ELF standard. */ -extern size_t elf32_fsize (Elf_Type __type, size_t __count, - unsigned int __version) - __attribute__ ((__const__)); -/* Similar but this time the binary calls is ELFCLASS64. */ -extern size_t elf64_fsize (Elf_Type __type, size_t __count, - unsigned int __version) - __attribute__ ((__const__)); - - -/* Convert data structure from the representation in the file represented - by ELF to their memory representation. */ -extern Elf_Data *elf32_xlatetom (Elf_Data *__dest, const Elf_Data *__src, - unsigned int __encode); -/* Same for 64 bit class. */ -extern Elf_Data *elf64_xlatetom (Elf_Data *__dest, const Elf_Data *__src, - unsigned int __encode); - -/* Convert data structure from to the representation in memory - represented by ELF file representation. */ -extern Elf_Data *elf32_xlatetof (Elf_Data *__dest, const Elf_Data *__src, - unsigned int __encode); -/* Same for 64 bit class. */ -extern Elf_Data *elf64_xlatetof (Elf_Data *__dest, const Elf_Data *__src, - unsigned int __encode); - - -/* Return error code of last failing function call. This value is kept - separately for each thread. */ -extern int elf_errno (void); - -/* Return error string for ERROR. If ERROR is zero, return error string - for most recent error or NULL is none occurred. If ERROR is -1 the - behaviour is similar to the last case except that not NULL but a legal - string is returned. */ -extern const char *elf_errmsg (int __error); - - -/* Coordinate ELF library and application versions. */ -extern unsigned int elf_version (unsigned int __version); - -/* Set fill bytes used to fill holes in data structures. */ -extern void elf_fill (int __fill); - -/* Compute hash value. */ -extern unsigned long int elf_hash (const char *__string) - __attribute__ ((__pure__)); - - -/* Compute simple checksum from permanent parts of the ELF file. */ -extern long int elf32_checksum (Elf *__elf); -/* Similar but this time the binary calls is ELFCLASS64. */ -extern long int elf64_checksum (Elf *__elf); - -#ifdef __cplusplus -} -#endif - -#endif /* libelf.h */ diff --git a/libelf/libelf.map b/libelf/libelf.map deleted file mode 100644 index f416da7f..00000000 --- a/libelf/libelf.map +++ /dev/null @@ -1,106 +0,0 @@ -ELFUTILS_1.0 { - global: - elf32_checksum; - elf32_fsize; - elf32_getehdr; - elf32_getphdr; - elf32_getshdr; - elf32_newehdr; - elf32_newphdr; - elf32_xlatetof; - elf32_xlatetom; - elf64_checksum; - elf64_fsize; - elf64_getehdr; - elf64_getphdr; - elf64_getshdr; - elf64_newehdr; - elf64_newphdr; - elf64_xlatetof; - elf64_xlatetom; - elf_begin; - elf_clone; - elf_cntl; - elf_end; - elf_errmsg; - elf_errno; - elf_fill; - elf_flagdata; - elf_flagehdr; - elf_flagelf; - elf_flagphdr; - elf_flagscn; - elf_flagshdr; - elf_getarhdr; - elf_getarsym; - elf_getbase; - elf_getdata; - elf_getident; - elf_getscn; - elf_getshnum; - elf_getshstrndx; - elf_hash; - elf_kind; - elf_memory; - elf_ndxscn; - elf_newdata; - elf_newscn; - elf_next; - elf_nextscn; - elf_rand; - elf_rawdata; - elf_rawfile; - elf_scncnt; - elf_strptr; - elf_update; - elf_version; - gelf_checksum; - gelf_freechunk; - gelf_fsize; - gelf_getclass; - gelf_getdyn; - gelf_getehdr; - gelf_getmove; - gelf_getphdr; - gelf_getrel; - gelf_getrela; - gelf_getshdr; - gelf_getsym; - gelf_getsyminfo; - gelf_getsymshndx; - gelf_getverdaux; - gelf_getverdef; - gelf_getvernaux; - gelf_getverneed; - gelf_getversym; - gelf_newehdr; - gelf_newphdr; - gelf_rawchunk; - gelf_update_dyn; - gelf_update_ehdr; - gelf_update_move; - gelf_update_phdr; - gelf_update_rel; - gelf_update_rela; - gelf_update_shdr; - gelf_update_sym; - gelf_update_syminfo; - gelf_update_symshndx; - gelf_update_verdaux; - gelf_update_verdef; - gelf_update_vernaux; - gelf_update_verneed; - gelf_update_versym; - gelf_xlatetof; - gelf_xlatetom; - nlist; - - local: - *; -}; - -ELFUTILS_1.1 { - global: - gelf_getlib; - gelf_update_lib; -} ELFUTILS_1.0; diff --git a/libelf/libelfP.h b/libelf/libelfP.h deleted file mode 100644 index fd39a38f..00000000 --- a/libelf/libelfP.h +++ /dev/null @@ -1,532 +0,0 @@ -/* Internal interfaces for libelf. - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. - Contributed by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef _LIBELFP_H -#define _LIBELFP_H 1 - -#include <ar.h> -#include <gelf.h> -#include <stdint.h> - -/* gettext helper macros. */ -#define _(Str) dgettext ("libelf", Str) - - -/* Helper Macros to write 32 bit and 64 bit functions. */ -#define __elfw2_(Bits, Name) __elf##Bits##_##Name -#define elfw2_(Bits, Name) elf##Bits##_##Name -#define ElfW2_(Bits, Name) Elf##Bits##_##Name -#define ELFW2_(Bits, Name) ELF##Bits##_##Name -#define ELFW_(Name, Bits) Name##Bits -#define __elfw2(Bits, Name) __elfw2_(Bits, Name) -#define elfw2(Bits, Name) elfw2_(Bits, Name) -#define ElfW2(Bits, Name) ElfW2_(Bits, Name) -#define ELFW2(Bits, Name) ELFW2_(Bits, Name) -#define ELFW(Name, Bits) ELFW_(Name, Bits) - - -/* Sizes of the external types, for 32 bits objects. */ -#define ELF32_FSZ_ADDR 4 -#define ELF32_FSZ_OFF 4 -#define ELF32_FSZ_HALF 2 -#define ELF32_FSZ_WORD 4 -#define ELF32_FSZ_SWORD 4 -#define ELF32_FSZ_XWORD 8 -#define ELF32_FSZ_SXWORD 8 - -/* Same for 64 bits objects. */ -#define ELF64_FSZ_ADDR 8 -#define ELF64_FSZ_OFF 8 -#define ELF64_FSZ_HALF 2 -#define ELF64_FSZ_WORD 4 -#define ELF64_FSZ_SWORD 4 -#define ELF64_FSZ_XWORD 8 -#define ELF64_FSZ_SXWORD 8 - - -/* This is an extension of the ELF_F_* enumeration. The values here are - not part of the library interface, they are only used internally. */ -enum -{ - ELF_F_MMAPPED = 0x40, - ELF_F_MALLOCED = 0x80, - ELF_F_FILEDATA = 0x100 -}; - - -/* Get definition of all the external types. */ -#include "exttypes.h" - - -/* Error values. */ -enum -{ - ELF_E_NOERROR = 0, - ELF_E_UNKNOWN_ERROR, - ELF_E_UNKNOWN_VERSION, - ELF_E_UNKNOWN_TYPE, - ELF_E_INVALID_HANDLE, - ELF_E_SOURCE_SIZE, - ELF_E_DEST_SIZE, - ELF_E_INVALID_ENCODING, - ELF_E_NOMEM, - ELF_E_INVALID_FILE, - ELF_E_INVALID_OP, - ELF_E_NO_VERSION, - ELF_E_INVALID_CMD, - ELF_E_RANGE, - ELF_E_ARCHIVE_FMAG, - ELF_E_INVALID_ARCHIVE, - ELF_E_NO_ARCHIVE, - ELF_E_NO_INDEX, - ELF_E_READ_ERROR, - ELF_E_WRITE_ERROR, - ELF_E_INVALID_CLASS, - ELF_E_INVALID_INDEX, - ELF_E_INVALID_OPERAND, - ELF_E_INVALID_SECTION, - ELF_E_INVALID_COMMAND, - ELF_E_WRONG_ORDER_EHDR, - ELF_E_FD_DISABLED, - ELF_E_FD_MISMATCH, - ELF_E_OFFSET_RANGE, - ELF_E_NOT_NUL_SECTION, - ELF_E_DATA_MISMATCH, - ELF_E_INVALID_SECTION_HEADER, - ELF_E_INVALID_DATA, - ELF_E_DATA_ENCODING, - ELF_E_SECTION_TOO_SMALL, - ELF_E_INVALID_ALIGN, - ELF_E_INVALID_SHENTSIZE, - ELF_E_UPDATE_RO, - ELF_E_NOFILE, - ELF_E_GROUP_NOT_REL, - ELF_E_INVALID_PHDR, - ELF_E_NO_PHDR, - /* Keep this as the last entry. */ - ELF_E_NUM -}; - - -/* The visible `Elf_Data' type is not sufficent for some operations due - to a misdesigned interface. Extend it for internal purposes. */ -typedef struct -{ - Elf_Data d; - Elf_Scn *s; -} Elf_Data_Scn; - - -/* List of `Elf_Data' descriptors. This is what makes up the section - contents. */ -typedef struct Elf_Data_List -{ - /* `data' *must* be the first element in the struct. */ - Elf_Data_Scn data; - struct Elf_Data_List *next; - int flags; -} Elf_Data_List; - - -/* Descriptor for ELF section. */ -struct Elf_Scn -{ - /* We have to distinguish several different situations: - - 1. the section is user created. Therefore there is no file or memory - region to read the data from. Here we have two different subcases: - - a) data was not yet added (before the first `elf_newdata' call) - - b) at least one data set is available - - 2. this is a section from a file/memory region. We have to read the - current content in one data block if we have to. But we don't - read the data until it is necessary. So we have the subcases: - - a) the section in the file has size zero (for whatever reason) - - b) the data of the file is not (yet) read - - c) the data is read and available. - - In addition to this we have different data sets, the raw and the converted - data. This distinction only exists for the data read from the file. - All user-added data set (all but the first when read from the file or - all of them for user-create sections) are the same in both formats. - We don't create the converted data before it is necessary. - - The `data_read' element signals whether data is available in the - raw format. - - If there is data from the file/memory region or if read one data - set is added the `rawdata_list_read' pointer in non-NULL and points - to the last filled data set. `raw_datalist_rear' is therefore NULL - only if there is no data set at all. - - This so far allows to distinguish all but two cases (given that the - `rawdata_list' and `data_list' entries are initialized to zero) is - between not yet loaded data from the file/memory region and a section - with zero size and type ELF_T_BYTE. */ - Elf_Data_List data_list; /* List of data buffers. */ - Elf_Data_List *data_list_rear; /* Pointer to the rear of the data list. */ - - Elf_Data_Scn rawdata; /* Uninterpreted data of the section. */ - - int data_read; /* Nonzero if the section was created by the - user or if the data from the file/memory - is read. */ - - size_t index; /* Index of this section. */ - struct Elf *elf; /* The underlying ELF file. */ - - union - { - Elf32_Shdr *e32; /* Pointer to 32bit section header. */ - Elf64_Shdr *e64; /* Pointer to 64bit section header. */ - } shdr; - - unsigned int shdr_flags; /* Section header modified? */ - unsigned int flags; /* Section changed in size? */ - - char *rawdata_base; /* The unmodified data of the section. */ - char *data_base; /* The converted data of the section. */ - - struct Elf_ScnList *list; /* Pointer the the section list element the - data is in. */ -}; - - -/* List of section. */ -typedef struct Elf_ScnList -{ - unsigned int cnt; /* Number of elements of 'data' used. */ - unsigned int max; /* Number of elements of 'data' allocated. */ - struct Elf_ScnList *next; /* Next block of sections. */ - struct Elf_Scn data[0]; /* Section data. */ -} Elf_ScnList; - - -/* The ELF descriptor. */ -struct Elf -{ - /* What kind of file is underneath (ELF file, archive...). */ - Elf_Kind kind; - - /* Command used to create this descriptor. */ - Elf_Cmd cmd; - - /* The binary class. */ - unsigned int class; - - /* The used file descriptor. -1 if not available anymore. */ - int fildes; - - /* Offset in the archive this file starts or zero. */ - off_t start_offset; - - /* Size of the file in the archive or the entire file size, or ~0 - for an (yet) unknown size. */ - size_t maximum_size; - - /* Address to which the file was mapped. NULL if not mapped. */ - void *map_address; - - /* Describes the way the memory was allocated and if the dirty bit is - signalled it means that the whole file has to be rewritten since - the layout changed. */ - int flags; - - /* When created for an archive member this points to the descriptor - for the archive. */ - Elf *parent; - - /* Lock to handle multithreaded programs. */ - rwlock_define (,lock); - - /* Reference counting for the descriptor. */ - int ref_count; - - struct Elf *next; /* Used in list of archive descriptors. */ - - union - { - struct - { - int ehdr_flags; /* Flags (dirty) for ELF header. */ - int phdr_flags; /* Flags (dirty|malloc) for program header. */ - int shdr_malloced; /* Nonzero if shdr array was allocated. */ - - /* The next fields are only useful when testing for ==/!= NULL. */ - void *ehdr; - void *shdr; - void *phdr; - - Elf_ScnList *scns_last; /* Last element in the section list. - If NULL the data has not yet been - read from the file. */ - unsigned int scnincr; /* Number of sections allocate the last - time. */ - off64_t sizestr_offset; /* Offset of the size string in the parent - if this is an archive member. */ - } elf; - - struct - { - int ehdr_flags; /* Flags (dirty) for ELF header. */ - int phdr_flags; /* Flags (dirty|malloc) for program header. */ - int shdr_malloced; /* Nonzero if shdr array was allocated. */ - - Elf32_Ehdr *ehdr; /* Pointer to the ELF header. This is - never malloced. */ - Elf32_Shdr *shdr; /* Used when reading from a file. */ - Elf32_Phdr *phdr; /* Pointer to the program header array. */ - Elf_ScnList *scns_last; /* Last element in the section list. - If NULL the data has not yet been - read from the file. */ - unsigned int scnincr; /* Number of sections allocate the last - time. */ - off64_t sizestr_offset; /* Offset of the size string in the parent - if this is an archive member. */ - Elf32_Ehdr ehdr_mem; /* Memory used for ELF header when not - mmaped. */ - char __e32scnspad[sizeof (Elf64_Ehdr) - sizeof (Elf32_Ehdr)]; - - /* The section array. */ - Elf_ScnList scns; - } elf32; - - struct - { - int ehdr_flags; /* Flags (dirty) for ELF header. */ - int phdr_flags; /* Flags (dirty|malloc) for program header. */ - int shdr_malloced; /* Nonzero if shdr array was allocated. */ - - Elf64_Ehdr *ehdr; /* Pointer to the ELF header. This is - never malloced. */ - Elf64_Shdr *shdr; /* Used when reading from a file. */ - Elf64_Phdr *phdr; /* Pointer to the program header array. */ - Elf_ScnList *scns_last; /* Last element in the section list. - If NULL the data has not yet been - read from the file. */ - unsigned int scnincr; /* Number of sections allocate the last - time. */ - off64_t sizestr_offset; /* Offset of the size string in the parent - if this is an archive member. */ - Elf64_Ehdr ehdr_mem; /* Memory used for ELF header when not - mmaped. */ - - /* The section array. */ - Elf_ScnList scns; - } elf64; - - struct - { - int has_index; /* Set when file has index. 0 means - undecided, > 0 means it has one. */ - Elf_Arsym *ar_sym; /* Symbol table returned by elf_getarsym. */ - size_t ar_sym_num; /* Number of entries in `ar_sym'. */ - char *long_names; /* If no index is available but long names - are used this elements points to the data.*/ - size_t long_names_len; /* Length of the long name table. */ - off_t offset; /* Offset in file we are currently at. - elf_next() advances this to the next - member of the archive. */ - Elf_Arhdr elf_ar_hdr; /* Structure returned by 'elf_getarhdr'. */ - struct ar_hdr ar_hdr; /* Header read from file. */ - char ar_name[16]; /* NUL terminated ar_name of elf_ar_hdr. */ - char raw_name[17]; /* This is a buffer for the NUL terminated - named raw_name used in the elf_ar_hdr. */ - struct Elf *children; /* List of all descriptors for this archive. */ - } ar; - } state; - - /* There absolutely never must be anything following the union. */ -}; - - -/* Type of the conversion functions. These functions will convert the - byte order. */ -typedef void (*xfct_t) (void *, const void *, size_t, int); - -/* The table with the function pointers. */ -extern const xfct_t __elf_xfctstom[EV_NUM - 1][EV_NUM - 1][ELFCLASSNUM - 1][ELF_T_NUM] attribute_hidden; -extern const xfct_t __elf_xfctstof[EV_NUM - 1][EV_NUM - 1][ELFCLASSNUM - 1][ELF_T_NUM] attribute_hidden; - - -/* Array with sizes of the external types indexed by ELF version, binary - class, and type. */ -extern const size_t __libelf_type_sizes[EV_NUM - 1][ELFCLASSNUM - 1][ELF_T_NUM] attribute_hidden; -/* We often have to access the size for a type in the current version. */ -#if EV_NUM != 2 -# define elf_typesize(class,type,n) \ - elfw2(class,fsize) (type, n, __libelf_version) -#else -# define elf_typesize(class,type,n) \ - (__libelf_type_sizes[EV_CURRENT - 1][ELFW(ELFCLASS,class) - 1][type] * n) -#endif - -/* Currently selected version of the ELF specification. */ -extern unsigned int __libelf_version attribute_hidden; - -/* The byte value used for filling gaps. */ -extern int __libelf_fill_byte attribute_hidden; - -/* Nonzero if the version was set. */ -extern int __libelf_version_initialized attribute_hidden; - - -/* The libelf API does not have such a function but it is still useful. - Get the memory size for the given type. - - These functions cannot be marked internal since they are aliases - of the export elfXX_fsize functions.*/ -extern size_t __elf32_msize (Elf_Type __type, size_t __count, - unsigned int __version); -extern size_t __elf64_msize (Elf_Type __type, size_t __count, - unsigned int __version); - - -/* Create Elf descriptor from memory image. */ -extern Elf *__libelf_read_mmaped_file (int fildes, void *map_address, - off_t offset, size_t maxsize, - Elf_Cmd cmd, Elf *parent) - internal_function; - -/* Set error value. */ -extern void __libelf_seterrno (int value) internal_function; - -/* Get the next archive header. */ -extern int __libelf_next_arhdr (Elf *elf) internal_function; - -/* Read all of the file associated with the descriptor. */ -extern char *__libelf_readall (Elf *elf) internal_function; - -/* Read the complete section table and convert the byte order if necessary. */ -extern int __libelf_readsections (Elf *elf) internal_function; - -/* Store the information for the raw data in the `rawdata_list' element. */ -extern int __libelf_set_rawdata (Elf_Scn *scn) internal_function; - - -/* Helper functions for elf_update. */ -extern off_t __elf32_updatenull (Elf *elf, int *change_bop, size_t shnum) - internal_function; -extern off_t __elf64_updatenull (Elf *elf, int *change_bop, size_t shnum) - internal_function; - -extern int __elf32_updatemmap (Elf *elf, int change_bo, size_t shnum) - internal_function; -extern int __elf64_updatemmap (Elf *elf, int change_bo, size_t shnum) - internal_function; -extern int __elf32_updatefile (Elf *elf, int change_bo, size_t shnum) - internal_function; -extern int __elf64_updatefile (Elf *elf, int change_bo, size_t shnum) - internal_function; - - -/* Alias for exported functions to avoid PLT entries. */ -extern Elf *__elf_begin_internal (int __fildes, Elf_Cmd __cmd, Elf *__ref) - attribute_hidden; -extern Elf32_Ehdr *__elf32_getehdr_internal (Elf *__elf) attribute_hidden; -extern Elf64_Ehdr *__elf64_getehdr_internal (Elf *__elf) attribute_hidden; -extern Elf32_Ehdr *__elf32_newehdr_internal (Elf *__elf) attribute_hidden; -extern Elf64_Ehdr *__elf64_newehdr_internal (Elf *__elf) attribute_hidden; -extern Elf32_Phdr *__elf32_getphdr_internal (Elf *__elf) attribute_hidden; -extern Elf64_Phdr *__elf64_getphdr_internal (Elf *__elf) attribute_hidden; -extern Elf32_Phdr *__elf32_newphdr_internal (Elf *__elf, size_t __cnt) - attribute_hidden; -extern Elf64_Phdr *__elf64_newphdr_internal (Elf *__elf, size_t __cnt) - attribute_hidden; -extern int __elf_getshnum_internal (Elf *__elf, size_t *__dst) - attribute_hidden; -extern int __elf_getshstrndx_internal (Elf *__elf, size_t *__dst) - attribute_hidden; -extern Elf32_Shdr *__elf32_getshdr_internal (Elf_Scn *__scn) attribute_hidden; -extern Elf64_Shdr *__elf64_getshdr_internal (Elf_Scn *__scn) attribute_hidden; -extern Elf_Scn *__elf_getscn_internal (Elf *__elf, size_t __index) - attribute_hidden; -extern Elf_Scn *__elf_nextscn_internal (Elf *__elf, Elf_Scn *__scn) - attribute_hidden; -extern Elf_Data *__elf_getdata_internal (Elf_Scn *__scn, Elf_Data *__data) - attribute_hidden; -extern Elf_Data *__elf_rawdata_internal (Elf_Scn *__scn, Elf_Data *__data) - attribute_hidden; -extern char *__elf_strptr_internal (Elf *__elf, size_t __index, - size_t __offset) attribute_hidden; -extern Elf_Data *__elf32_xlatetom_internal (Elf_Data *__dest, - const Elf_Data *__src, - unsigned int __encode) - attribute_hidden; -extern Elf_Data *__elf64_xlatetom_internal (Elf_Data *__dest, - const Elf_Data *__src, - unsigned int __encode) - attribute_hidden; -extern Elf_Data *__elf32_xlatetof_internal (Elf_Data *__dest, - const Elf_Data *__src, - unsigned int __encode) - attribute_hidden; -extern Elf_Data *__elf64_xlatetof_internal (Elf_Data *__dest, - const Elf_Data *__src, - unsigned int __encode) - attribute_hidden; -extern unsigned int __elf_version_internal (unsigned int __version) - attribute_hidden; -extern unsigned long int __elf_hash_internal (const char *__string) - __attribute__ ((__pure__, visibility ("hidden"))); -extern long int __elf32_checksum_internal (Elf *__elf) attribute_hidden; -extern long int __elf64_checksum_internal (Elf *__elf) attribute_hidden; - - -extern size_t __gelf_fsize_internal (Elf *__elf, Elf_Type __type, - size_t __count, unsigned int __version) - attribute_hidden; -extern GElf_Shdr *__gelf_getshdr_internal (Elf_Scn *__scn, GElf_Shdr *__dst) - attribute_hidden; -extern GElf_Sym *__gelf_getsym_internal (Elf_Data *__data, int __ndx, - GElf_Sym *__dst) attribute_hidden; - - -extern uint32_t __libelf_crc32 (uint32_t crc, unsigned char *buf, size_t len) - attribute_hidden; - - -/* We often have to update a flag iff a value changed. Make this - convenient. None of the parameters must have a side effect. */ -#ifdef __GNUC__ -# define update_if_changed(var, exp, flag) \ - do { \ - __typeof__ (var) *_var = &(var); \ - __typeof__ (exp) _exp = (exp); \ - if (*_var != _exp) \ - { \ - *_var = _exp; \ - (flag) |= ELF_F_DIRTY; \ - } \ - } while (0) -#else -# define update_if_changed(var, exp, flag) \ - do { \ - if ((var) != (exp)) \ - { \ - (var) = (exp); \ - (flag) |= ELF_F_DIRTY; \ - } \ - } while (0) -#endif - -#endif /* libelfP.h */ diff --git a/libelf/libelf_crc32.c b/libelf/libelf_crc32.c deleted file mode 100644 index 6971be07..00000000 --- a/libelf/libelf_crc32.c +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright (C) 2002 Red Hat, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define crc32 attribute_hidden __libelf_crc32 -#define LIB_SYSTEM_H 1 -#include <libelf.h> -#include "../lib/crc32.c" diff --git a/libelf/libelf_next_prime.c b/libelf/libelf_next_prime.c deleted file mode 100644 index 4a71c477..00000000 --- a/libelf/libelf_next_prime.c +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright (C) 2002 Red Hat, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define next_prime attribute_hidden __libelf_next_prime -#include "../lib/next_prime.c" diff --git a/libelf/nlist.c b/libelf/nlist.c deleted file mode 100644 index cc42a31e..00000000 --- a/libelf/nlist.c +++ /dev/null @@ -1,224 +0,0 @@ -/* Extract symbol list from binary. - Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <fcntl.h> -#include <gelf.h> -#include <libelf.h> -#include <nlist.h> -#include <unistd.h> - -#include "libelfP.h" - - -struct hashentry -{ - const char *str; - GElf_Sym sym; -}; -#define TYPE struct hashentry -/* XXX Use a better hash function some day. */ -#define HASHFCT(str, len) INTUSE(elf_hash) (str) -#define COMPARE(p1, p2) strcmp ((p1)->str, (p2)->str) -#define CLASS static -#define PREFIX nlist_ -#define xcalloc(n, m) calloc (n, m) -#define next_prime(s) __libelf_next_prime (s) -#include <fixedsizehash.h> - - -int -nlist (const char *filename, struct nlist *nl) -{ - int fd; - Elf *elf; - Elf_Scn *scn = NULL; - Elf_Scn *symscn = NULL; - GElf_Shdr shdr_mem; - GElf_Shdr *shdr = NULL; - Elf_Data *data; - struct nlist_fshash *table; - size_t nsyms; - size_t cnt; - - /* Open the file. */ - fd = open (filename, O_RDONLY); - if (fd == -1) - { - __libelf_seterrno (ELF_E_NOFILE); - goto fail; - } - - /* For compatibility reasons (`nlist' existed before ELF and libelf) - we don't expect the caller to set the ELF version. Do this here - if it hasn't happened yet. */ - if (__libelf_version_initialized == 0) - INTUSE(elf_version) (EV_CURRENT); - - /* Now get an ELF descriptor. */ - elf = INTUSE(elf_begin) (fd, ELF_C_READ_MMAP, NULL); - if (elf == NULL) - goto fail; - - /* Find a symbol table. We prefer the real symbol table but if it - does not exist use the dynamic symbol table. */ - while ((scn = INTUSE(elf_nextscn) (elf, scn)) != NULL) - { - shdr = INTUSE(gelf_getshdr) (scn, &shdr_mem); - if (shdr == NULL) - goto fail_close; - - /* That is what we are looking for. */ - if (shdr->sh_type == SHT_SYMTAB) - { - symscn = scn; - break; - } - - /* Better than nothing. Remember this section. */ - if (shdr->sh_type == SHT_DYNSYM) - symscn = scn; - } - - if (symscn == NULL) - /* We haven't found anything. Fail. */ - goto fail_close; - - /* Re-get the section header in case we found only the dynamic symbol - table. */ - if (scn == NULL) - shdr = INTUSE(gelf_getshdr) (symscn, &shdr_mem); - /* SHDR->SH_LINK now contains the index of the string section. */ - - /* Get the data for the symbol section. */ - data = INTUSE(elf_getdata) (symscn, NULL); - if (data == NULL) - goto fail_close; - - /* How many symbols are there? */ - nsyms = (shdr->sh_size - / INTUSE(gelf_fsize) (elf, ELF_T_SYM, 1, data->d_version)); - - /* Create the hash table. */ - table = nlist_fshash_init (nsyms); - if (table == NULL) - { - __libelf_seterrno (ELF_E_NOMEM); - goto fail_close; - } - - /* Iterate over all the symbols in the section. */ - for (cnt = 0; cnt < nsyms; ++cnt) - { - struct hashentry mem; - GElf_Sym *sym; - - /* Get the symbol. */ - sym = INTUSE(gelf_getsym) (data, cnt, &mem.sym); - if (sym == NULL) - goto fail_dealloc; - - /* Get the name of the symbol. */ - mem.str = INTUSE(elf_strptr) (elf, shdr->sh_link, sym->st_name); - if (mem.str == NULL) - goto fail_dealloc; - - /* Don't allow zero-length strings. */ - if (mem.str[0] == '\0') - continue; - - /* And add it to the hash table. Note that we are using the - overwrite version. This will ensure that - a) global symbols are preferred over local symbols since - they are all located at the end - b) if there are multiple local symbols with the same name - the last one is used. - */ - (void) nlist_fshash_overwrite (table, mem.str, 0, &mem); - } - - /* Now it is time to look for the symbols the user asked for. - XXX What is a `null name/null string'? This is what the - standard says terminates the list. Is it a null pointer - or a zero-length string? We test for both... */ - while (nl->n_name != NULL && nl->n_name[0] != '\0') - { - struct hashentry search; - const struct hashentry *found; - - /* Search for a matching entry in the hash table. */ - search.str = nl->n_name; - found = nlist_fshash_find (table, nl->n_name, 0, &search); - - if (found != NULL) - { - /* Found it. */ - nl->n_value = found->sym.st_value; - nl->n_scnum = found->sym.st_shndx; - nl->n_type = GELF_ST_TYPE (found->sym.st_info); - /* XXX What shall we fill in the next fields? */ - nl->n_sclass = 0; - nl->n_numaux = 0; - } - else - { - /* Not there. */ - nl->n_value = 0; - nl->n_scnum = 0; - nl->n_type = 0; - nl->n_sclass = 0; - nl->n_numaux = 0; - } - - /* Next search request. */ - ++nl; - } - - /* Free the resources. */ - nlist_fshash_fini (table); - - /* We do not need the ELF descriptor anymore. */ - (void) elf_end (elf); - - return 0; - - fail_dealloc: - nlist_fshash_fini (table); - - fail_close: - /* We do not need the ELF descriptor anymore. */ - (void) elf_end (elf); - - fail: - /* We have to set all entries to zero. */ - while (nl->n_name != NULL && nl->n_name[0] != '\0') - { - nl->n_value = 0; - nl->n_scnum = 0; - nl->n_type = 0; - nl->n_sclass = 0; - nl->n_numaux = 0; - - /* Next entry. */ - ++nl; - } - - return -1; -} diff --git a/libelf/nlist.h b/libelf/nlist.h deleted file mode 100644 index 298f9a24..00000000 --- a/libelf/nlist.h +++ /dev/null @@ -1,44 +0,0 @@ -/* Interface for nlist. - Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef _NLIST_H -#define _NLIST_H 1 - - -/* Symbol list type. */ -struct nlist -{ - char *n_name; /* Symbol name. */ - long int n_value; /* Value of symbol. */ - short int n_scnum; /* Section number found in. */ - unsigned short int n_type; /* Type of symbol. */ - char n_sclass; /* Storage class. */ - char n_numaux; /* Number of auxiliary entries. */ -}; - - -#ifdef __cplusplus -extern "C" { -#endif - -/* Get specified entries from file. */ -extern int nlist (__const char *__filename, struct nlist *__nl); - -#ifdef __cplusplus -} -#endif - -#endif /* nlist.h */ diff --git a/libelf/version_xlate.h b/libelf/version_xlate.h deleted file mode 100644 index 2366cbf2..00000000 --- a/libelf/version_xlate.h +++ /dev/null @@ -1,208 +0,0 @@ -/* Conversion functions for versioning information. - Copyright (C) 1998, 1999, 2000, 2002, 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 2. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include <assert.h> -#include <gelf.h> - -#include "libelfP.h" - - -static void -elf_cvt_Verdef (void *dest, const void *src, size_t len, int encode) -{ - /* We have two different record types: ElfXX_Verndef and ElfXX_Verdaux. - To recognize them we have to walk the data structure and convert - them one after the other. The ENCODE parameter specifies whether - we are encoding or decoding. When we are encoding we can immediately - use the data in the buffer; if not, we have to decode the data before - using it. */ - size_t def_offset = 0; - GElf_Verdef *ddest; - GElf_Verdef *dsrc; - - /* We rely on the types being all the same size. */ - assert (sizeof (GElf_Verdef) == sizeof (Elf32_Verdef)); - assert (sizeof (GElf_Verdaux) == sizeof (Elf32_Verdaux)); - assert (sizeof (GElf_Verdef) == sizeof (Elf64_Verdef)); - assert (sizeof (GElf_Verdaux) == sizeof (Elf64_Verdaux)); - - if (len == 0) - return; - - do - { - size_t aux_offset; - GElf_Verdaux *asrc; - - /* Test for correct offset. */ - if (def_offset + sizeof (GElf_Verdef) > len) - return; - - /* Work the tree from the first record. */ - ddest = (GElf_Verdef *) ((char *) dest + def_offset); - dsrc = (GElf_Verdef *) ((char *) src + def_offset); - - /* Decode first if necessary. */ - if (! encode) - { - ddest->vd_version = bswap_16 (dsrc->vd_version); - ddest->vd_flags = bswap_16 (dsrc->vd_flags); - ddest->vd_ndx = bswap_16 (dsrc->vd_ndx); - ddest->vd_cnt = bswap_16 (dsrc->vd_cnt); - ddest->vd_hash = bswap_32 (dsrc->vd_hash); - ddest->vd_aux = bswap_32 (dsrc->vd_aux); - ddest->vd_next = bswap_32 (dsrc->vd_next); - - aux_offset = def_offset + ddest->vd_aux; - } - else - aux_offset = def_offset + dsrc->vd_aux; - - /* Handle all the auxiliary records belonging to this definition. */ - do - { - GElf_Verdaux *adest; - - /* Test for correct offset. */ - if (aux_offset + sizeof (GElf_Verdaux) > len) - return; - - adest = (GElf_Verdaux *) ((char *) dest + aux_offset); - asrc = (GElf_Verdaux *) ((char *) src + aux_offset); - - if (encode) - aux_offset += asrc->vda_next; - - adest->vda_name = bswap_32 (asrc->vda_name); - adest->vda_next = bswap_32 (asrc->vda_next); - - if (! encode) - aux_offset += adest->vda_next; - } - while (asrc->vda_next != 0); - - /* Encode now if necessary. */ - if (encode) - { - def_offset += dsrc->vd_next; - - ddest->vd_version = bswap_16 (dsrc->vd_version); - ddest->vd_flags = bswap_16 (dsrc->vd_flags); - ddest->vd_ndx = bswap_16 (dsrc->vd_ndx); - ddest->vd_cnt = bswap_16 (dsrc->vd_cnt); - ddest->vd_hash = bswap_32 (dsrc->vd_hash); - ddest->vd_aux = bswap_32 (dsrc->vd_aux); - ddest->vd_next = bswap_32 (dsrc->vd_next); - } - else - def_offset += ddest->vd_next; - } - while (dsrc->vd_next != 0); -} - - -static void -elf_cvt_Verneed (void *dest, const void *src, size_t len, int encode) -{ - /* We have two different record types: ElfXX_Verndef and ElfXX_Verdaux. - To recognize them we have to walk the data structure and convert - them one after the other. The ENCODE parameter specifies whether - we are encoding or decoding. When we are encoding we can immediately - use the data in the buffer; if not, we have to decode the data before - using it. */ - size_t need_offset = 0; - GElf_Verneed *ndest; - GElf_Verneed *nsrc; - - /* We rely on the types being all the same size. */ - assert (sizeof (GElf_Verneed) == sizeof (Elf32_Verneed)); - assert (sizeof (GElf_Vernaux) == sizeof (Elf32_Vernaux)); - assert (sizeof (GElf_Verneed) == sizeof (Elf64_Verneed)); - assert (sizeof (GElf_Vernaux) == sizeof (Elf64_Vernaux)); - - if (len == 0) - return; - - do - { - size_t aux_offset; - GElf_Vernaux *asrc; - - /* Test for correct offset. */ - if (need_offset + sizeof (GElf_Verneed) > len) - return; - - /* Work the tree from the first record. */ - ndest = (GElf_Verneed *) ((char *) dest + need_offset); - nsrc = (GElf_Verneed *) ((char *) src + need_offset); - - /* Decode first if necessary. */ - if (! encode) - { - ndest->vn_version = bswap_16 (nsrc->vn_version); - ndest->vn_cnt = bswap_16 (nsrc->vn_cnt); - ndest->vn_file = bswap_32 (nsrc->vn_file); - ndest->vn_aux = bswap_32 (nsrc->vn_aux); - ndest->vn_next = bswap_32 (nsrc->vn_next); - - aux_offset = need_offset + ndest->vn_aux; - } - else - aux_offset = need_offset + nsrc->vn_aux; - - /* Handle all the auxiliary records belonging to this requirement. */ - do - { - GElf_Vernaux *adest; - - /* Test for correct offset. */ - if (aux_offset + sizeof (GElf_Vernaux) > len) - return; - - adest = (GElf_Vernaux *) ((char *) dest + aux_offset); - asrc = (GElf_Vernaux *) ((char *) src + aux_offset); - - if (encode) - aux_offset += asrc->vna_next; - - adest->vna_hash = bswap_32 (asrc->vna_hash); - adest->vna_flags = bswap_16 (asrc->vna_flags); - adest->vna_other = bswap_16 (asrc->vna_other); - adest->vna_name = bswap_32 (asrc->vna_name); - adest->vna_next = bswap_32 (asrc->vna_next); - - if (! encode) - aux_offset += adest->vna_next; - } - while (asrc->vna_next != 0); - - /* Encode now if necessary. */ - if (encode) - { - need_offset += nsrc->vn_next; - - ndest->vn_version = bswap_16 (nsrc->vn_version); - ndest->vn_cnt = bswap_16 (nsrc->vn_cnt); - ndest->vn_file = bswap_32 (nsrc->vn_file); - ndest->vn_aux = bswap_32 (nsrc->vn_aux); - ndest->vn_next = bswap_32 (nsrc->vn_next); - } - else - need_offset += ndest->vn_next; - } - while (nsrc->vn_next != 0); -} diff --git a/m4/ChangeLog b/m4/ChangeLog deleted file mode 100644 index 53721633..00000000 --- a/m4/ChangeLog +++ /dev/null @@ -1,27 +0,0 @@ -2002-03-22 gettextize <bug-gnu-gettext@gnu.org> - - * codeset.m4: Upgrade to gettext-0.11. - * gettext.m4: Upgrade to gettext-0.11. - * glibc21.m4: Upgrade to gettext-0.11. - * iconv.m4: Upgrade to gettext-0.11. - * isc-posix.m4: Upgrade to gettext-0.11. - * lcmessage.m4: Upgrade to gettext-0.11. - * lib-ld.m4: Upgrade to gettext-0.11. - * lib-link.m4: Upgrade to gettext-0.11. - * lib-prefix.m4: Upgrade to gettext-0.11. - * progtest.m4: Upgrade to gettext-0.11. - -2002-03-22 gettextize <bug-gnu-gettext@gnu.org> - - * codeset.m4: Upgrade to gettext-0.11. - * gettext.m4: Upgrade to gettext-0.11. - * glibc21.m4: Upgrade to gettext-0.11. - * iconv.m4: Upgrade to gettext-0.11. - * isc-posix.m4: New file, from gettext-0.11. - * lcmessage.m4: Upgrade to gettext-0.11. - * lib-ld.m4: Upgrade to gettext-0.11. - * lib-link.m4: Upgrade to gettext-0.11. - * lib-prefix.m4: Upgrade to gettext-0.11. - * progtest.m4: Upgrade to gettext-0.11. - * Makefile.am (EXTRA_DIST): Add the new files. - diff --git a/m4/Makefile b/m4/Makefile deleted file mode 100644 index cf2c5ab6..00000000 --- a/m4/Makefile +++ /dev/null @@ -1,314 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# m4/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - -srcdir = . -top_srcdir = .. - -pkgdatadir = $(datadir)/elfutils -pkglibdir = $(libdir)/elfutils -pkgincludedir = $(includedir)/elfutils -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = /usr/bin/install -c -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = i686-pc-linux-gnu -host_triplet = i686-pc-linux-gnu -subdir = m4 -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run aclocal-1.9 -AMDEP_FALSE = # -AMDEP_TRUE = -AMTAR = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run tar -AUTOCONF = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoconf -AUTOHEADER = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoheader -AUTOMAKE = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run automake-1.9 -AWK = gawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -CPP = gcc -E -CPPFLAGS = -CYGPATH_W = echo -DATADIRNAME = ${prefix}/share -DEFS = -DHAVE_CONFIG_H -DEPDIR = .deps -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = grep -E -EXEEXT = -GMSGFMT = /usr/bin/msgfmt -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s -INTLLIBS = -LDFLAGS = -LEX = flex -LEXLIB = -lfl -LEX_OUTPUT_ROOT = lex.yy -LIBICONV = -liconv -LIBINTL = -LIBOBJS = -LIBS = -LOCALEDIR = ${prefix}/share -LTLIBICONV = -liconv -LTLIBINTL = -LTLIBOBJS = -MAKEINFO = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run makeinfo -MKINSTALLDIRS = config/mkinstalldirs -MSGFMT = /usr/bin/msgfmt -MSGMERGE = /usr/bin/msgmerge -MUDFLAP_FALSE = -MUDFLAP_TRUE = # -NATIVE_LD_FALSE = -NATIVE_LD_TRUE = # -OBJEXT = o -PACKAGE = elfutils -PACKAGE_BUGREPORT = http://bugzilla.redhat.com/bugzilla/ -PACKAGE_NAME = Red Hat elfutils -PACKAGE_STRING = Red Hat elfutils 0.97 -PACKAGE_TARNAME = elfutils -PACKAGE_VERSION = 0.97 -PATH_SEPARATOR = : -POSUB = po -RANLIB = ranlib -SET_MAKE = -SHELL = /bin/sh -STRIP = -USE_NLS = yes -VERSION = 0.97 -XGETTEXT = /usr/bin/xgettext -YACC = bison -y -ac_ct_CC = gcc -ac_ct_RANLIB = ranlib -ac_ct_STRIP = -am__fastdepCC_FALSE = # -am__fastdepCC_TRUE = -am__include = include -am__leading_dot = . -am__quote = -am__tar = ${AMTAR} chof - "$$tardir" -am__untar = ${AMTAR} xf - -base_cpu = none -bindir = ${exec_prefix}/bin -build = i686-pc-linux-gnu -build_alias = -build_cpu = i686 -build_os = linux-gnu -build_vendor = pc -datadir = ${prefix}/share -exec_prefix = ${prefix} -host = i686-pc-linux-gnu -host_alias = -host_cpu = i686 -host_os = linux-gnu -host_vendor = pc -includedir = ${prefix}/include -infodir = ${prefix}/info -install_sh = /work/elfutils/stock/elfutils-0.97/config/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localstatedir = ${prefix}/var -mandir = ${prefix}/man -mkdir_p = mkdir -p -- -oldincludedir = /usr/include -prefix = /work/elfutils/google/linux-install-elfutils-0.97/ -program_transform_name = s,x,x, -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -sysconfdir = ${prefix}/etc -target_alias = -EXTRA_DIST = isc-posix.m4 codeset.m4 gettext.m4 glibc21.m4 iconv.m4 \ - lcmessage.m4 lib-ld.m4 lib-link.m4 lib-prefix.m4 \ - progtest.m4 iconv.m4 intdiv0.m4 inttypes-pri.m4 inttypes.m4 \ - uintmax_t.m4 inttypes_h.m4 stdint_h.m4 ulonglong.m4 - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits m4/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits m4/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -uninstall-info-am: -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-info-am - -.PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \ - uninstall-info-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/m4/Makefile.am b/m4/Makefile.am deleted file mode 100644 index 9e20ae15..00000000 --- a/m4/Makefile.am +++ /dev/null @@ -1,24 +0,0 @@ -## Process this file with automake to produce Makefile.in -*-Makefile-*- -## Configure input file for elfutils. -## -## Copyright (C) 2000, 2001, 2002, 2004 Red Hat, Inc. -## -## This program is free software; you can redistribute it and/or modify -## it under the terms of the GNU General Public License as published by -## the Free Software Foundation, version 2. -## -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software Foundation, -## Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -## - -##m4-files-begin -EXTRA_DIST = isc-posix.m4 codeset.m4 gettext.m4 glibc21.m4 iconv.m4 \ - lcmessage.m4 lib-ld.m4 lib-link.m4 lib-prefix.m4 \ - progtest.m4 iconv.m4 intdiv0.m4 inttypes-pri.m4 inttypes.m4 \ - uintmax_t.m4 inttypes_h.m4 stdint_h.m4 ulonglong.m4 diff --git a/m4/Makefile.in b/m4/Makefile.in deleted file mode 100644 index 1712984c..00000000 --- a/m4/Makefile.in +++ /dev/null @@ -1,314 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = m4 -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DATADIRNAME = @DATADIRNAME@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -GMSGFMT = @GMSGFMT@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTLLIBS = @INTLLIBS@ -LDFLAGS = @LDFLAGS@ -LEX = @LEX@ -LEXLIB = @LEXLIB@ -LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LOCALEDIR = @LOCALEDIR@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -MSGMERGE = @MSGMERGE@ -MUDFLAP_FALSE = @MUDFLAP_FALSE@ -MUDFLAP_TRUE = @MUDFLAP_TRUE@ -NATIVE_LD_FALSE = @NATIVE_LD_FALSE@ -NATIVE_LD_TRUE = @NATIVE_LD_TRUE@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -XGETTEXT = @XGETTEXT@ -YACC = @YACC@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -base_cpu = @base_cpu@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -datadir = @datadir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -EXTRA_DIST = isc-posix.m4 codeset.m4 gettext.m4 glibc21.m4 iconv.m4 \ - lcmessage.m4 lib-ld.m4 lib-link.m4 lib-prefix.m4 \ - progtest.m4 iconv.m4 intdiv0.m4 inttypes-pri.m4 inttypes.m4 \ - uintmax_t.m4 inttypes_h.m4 stdint_h.m4 ulonglong.m4 - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits m4/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits m4/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -uninstall-info-am: -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-info-am - -.PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \ - uninstall-info-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/m4/codeset.m4 b/m4/codeset.m4 deleted file mode 100644 index 59535ebc..00000000 --- a/m4/codeset.m4 +++ /dev/null @@ -1,23 +0,0 @@ -# codeset.m4 serial AM1 (gettext-0.10.40) -dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -AC_DEFUN([AM_LANGINFO_CODESET], -[ - AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, - [AC_TRY_LINK([#include <langinfo.h>], - [char* cs = nl_langinfo(CODESET);], - am_cv_langinfo_codeset=yes, - am_cv_langinfo_codeset=no) - ]) - if test $am_cv_langinfo_codeset = yes; then - AC_DEFINE(HAVE_LANGINFO_CODESET, 1, - [Define if you have <langinfo.h> and nl_langinfo(CODESET).]) - fi -]) diff --git a/m4/gettext.m4 b/m4/gettext.m4 deleted file mode 100644 index 0b758a67..00000000 --- a/m4/gettext.m4 +++ /dev/null @@ -1,587 +0,0 @@ -# gettext.m4 serial 16 (gettext-0.11.4) -dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. -dnl Bruno Haible <haible@clisp.cons.org>, 2000-2002. - -dnl Macro to add for using GNU gettext. - -dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). -dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The -dnl default (if it is not specified or empty) is 'no-libtool'. -dnl INTLSYMBOL should be 'external' for packages with no intl directory, -dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. -dnl If INTLSYMBOL is 'use-libtool', then a libtool library -dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, -dnl depending on --{enable,disable}-{shared,static} and on the presence of -dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library -dnl $(top_builddir)/intl/libintl.a will be created. -dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext -dnl implementations (in libc or libintl) without the ngettext() function -dnl will be ignored. If NEEDSYMBOL is specified and is -dnl 'need-formatstring-macros', then GNU gettext implementations that don't -dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored. -dnl INTLDIR is used to find the intl libraries. If empty, -dnl the value `$(top_builddir)/intl/' is used. -dnl -dnl The result of the configuration is one of three cases: -dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled -dnl and used. -dnl Catalog format: GNU --> install in $(datadir) -dnl Catalog extension: .mo after installation, .gmo in source tree -dnl 2) GNU gettext has been found in the system's C library. -dnl Catalog format: GNU --> install in $(datadir) -dnl Catalog extension: .mo after installation, .gmo in source tree -dnl 3) No internationalization, always use English msgid. -dnl Catalog format: none -dnl Catalog extension: none -dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. -dnl The use of .gmo is historical (it was needed to avoid overwriting the -dnl GNU format catalogs when building on a platform with an X/Open gettext), -dnl but we keep it in order not to force irrelevant filename changes on the -dnl maintainers. -dnl -AC_DEFUN([AM_GNU_GETTEXT], -[ - dnl Argument checking. - ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , - [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT -])])])])]) - ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , - [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT -])])])]) - define(gt_included_intl, ifelse([$1], [external], [no], [yes])) - define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], [])) - - AC_REQUIRE([AM_PO_SUBDIRS])dnl - ifelse(gt_included_intl, yes, [ - AC_REQUIRE([AM_INTL_SUBDIR])dnl - ]) - - dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - - dnl Sometimes libintl requires libiconv, so first search for libiconv. - dnl Ideally we would do this search only after the - dnl if test "$USE_NLS" = "yes"; then - dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then - dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT - dnl the configure script would need to contain the same shell code - dnl again, outside any 'if'. There are two solutions: - dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. - dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. - dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not - dnl documented, we avoid it. - ifelse(gt_included_intl, yes, , [ - AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) - ]) - - AC_MSG_CHECKING([whether NLS is requested]) - dnl Default is enabled NLS - AC_ARG_ENABLE(nls, - [ --disable-nls do not use Native Language Support], - USE_NLS=$enableval, USE_NLS=yes) - AC_MSG_RESULT($USE_NLS) - AC_SUBST(USE_NLS) - - ifelse(gt_included_intl, yes, [ - BUILD_INCLUDED_LIBINTL=no - USE_INCLUDED_LIBINTL=no - ]) - LIBINTL= - LTLIBINTL= - POSUB= - - dnl If we use NLS figure out what method - if test "$USE_NLS" = "yes"; then - gt_use_preinstalled_gnugettext=no - ifelse(gt_included_intl, yes, [ - AC_MSG_CHECKING([whether included gettext is requested]) - AC_ARG_WITH(included-gettext, - [ --with-included-gettext use the GNU gettext library included here], - nls_cv_force_use_gnu_gettext=$withval, - nls_cv_force_use_gnu_gettext=no) - AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) - - nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" - if test "$nls_cv_force_use_gnu_gettext" != "yes"; then - ]) - dnl User does not insist on using GNU NLS library. Figure out what - dnl to use. If GNU gettext is available we use this. Else we have - dnl to fall back to GNU NLS library. - - dnl Add a version number to the cache macros. - define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) - define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) - define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) - - AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, - [AC_TRY_LINK([#include <libintl.h> -]ifelse([$2], [need-formatstring-macros], -[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -#endif -changequote(,)dnl -typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -changequote([,])dnl -], [])[extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings;], - [bindtextdomain ("", ""); -return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], - gt_cv_func_gnugettext_libc=yes, - gt_cv_func_gnugettext_libc=no)]) - - if test "$gt_cv_func_gnugettext_libc" != "yes"; then - dnl Sometimes libintl requires libiconv, so first search for libiconv. - ifelse(gt_included_intl, yes, , [ - AM_ICONV_LINK - ]) - dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL - dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) - dnl because that would add "-liconv" to LIBINTL and LTLIBINTL - dnl even if libiconv doesn't exist. - AC_LIB_LINKFLAGS_BODY([intl]) - AC_CACHE_CHECK([for GNU gettext in libintl], - gt_cv_func_gnugettext_libintl, - [gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCINTL" - gt_save_LIBS="$LIBS" - LIBS="$LIBS $LIBINTL" - dnl Now see whether libintl exists and does not depend on libiconv. - AC_TRY_LINK([#include <libintl.h> -]ifelse([$2], [need-formatstring-macros], -[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -#endif -changequote(,)dnl -typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -changequote([,])dnl -], [])[extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias ();], - [bindtextdomain ("", ""); -return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], - gt_cv_func_gnugettext_libintl=yes, - gt_cv_func_gnugettext_libintl=no) - dnl Now see whether libintl exists and depends on libiconv. - if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then - LIBS="$LIBS $LIBICONV" - AC_TRY_LINK([#include <libintl.h> -]ifelse([$2], [need-formatstring-macros], -[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -#endif -changequote(,)dnl -typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -changequote([,])dnl -], [])[extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias ();], - [bindtextdomain ("", ""); -return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], - [LIBINTL="$LIBINTL $LIBICONV" - LTLIBINTL="$LTLIBINTL $LTLIBICONV" - gt_cv_func_gnugettext_libintl=yes - ]) - fi - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS"]) - fi - - dnl If an already present or preinstalled GNU gettext() is found, - dnl use it. But if this macro is used in GNU gettext, and GNU - dnl gettext is already preinstalled in libintl, we update this - dnl libintl. (Cf. the install rule in intl/Makefile.in.) - if test "$gt_cv_func_gnugettext_libc" = "yes" \ - || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ - && test "$PACKAGE" != gettext; }; then - gt_use_preinstalled_gnugettext=yes - else - dnl Reset the values set by searching for libintl. - LIBINTL= - LTLIBINTL= - INCINTL= - fi - - ifelse(gt_included_intl, yes, [ - if test "$gt_use_preinstalled_gnugettext" != "yes"; then - dnl GNU gettext is not found in the C library. - dnl Fall back on included GNU gettext library. - nls_cv_use_gnu_gettext=yes - fi - fi - - if test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions used to generate GNU NLS library. - INTLOBJS="\$(GETTOBJS)" - BUILD_INCLUDED_LIBINTL=yes - USE_INCLUDED_LIBINTL=yes - LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" - LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" - LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` - fi - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions to use GNU gettext tools. - CATOBJEXT=.gmo - fi - ]) - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - AC_DEFINE(ENABLE_NLS, 1, - [Define to 1 if translation of program messages to the user's native language - is requested.]) - else - USE_NLS=no - fi - fi - - if test "$USE_NLS" = "yes"; then - - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if test "$gt_cv_func_gnugettext_libintl" = "yes"; then - AC_MSG_CHECKING([how to link with libintl]) - AC_MSG_RESULT([$LIBINTL]) - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) - fi - - dnl For backward compatibility. Some packages may be using this. - AC_DEFINE(HAVE_GETTEXT, 1, - [Define if the GNU gettext() function is already present or preinstalled.]) - AC_DEFINE(HAVE_DCGETTEXT, 1, - [Define if the GNU dcgettext() function is already present or preinstalled.]) - fi - - dnl We need to process the po/ directory. - POSUB=po - fi - - ifelse(gt_included_intl, yes, [ - dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL - dnl to 'yes' because some of the testsuite requires it. - if test "$PACKAGE" = gettext; then - BUILD_INCLUDED_LIBINTL=yes - fi - - dnl Make all variables we use known to autoconf. - AC_SUBST(BUILD_INCLUDED_LIBINTL) - AC_SUBST(USE_INCLUDED_LIBINTL) - AC_SUBST(CATOBJEXT) - AC_SUBST(INTLOBJS) - - dnl For backward compatibility. Some configure.ins may be using this. - nls_cv_header_intl= - nls_cv_header_libgt= - - dnl For backward compatibility. Some Makefiles may be using this. - DATADIRNAME=share - AC_SUBST(DATADIRNAME) - - dnl For backward compatibility. Some Makefiles may be using this. - INSTOBJEXT=.mo - AC_SUBST(INSTOBJEXT) - - dnl For backward compatibility. Some Makefiles may be using this. - GENCAT=gencat - AC_SUBST(GENCAT) - - dnl Enable libtool support if the surrounding package wishes it. - INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix - AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) - ]) - - dnl For backward compatibility. Some Makefiles may be using this. - INTLLIBS="$LIBINTL" - AC_SUBST(INTLLIBS) - - dnl Make all documented variables known to autoconf. - AC_SUBST(LIBINTL) - AC_SUBST(LTLIBINTL) - AC_SUBST(POSUB) -]) - - -dnl Checks for all prerequisites of the po subdirectory, -dnl except for USE_NLS. -AC_DEFUN([AM_PO_SUBDIRS], -[ - AC_REQUIRE([AC_PROG_MAKE_SET])dnl - AC_REQUIRE([AC_PROG_INSTALL])dnl - AC_REQUIRE([AM_MKINSTALLDIRS])dnl - - dnl Perform the following tests also if --disable-nls has been given, - dnl because they are needed for "make dist" to work. - - dnl Search for GNU msgfmt in the PATH. - dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. - dnl The second test excludes FreeBSD msgfmt. - AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], - :) - AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) - - dnl Search for GNU xgettext 0.11 or newer in the PATH. - dnl The first test excludes Solaris xgettext and early GNU xgettext versions. - dnl The second test excludes FreeBSD xgettext. - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [$ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], - :) - dnl Remove leftover from FreeBSD xgettext call. - rm -f messages.po - - dnl Search for GNU msgmerge 0.11 or newer in the PATH. - AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, - [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :) - - dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. - dnl Test whether we really found GNU msgfmt. - if test "$GMSGFMT" != ":"; then - dnl If it is no GNU msgfmt we define it as : so that the - dnl Makefiles still can work. - if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && - (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` - AC_MSG_RESULT( - [found $GMSGFMT program is not GNU msgfmt; ignore it]) - GMSGFMT=":" - fi - fi - - dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. - dnl Test whether we really found GNU xgettext. - if test "$XGETTEXT" != ":"; then - dnl If it is no GNU xgettext we define it as : so that the - dnl Makefiles still can work. - if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && - (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - AC_MSG_RESULT( - [found xgettext program is not GNU xgettext; ignore it]) - XGETTEXT=":" - fi - dnl Remove leftover from FreeBSD xgettext call. - rm -f messages.po - fi - - AC_OUTPUT_COMMANDS([ - for ac_file in $CONFIG_FILES; do - # Support "outfile[:infile[:infile...]]" - case "$ac_file" in - *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - esac - # PO directories have a Makefile.in generated from Makefile.in.in. - case "$ac_file" in */Makefile.in) - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" - # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. - if test -n "$ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" - fi - ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' - fi - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= - GMOFILES= - UPDATEPOFILES= - DUMMYPOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" - GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. - INST_LINGUAS= - if test -n "$ALL_LINGUAS"; then - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "$LINGUAS"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - INST_LINGUAS="$INST_LINGUAS $presentlang" - fi - done - fi - CATALOGS= - if test -n "$INST_LINGUAS"; then - for lang in $INST_LINGUAS; do - CATALOGS="$CATALOGS $lang.gmo" - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in - *.orig | *.bak | *~) ;; - *) cat "$f" >> "$ac_dir/Makefile" ;; - esac - fi - done - fi - ;; - esac - done], - [# Capture the value of obsolete $ALL_LINGUAS because we need it to compute - # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it - # from automake. - eval 'ALL_LINGUAS''="$ALL_LINGUAS"' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="${LINGUAS-%UNSET%}" - ]) -]) - - -dnl Checks for all prerequisites of the intl subdirectory, -dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, -dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. -AC_DEFUN([AM_INTL_SUBDIR], -[ - AC_REQUIRE([AC_PROG_INSTALL])dnl - AC_REQUIRE([AM_MKINSTALLDIRS])dnl - AC_REQUIRE([AC_PROG_CC])dnl - AC_REQUIRE([AC_CANONICAL_HOST])dnl - AC_REQUIRE([AC_PROG_RANLIB])dnl - AC_REQUIRE([AC_ISC_POSIX])dnl - AC_REQUIRE([AC_HEADER_STDC])dnl - AC_REQUIRE([AC_C_CONST])dnl - AC_REQUIRE([AC_C_INLINE])dnl - AC_REQUIRE([AC_TYPE_OFF_T])dnl - AC_REQUIRE([AC_TYPE_SIZE_T])dnl - AC_REQUIRE([AC_FUNC_ALLOCA])dnl - AC_REQUIRE([AC_FUNC_MMAP])dnl - AC_REQUIRE([jm_GLIBC21])dnl - AC_REQUIRE([gt_INTDIV0])dnl - AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl - AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl - AC_REQUIRE([gt_INTTYPES_PRI])dnl - - AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ -stdlib.h string.h unistd.h sys/param.h]) - AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ -geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ -strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next]) - - AM_ICONV - AM_LANGINFO_CODESET - if test $ac_cv_header_locale_h = yes; then - AM_LC_MESSAGES - fi - - dnl intl/plural.c is generated from intl/plural.y. It requires bison, - dnl because plural.y uses bison specific features. It requires at least - dnl bison-1.26 because earlier versions generate a plural.c that doesn't - dnl compile. - dnl bison is only needed for the maintainer (who touches plural.y). But in - dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put - dnl the rule in general Makefile. Now, some people carelessly touch the - dnl files or have a broken "make" program, hence the plural.c rule will - dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not - dnl present or too old. - AC_CHECK_PROGS([INTLBISON], [bison]) - if test -z "$INTLBISON"; then - ac_verc_fail=yes - else - dnl Found it, now check the version. - AC_MSG_CHECKING([version of bison]) -changequote(<<,>>)dnl - ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) -changequote([,])dnl - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - esac - AC_MSG_RESULT([$ac_prog_version]) - fi - if test $ac_verc_fail = yes; then - INTLBISON=: - fi -]) - - -AC_DEFUN([AM_MKINSTALLDIRS], -[ - dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly - dnl find the mkinstalldirs script in another subdir but $(top_srcdir). - dnl Try to locate is. - MKINSTALLDIRS= - if test -n "$ac_aux_dir"; then - MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" - fi - if test -z "$MKINSTALLDIRS"; then - MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" - fi - AC_SUBST(MKINSTALLDIRS) -]) - - -dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) -AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) diff --git a/m4/glibc21.m4 b/m4/glibc21.m4 deleted file mode 100644 index 9c9f3db3..00000000 --- a/m4/glibc21.m4 +++ /dev/null @@ -1,32 +0,0 @@ -# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40) -dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -# Test for the GNU C Library, version 2.1 or newer. -# From Bruno Haible. - -AC_DEFUN([jm_GLIBC21], - [ - AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, - ac_cv_gnu_library_2_1, - [AC_EGREP_CPP([Lucky GNU user], - [ -#include <features.h> -#ifdef __GNU_LIBRARY__ - #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) - Lucky GNU user - #endif -#endif - ], - ac_cv_gnu_library_2_1=yes, - ac_cv_gnu_library_2_1=no) - ] - ) - AC_SUBST(GLIBC21) - GLIBC21="$ac_cv_gnu_library_2_1" - ] -) diff --git a/m4/iconv.m4 b/m4/iconv.m4 deleted file mode 100644 index c5f35798..00000000 --- a/m4/iconv.m4 +++ /dev/null @@ -1,103 +0,0 @@ -# iconv.m4 serial AM4 (gettext-0.11.3) -dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], -[ - dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - - dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV - dnl accordingly. - AC_LIB_LINKFLAGS_BODY([iconv]) -]) - -AC_DEFUN([AM_ICONV_LINK], -[ - dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and - dnl those with the standalone portable GNU libiconv installed). - - dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV - dnl accordingly. - AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) - - dnl Add $INCICONV to CPPFLAGS before performing the following checks, - dnl because if the user has installed libiconv and not disabled its use - dnl via --without-libiconv-prefix, he wants to use it. The first - dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. - am_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) - - AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - AC_TRY_LINK([#include <stdlib.h> -#include <iconv.h>], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - am_cv_func_iconv=yes) - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" - AC_TRY_LINK([#include <stdlib.h> -#include <iconv.h>], - [iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);], - am_cv_lib_iconv=yes - am_cv_func_iconv=yes) - LIBS="$am_save_LIBS" - fi - ]) - if test "$am_cv_func_iconv" = yes; then - AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) - fi - if test "$am_cv_lib_iconv" = yes; then - AC_MSG_CHECKING([how to link with libiconv]) - AC_MSG_RESULT([$LIBICONV]) - else - dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV - dnl either. - CPPFLAGS="$am_save_CPPFLAGS" - LIBICONV= - LTLIBICONV= - fi - AC_SUBST(LIBICONV) - AC_SUBST(LTLIBICONV) -]) - -AC_DEFUN([AM_ICONV], -[ - AM_ICONV_LINK - if test "$am_cv_func_iconv" = yes; then - AC_MSG_CHECKING([for iconv declaration]) - AC_CACHE_VAL(am_cv_proto_iconv, [ - AC_TRY_COMPILE([ -#include <stdlib.h> -#include <iconv.h> -extern -#ifdef __cplusplus -"C" -#endif -#if defined(__STDC__) || defined(__cplusplus) -size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); -#else -size_t iconv(); -#endif -], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") - am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) - am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` - AC_MSG_RESULT([$]{ac_t:- - }[$]am_cv_proto_iconv) - AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, - [Define as const if the declaration of iconv() needs const.]) - fi -]) diff --git a/m4/intdiv0.m4 b/m4/intdiv0.m4 deleted file mode 100644 index 55dddcf1..00000000 --- a/m4/intdiv0.m4 +++ /dev/null @@ -1,72 +0,0 @@ -# intdiv0.m4 serial 1 (gettext-0.11.3) -dnl Copyright (C) 2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -AC_DEFUN([gt_INTDIV0], -[ - AC_REQUIRE([AC_PROG_CC])dnl - AC_REQUIRE([AC_CANONICAL_HOST])dnl - - AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], - gt_cv_int_divbyzero_sigfpe, - [ - AC_TRY_RUN([ -#include <stdlib.h> -#include <signal.h> - -static void -#ifdef __cplusplus -sigfpe_handler (int sig) -#else -sigfpe_handler (sig) int sig; -#endif -{ - /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ - exit (sig != SIGFPE); -} - -int x = 1; -int y = 0; -int z; -int nan; - -int main () -{ - signal (SIGFPE, sigfpe_handler); -/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ -#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) - signal (SIGTRAP, sigfpe_handler); -#endif -/* Linux/SPARC yields signal SIGILL. */ -#if defined (__sparc__) && defined (__linux__) - signal (SIGILL, sigfpe_handler); -#endif - - z = x / y; - nan = y / y; - exit (1); -} -], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, - [ - # Guess based on the CPU. - case "$host_cpu" in - alpha* | i[34567]86 | m68k | s390*) - gt_cv_int_divbyzero_sigfpe="guessing yes";; - *) - gt_cv_int_divbyzero_sigfpe="guessing no";; - esac - ]) - ]) - case "$gt_cv_int_divbyzero_sigfpe" in - *yes) value=1;; - *) value=0;; - esac - AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, - [Define if integer division by zero raises signal SIGFPE.]) -]) diff --git a/m4/inttypes-pri.m4 b/m4/inttypes-pri.m4 deleted file mode 100644 index fd007c31..00000000 --- a/m4/inttypes-pri.m4 +++ /dev/null @@ -1,32 +0,0 @@ -# inttypes-pri.m4 serial 1 (gettext-0.11.4) -dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI* -# macros to non-string values. This is the case on AIX 4.3.3. - -AC_DEFUN([gt_INTTYPES_PRI], -[ - AC_REQUIRE([gt_HEADER_INTTYPES_H]) - if test $gt_cv_header_inttypes_h = yes; then - AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], - gt_cv_inttypes_pri_broken, - [ - AC_TRY_COMPILE([#include <inttypes.h> -#ifdef PRId32 -char *p = PRId32; -#endif -], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) - ]) - fi - if test "$gt_cv_inttypes_pri_broken" = yes; then - AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, - [Define if <inttypes.h> exists and defines unusable PRI* macros.]) - fi -]) diff --git a/m4/inttypes.m4 b/m4/inttypes.m4 deleted file mode 100644 index ab370ffe..00000000 --- a/m4/inttypes.m4 +++ /dev/null @@ -1,27 +0,0 @@ -# inttypes.m4 serial 1 (gettext-0.11.4) -dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Paul Eggert. - -# Define HAVE_INTTYPES_H if <inttypes.h> exists and doesn't clash with -# <sys/types.h>. - -AC_DEFUN([gt_HEADER_INTTYPES_H], -[ - AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, - [ - AC_TRY_COMPILE( - [#include <sys/types.h> -#include <inttypes.h>], - [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no) - ]) - if test $gt_cv_header_inttypes_h = yes; then - AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, - [Define if <inttypes.h> exists and doesn't clash with <sys/types.h>.]) - fi -]) diff --git a/m4/inttypes_h.m4 b/m4/inttypes_h.m4 deleted file mode 100644 index 400a1118..00000000 --- a/m4/inttypes_h.m4 +++ /dev/null @@ -1,28 +0,0 @@ -# inttypes_h.m4 serial 4 (gettext-0.11.4) -dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Paul Eggert. - -# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists, -# doesn't clash with <sys/types.h>, and declares uintmax_t. - -AC_DEFUN([jm_AC_HEADER_INTTYPES_H], -[ - AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h, - [AC_TRY_COMPILE( - [#include <sys/types.h> -#include <inttypes.h>], - [uintmax_t i = (uintmax_t) -1;], - jm_ac_cv_header_inttypes_h=yes, - jm_ac_cv_header_inttypes_h=no)]) - if test $jm_ac_cv_header_inttypes_h = yes; then - AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, -[Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, - and declares uintmax_t. ]) - fi -]) diff --git a/m4/isc-posix.m4 b/m4/isc-posix.m4 deleted file mode 100644 index 1319dd1c..00000000 --- a/m4/isc-posix.m4 +++ /dev/null @@ -1,26 +0,0 @@ -# isc-posix.m4 serial 2 (gettext-0.11.2) -dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -# This file is not needed with autoconf-2.53 and newer. Remove it in 2005. - -# This test replaces the one in autoconf. -# Currently this macro should have the same name as the autoconf macro -# because gettext's gettext.m4 (distributed in the automake package) -# still uses it. Otherwise, the use in gettext.m4 makes autoheader -# give these diagnostics: -# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX -# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX - -undefine([AC_ISC_POSIX]) - -AC_DEFUN([AC_ISC_POSIX], - [ - dnl This test replaces the obsolescent AC_ISC_POSIX kludge. - AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) - ] -) diff --git a/m4/lcmessage.m4 b/m4/lcmessage.m4 deleted file mode 100644 index ffbf915f..00000000 --- a/m4/lcmessage.m4 +++ /dev/null @@ -1,32 +0,0 @@ -# lcmessage.m4 serial 2 (gettext-0.10.40) -dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper <drepper@cygnus.com>, 1995. - -# Check whether LC_MESSAGES is available in <locale.h>. - -AC_DEFUN([AM_LC_MESSAGES], - [if test $ac_cv_header_locale_h = yes; then - AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, - [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES], - am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) - if test $am_cv_val_LC_MESSAGES = yes; then - AC_DEFINE(HAVE_LC_MESSAGES, 1, - [Define if your <locale.h> file defines LC_MESSAGES.]) - fi - fi]) diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4 deleted file mode 100644 index ddb57323..00000000 --- a/m4/lib-ld.m4 +++ /dev/null @@ -1,97 +0,0 @@ -# lib-ld.m4 serial 1 (gettext-0.11) -dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl Subroutines of libtool.m4, -dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision -dnl with libtool.m4. - -dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. -AC_DEFUN([AC_LIB_PROG_LD_GNU], -[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, -[# I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then - acl_cv_prog_gnu_ld=yes -else - acl_cv_prog_gnu_ld=no -fi]) -with_gnu_ld=$acl_cv_prog_gnu_ld -]) - -dnl From libtool-1.4. Sets the variable LD. -AC_DEFUN([AC_LIB_PROG_LD], -[AC_ARG_WITH(gnu-ld, -[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], -test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by GCC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]* | [A-Za-z]:[\\/]*)] - [re_direlt='/[^/][^/]*/\.\./'] - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(acl_cv_path_LD, -[if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then - test "$with_gnu_ld" != no && break - else - test "$with_gnu_ld" != yes && break - fi - fi - done - IFS="$ac_save_ifs" -else - acl_cv_path_LD="$LD" # Let the user override the test with a path. -fi]) -LD="$acl_cv_path_LD" -if test -n "$LD"; then - AC_MSG_RESULT($LD) -else - AC_MSG_RESULT(no) -fi -test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) -AC_LIB_PROG_LD_GNU -]) diff --git a/m4/lib-link.m4 b/m4/lib-link.m4 deleted file mode 100644 index a16aa446..00000000 --- a/m4/lib-link.m4 +++ /dev/null @@ -1,521 +0,0 @@ -# lib-link.m4 serial 1 (gettext-0.11) -dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and -dnl the libraries corresponding to explicit and implicit dependencies. -dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and -dnl augments the CPPFLAGS variable. -AC_DEFUN([AC_LIB_LINKFLAGS], -[ - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - define([Name],[translit([$1],[./-], [___])]) - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ - AC_LIB_LINKFLAGS_BODY([$1], [$2]) - ac_cv_lib[]Name[]_libs="$LIB[]NAME" - ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" - ac_cv_lib[]Name[]_cppflags="$INC[]NAME" - ]) - LIB[]NAME="$ac_cv_lib[]Name[]_libs" - LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" - INC[]NAME="$ac_cv_lib[]Name[]_cppflags" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - AC_SUBST([LIB]NAME) - AC_SUBST([LTLIB]NAME) - dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the - dnl results of this search when this library appears as a dependency. - HAVE_LIB[]NAME=yes - undefine([Name]) - undefine([NAME]) -]) - -dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) -dnl searches for libname and the libraries corresponding to explicit and -dnl implicit dependencies, together with the specified include files and -dnl the ability to compile and link the specified testcode. If found, it -dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and -dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and -dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs -dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. -AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], -[ - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - define([Name],[translit([$1],[./-], [___])]) - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - - dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME - dnl accordingly. - AC_LIB_LINKFLAGS_BODY([$1], [$2]) - - dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, - dnl because if the user has installed lib[]Name and not disabled its use - dnl via --without-lib[]Name-prefix, he wants to use it. - ac_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) - - AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ - ac_save_LIBS="$LIBS" - LIBS="$LIBS $LIB[]NAME" - AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) - LIBS="$ac_save_LIBS" - ]) - if test "$ac_cv_lib[]Name" = yes; then - HAVE_LIB[]NAME=yes - AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) - AC_MSG_CHECKING([how to link with lib[]$1]) - AC_MSG_RESULT([$LIB[]NAME]) - else - HAVE_LIB[]NAME=no - dnl If $LIB[]NAME didn't lead to a usable library, we don't need - dnl $INC[]NAME either. - CPPFLAGS="$ac_save_CPPFLAGS" - LIB[]NAME= - LTLIB[]NAME= - fi - AC_SUBST([HAVE_LIB]NAME) - AC_SUBST([LIB]NAME) - AC_SUBST([LTLIB]NAME) - undefine([Name]) - undefine([NAME]) -]) - -dnl Determine the platform dependent parameters needed to use rpath: -dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, -dnl hardcode_direct, hardcode_minus_L, -dnl sys_lib_search_path_spec, sys_lib_dlsearch_path_spec. -AC_DEFUN([AC_LIB_RPATH], -[ - AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS - AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld - AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host - AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir - AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ - CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ - ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh - . ./conftest.sh - rm -f ./conftest.sh - acl_cv_rpath=done - ]) - wl="$acl_cv_wl" - libext="$acl_cv_libext" - shlibext="$acl_cv_shlibext" - hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - hardcode_direct="$acl_cv_hardcode_direct" - hardcode_minus_L="$acl_cv_hardcode_minus_L" - sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec" - sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec" -]) - -dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and -dnl the libraries corresponding to explicit and implicit dependencies. -dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. -AC_DEFUN([AC_LIB_LINKFLAGS_BODY], -[ - define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_ARG_WITH([lib$1-prefix], -[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib - --without-lib$1-prefix don't search for lib$1 in includedir and libdir], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi -]) - dnl Search the library and its dependencies in $additional_libdir and - dnl $LDFLAGS. Using breadth-first-seach. - LIB[]NAME= - LTLIB[]NAME= - INC[]NAME= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='$1 $2' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - dnl See if it was already located by an earlier AC_LIB_LINKFLAGS - dnl or AC_LIB_HAVE_LINKFLAGS call. - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" - else - dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined - dnl that this library doesn't exist. So just drop it. - : - fi - else - dnl Search the library lib$name in $additional_libdir and $LDFLAGS - dnl and the already constructed $LIBNAME/$LTLIBNAME. - found_dir= - found_la= - found_so= - found_a= - if test $use_additional = yes; then - if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then - found_dir="$additional_libdir" - found_so="$additional_libdir/lib$name.$shlibext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - else - if test -f "$additional_libdir/lib$name.$libext"; then - found_dir="$additional_libdir" - found_a="$additional_libdir/lib$name.$libext" - if test -f "$additional_libdir/lib$name.la"; then - found_la="$additional_libdir/lib$name.la" - fi - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then - found_dir="$dir" - found_so="$dir/lib$name.$shlibext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - else - if test -f "$dir/lib$name.$libext"; then - found_dir="$dir" - found_a="$dir/lib$name.$libext" - if test -f "$dir/lib$name.la"; then - found_la="$dir/lib$name.la" - fi - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - dnl Found the library. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - dnl Linking with a shared library. We attempt to hardcode its - dnl directory into the executable's runpath, unless it's the - dnl standard /usr/lib. - if test "X$found_dir" = "X/usr/lib"; then - dnl No hardcoding is needed. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - dnl Potentially add DIR to ltrpathdirs. - dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - dnl The hardcoding into $LIBNAME is system dependent. - if test "$hardcode_direct" = yes; then - dnl Using DIR/libNAME.so during linking hardcodes DIR into the - dnl resulting binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - dnl Potentially add DIR to rpathdirs. - dnl The rpathdirs will be appended to $LIBNAME at the end. - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - dnl Rely on "-L$found_dir". - dnl But don't add it if it's already contained in the LDFLAGS - dnl or the already constructed $LIBNAME - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" - fi - if test "$hardcode_minus_L" != no; then - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH - dnl here, because this doesn't fit in flags passed to the - dnl compiler. So give up. No hardcoding. This affects only - dnl very old systems. - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - dnl Linking with a static library. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" - else - dnl We shouldn't come here, but anyway it's good to have a - dnl fallback. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" - fi - fi - dnl Assume the include files are nearby. - additional_includedir= - case "$found_dir" in - */lib | */lib/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - dnl Potentially add $additional_includedir to $INCNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's /usr/local/include and we are using GCC on Linux, - dnl 3. if it's already present in $CPPFLAGS or the already - dnl constructed $INCNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INC[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $INCNAME. - INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - dnl Look for dependencies. - if test -n "$found_la"; then - dnl Read the .la file. It defines the variables - dnl dlname, library_names, old_library, dependency_libs, current, - dnl age, revision, installed, dlopen, dlpreopen, libdir. - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - dnl We use only dependency_libs. - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's /usr/local/lib and we are using GCC on Linux, - dnl 3. if it's already present in $LDFLAGS or the already - dnl constructed $LIBNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LIBNAME. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LTLIBNAME. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -l*) - dnl Handle this in the next round. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - dnl Handle this in the next round. Throw away the .la's - dnl directory; it is already contained in a preceding -L - dnl option. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - dnl Most likely an immediate library name. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" - ;; - esac - done - fi - else - dnl Didn't find the library; assume it is in the system directories - dnl known to the linker and runtime loader. (All the system - dnl directories known to the linker should also be known to the - dnl runtime loader, otherwise the system is severely misconfigured.) - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$hardcode_libdir_separator"; then - dnl Weird platform: only the last -rpath option counts, the user must - dnl pass all path elements in one option. We can arrange that for a - dnl single library, but not when more than one $LIBNAMEs are used. - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" - done - dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - else - dnl The -rpath options are cumulative. - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - dnl When using libtool, the option that works for both libraries and - dnl executables is -R. The -R options are cumulative. - for found_dir in $ltrpathdirs; do - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" - done - fi -]) - -dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, -dnl unless already present in VAR. -dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes -dnl contains two or three consecutive elements that belong together. -AC_DEFUN([AC_LIB_APPENDTOVAR], -[ - for element in [$2]; do - haveit= - for x in $[$1]; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - [$1]="${[$1]}${[$1]:+ }$element" - fi - done -]) diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4 deleted file mode 100644 index b8b79ab9..00000000 --- a/m4/lib-prefix.m4 +++ /dev/null @@ -1,148 +0,0 @@ -# lib-prefix.m4 serial 1 (gettext-0.11) -dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Bruno Haible. - -dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed -dnl to access previously installed libraries. The basic assumption is that -dnl a user will want packages to use other packages he previously installed -dnl with the same --prefix option. -dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate -dnl libraries, but is otherwise very convenient. -AC_DEFUN([AC_LIB_PREFIX], -[ - AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) - AC_REQUIRE([AC_PROG_CC]) - AC_REQUIRE([AC_CANONICAL_HOST]) - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_ARG_WITH([lib-prefix], -[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib - --without-lib-prefix don't search for libraries in includedir and libdir], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/lib" - fi - fi -]) - if test $use_additional = yes; then - dnl Potentially add $additional_includedir to $CPPFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's already present in $CPPFLAGS, - dnl 3. if it's /usr/local/include and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - for x in $CPPFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $CPPFLAGS. - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" - fi - fi - fi - fi - dnl Potentially add $additional_libdir to $LDFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's already present in $LDFLAGS, - dnl 3. if it's /usr/local/lib and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/lib"; then - haveit= - for x in $LDFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_libdir" = "X/usr/local/lib"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LDFLAGS. - LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" - fi - fi - fi - fi - fi -]) - -dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, -dnl acl_final_exec_prefix, containing the values to which $prefix and -dnl $exec_prefix will expand at the end of the configure script. -AC_DEFUN([AC_LIB_PREPARE_PREFIX], -[ - dnl Unfortunately, prefix and exec_prefix get only finally determined - dnl at the end of configure. - if test "X$prefix" = "XNONE"; then - acl_final_prefix="$ac_default_prefix" - else - acl_final_prefix="$prefix" - fi - if test "X$exec_prefix" = "XNONE"; then - acl_final_exec_prefix='${prefix}' - else - acl_final_exec_prefix="$exec_prefix" - fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" - prefix="$acl_save_prefix" -]) - -dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the -dnl variables prefix and exec_prefix bound to the values they will have -dnl at the end of the configure script. -AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], -[ - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - $1 - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" -]) diff --git a/m4/progtest.m4 b/m4/progtest.m4 deleted file mode 100644 index 443c8e30..00000000 --- a/m4/progtest.m4 +++ /dev/null @@ -1,59 +0,0 @@ -# progtest.m4 serial 2 (gettext-0.10.40) -dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. -dnl -dnl This file can can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper <drepper@cygnus.com>, 1996. - -# Search path for a program which passes the given test. - -dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, -dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) -AC_DEFUN([AM_PATH_PROG_WITH_TEST], -[# Extract the first word of "$2", so it can be a program name with args. -set dummy $2; ac_word=[$]2 -AC_MSG_CHECKING([for $ac_word]) -AC_CACHE_VAL(ac_cv_path_$1, -[case "[$]$1" in - /*) - ac_cv_path_$1="[$]$1" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in ifelse([$5], , $PATH, [$5]); do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if [$3]; then - ac_cv_path_$1="$ac_dir/$ac_word" - break - fi - fi - done - IFS="$ac_save_ifs" -dnl If no 4th arg is given, leave the cache variable unset, -dnl so AC_PATH_PROGS will keep looking. -ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" -])dnl - ;; -esac])dnl -$1="$ac_cv_path_$1" -if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then - AC_MSG_RESULT([$]$1) -else - AC_MSG_RESULT(no) -fi -AC_SUBST($1)dnl -]) diff --git a/m4/stdint_h.m4 b/m4/stdint_h.m4 deleted file mode 100644 index 4b5a4ac6..00000000 --- a/m4/stdint_h.m4 +++ /dev/null @@ -1,28 +0,0 @@ -# stdint_h.m4 serial 2 (gettext-0.11.4) -dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Paul Eggert. - -# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists, -# doesn't clash with <sys/types.h>, and declares uintmax_t. - -AC_DEFUN([jm_AC_HEADER_STDINT_H], -[ - AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h, - [AC_TRY_COMPILE( - [#include <sys/types.h> -#include <stdint.h>], - [uintmax_t i = (uintmax_t) -1;], - jm_ac_cv_header_stdint_h=yes, - jm_ac_cv_header_stdint_h=no)]) - if test $jm_ac_cv_header_stdint_h = yes; then - AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, -[Define if <stdint.h> exists, doesn't clash with <sys/types.h>, - and declares uintmax_t. ]) - fi -]) diff --git a/m4/uintmax_t.m4 b/m4/uintmax_t.m4 deleted file mode 100644 index ec3a8b92..00000000 --- a/m4/uintmax_t.m4 +++ /dev/null @@ -1,29 +0,0 @@ -# uintmax_t.m4 serial 6 (gettext-0.11) -dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Paul Eggert. - -AC_PREREQ(2.13) - -# Define uintmax_t to `unsigned long' or `unsigned long long' -# if <inttypes.h> does not exist. - -AC_DEFUN([jm_AC_TYPE_UINTMAX_T], -[ - AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) - AC_REQUIRE([jm_AC_HEADER_STDINT_H]) - if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then - AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) - test $ac_cv_type_unsigned_long_long = yes \ - && ac_type='unsigned long long' \ - || ac_type='unsigned long' - AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, - [Define to unsigned long or unsigned long long - if <inttypes.h> and <stdint.h> don't define.]) - fi -]) diff --git a/m4/ulonglong.m4 b/m4/ulonglong.m4 deleted file mode 100644 index c375e474..00000000 --- a/m4/ulonglong.m4 +++ /dev/null @@ -1,23 +0,0 @@ -# ulonglong.m4 serial 2 (fileutils-4.0.32, gettext-0.10.40) -dnl Copyright (C) 1999-2002 Free Software Foundation, Inc. -dnl This file is free software, distributed under the terms of the GNU -dnl General Public License. As a special exception to the GNU General -dnl Public License, this file may be distributed as part of a program -dnl that contains a configuration script generated by Autoconf, under -dnl the same distribution terms as the rest of that program. - -dnl From Paul Eggert. - -AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG], -[ - AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, - [AC_TRY_LINK([unsigned long long ull = 1; int i = 63;], - [unsigned long long ullmax = (unsigned long long) -1; - return ull << i | ull >> i | ullmax / ull | ullmax % ull;], - ac_cv_type_unsigned_long_long=yes, - ac_cv_type_unsigned_long_long=no)]) - if test $ac_cv_type_unsigned_long_long = yes; then - AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, - [Define if you have the unsigned long long type.]) - fi -]) diff --git a/po/ChangeLog b/po/ChangeLog deleted file mode 100644 index 179bb950..00000000 --- a/po/ChangeLog +++ /dev/null @@ -1,7 +0,0 @@ -2004-01-18 Ulrich Drepper <drepper@redhat.com> - - * POTFILES.in: Add files from libdw, libebl, and libasm. - -2003-08-11 Ulrich Drepper <drepper@redhat.com> - - * Moved to CVS archive. diff --git a/po/Makefile b/po/Makefile deleted file mode 100644 index ec9a6c05..00000000 --- a/po/Makefile +++ /dev/null @@ -1,400 +0,0 @@ -# Makefile for PO directory in any package using GNU gettext. -# Copyright (C) 1995-1997, 2000-2002 by Ulrich Drepper <drepper@gnu.ai.mit.edu> -# -# This file can be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU General Public -# License but which still want to provide support for the GNU gettext -# functionality. -# Please note that the actual code of GNU gettext is covered by the GNU -# General Public License and is *not* in the public domain. - -PACKAGE = elfutils -VERSION = 0.97 - -SHELL = /bin/sh - - -srcdir = . -top_srcdir = .. - - -prefix = /work/elfutils/google/linux-install-elfutils-0.97/ -exec_prefix = ${prefix} -datadir = ${prefix}/share -localedir = $(datadir)/locale -gettextsrcdir = $(datadir)/gettext/po -top_builddir = .. - -INSTALL = /usr/bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 -MKINSTALLDIRS = config/mkinstalldirs -mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` - -GMSGFMT = /usr/bin/msgfmt -MSGFMT = /usr/bin/msgfmt -XGETTEXT = /usr/bin/xgettext -MSGMERGE = msgmerge -MSGMERGE_UPDATE = /usr/bin/msgmerge --update -MSGINIT = msginit -MSGCONV = msgconv -MSGFILTER = msgfilter - -POFILES = -GMOFILES = -UPDATEPOFILES = -DUMMYPOFILES = -DISTFILES.common = Makefile.in.in Makevars \ -$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) -DISTFILES = $(DISTFILES.common) POTFILES.in $(DOMAIN).pot \ -$(POFILES) $(GMOFILES) \ -$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) - -POTFILES = \ - ../lib/xmalloc.c \ - ../lib/xstrdup.c \ - ../lib/xstrndup.c \ - ../src/nm.c \ - ../src/readelf.c \ - ../src/size.c \ - ../src/strip.c \ - ../src/ld.c \ - ../src/ldgeneric.c \ - ../src/ldscript.y \ - ../src/elflint.c \ - ../libasm/asm_begin.c \ - ../libasm/asm_abort.c \ - ../libasm/asm_end.c \ - ../libasm/asm_error.c \ - ../libasm/asm_getelf.c \ - ../libdw/dwarf_error.c \ - ../libebl/eblclosebackend.c \ - ../libebl/eblopenbackend.c \ - ../libebl/eblstrtab.c \ - ../libebl/i386_destr.c \ - ../libebl/i386_init.c \ - ../libebl/i386_symbol.c \ - ../libebl/mips_destr.c \ - ../libebl/mips_init.c \ - ../libebl/mips_symbol.c \ - ../libebl/sh_destr.c \ - ../libebl/sh_init.c \ - ../libebl/sh_symbol.c \ - ../libebl/sparc_destr.c \ - ../libebl/sparc_init.c \ - ../libebl/sparc_symbol.c - -CATALOGS = - -# Makevars gets inserted here. (Don't remove this line!) -# Makefile variables for PO directory in any package using GNU gettext. - -# Usually the message domain is the same as the package name. -DOMAIN = $(PACKAGE) - -# These two variables depend on the location of this directory. -subdir = po -top_builddir = .. - -# These options get passed to xgettext. -XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ - -# This is the copyright holder that gets inserted into the header of the -# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding -# package. (Note that the msgstr strings, extracted from the package's -# sources, belong to the copyright holder of the package.) Translators are -# expected to transfer the copyright for their translations to this person -# or entity, or to disclaim their copyright. The empty string stands for -# the public domain; in this case the translators are expected to disclaim -# their copyright. -COPYRIGHT_HOLDER = Red Hat, Inc. - -# This is the list of locale categories, beyond LC_MESSAGES, for which the -# message catalogs shall be used. It is usually empty. -EXTRA_LOCALE_CATEGORIES = - -.SUFFIXES: -.SUFFIXES: .po .gmo .mo .nop .po-update - -.po.mo: - $(MSGFMT) -c -o $@ $< - -.po.gmo: - @lang=`echo $* | sed -e 's,.*/,,'`; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ - cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po - - -all: all-yes - -all-yes: $(CATALOGS) -all-no: - -# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', -# otherwise packages like GCC can not be built if only parts of the source -# have been downloaded. - -$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in - $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ - --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ - --files-from=$(srcdir)/POTFILES.in \ - --copyright-holder='$(COPYRIGHT_HOLDER)' \ - && test ! -f $(DOMAIN).po \ - || ( rm -f $(srcdir)/$(DOMAIN).pot \ - && mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot ) - -$(srcdir)/$(DOMAIN).pot: - $(MAKE) $(DOMAIN).pot-update - -$(POFILES): $(srcdir)/$(DOMAIN).pot - @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ - cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot - - -install: install-exec install-data -install-exec: -install-data: install-data-yes - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - for file in $(DISTFILES.common); do \ - $(INSTALL_DATA) $(srcdir)/$$file \ - $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi -install-data-no: all -install-data-yes: all - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ - $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ - echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ - for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ - if test -n "$$lc"; then \ - if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ - link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ - mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ - for file in *; do \ - if test -f $$file; then \ - ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ - fi; \ - done); \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - else \ - if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ - :; \ - else \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - fi; \ - fi; \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ - ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ - cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ - fi; \ - done; \ - done - -install-strip: install - -installdirs: installdirs-exec installdirs-data -installdirs-exec: -installdirs-data: installdirs-data-yes - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - else \ - : ; \ - fi -installdirs-data-no: -installdirs-data-yes: - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ - if test -n "$$lc"; then \ - if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ - link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ - mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ - for file in *; do \ - if test -f $$file; then \ - ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ - fi; \ - done); \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - else \ - if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ - :; \ - else \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - fi; \ - fi; \ - fi; \ - done; \ - done - -# Define this as empty until I found a useful application. -installcheck: - -uninstall: uninstall-exec uninstall-data -uninstall-exec: -uninstall-data: uninstall-data-yes - if test "$(PACKAGE)" = "gettext"; then \ - for file in $(DISTFILES.common); do \ - rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi -uninstall-data-no: -uninstall-data-yes: - catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - done; \ - done - -check: all - -dvi info tags TAGS ID: - -mostlyclean: - rm -f core core.* $(DOMAIN).po *.new.po - rm -fr *.o - -clean: mostlyclean - -distclean: clean - rm -f Makefile Makefile.in POTFILES *.mo - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f $(GMOFILES) - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: - $(MAKE) update-po - @$(MAKE) dist2 -# This is a separate target because 'update-po' must be executed before. -dist2: $(DISTFILES) - dists="$(DISTFILES)"; \ - if test -f $(srcdir)/ChangeLog; then dists="$$dists ChangeLog"; fi; \ - if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ - for file in $$dists; do \ - if test -f $$file; then \ - cp -p $$file $(distdir); \ - else \ - cp -p $(srcdir)/$$file $(distdir); \ - fi; \ - done - -update-po: Makefile - $(MAKE) $(DOMAIN).pot-update - $(MAKE) $(UPDATEPOFILES) - $(MAKE) update-gmo - -# General rule for updating PO files. - -.nop.po-update: - @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \ - tmpdir=`pwd`; \ - echo "$$lang:"; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ - cd $(srcdir); \ - if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ - if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ - rm -f $$tmpdir/$$lang.new.po; \ - else \ - if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ - :; \ - else \ - echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ - exit 1; \ - fi; \ - fi; \ - else \ - echo "msgmerge for $$lang.po failed!" 1>&2; \ - rm -f $$tmpdir/$$lang.new.po; \ - fi - -$(DUMMYPOFILES): - -update-gmo: Makefile $(GMOFILES) - @: - -Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ - $(SHELL) ./config.status - -force: - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: -# Special Makefile rules for English message catalogs with quotation marks. - -DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot - -.SUFFIXES: .insert-header .po-update-en - -en@quot.po-update: en@quot.po-update-en -en@boldquot.po-update: en@boldquot.po-update-en - -.insert-header.po-update-en: - @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ - tmpdir=`pwd`; \ - echo "$$lang:"; \ - ll=`echo $$lang | sed -e 's/@.*//'`; \ - LC_ALL=C; export LC_ALL; \ - cd $(srcdir); \ - if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ - if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ - rm -f $$tmpdir/$$lang.new.po; \ - else \ - if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ - :; \ - else \ - echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ - exit 1; \ - fi; \ - fi; \ - else \ - echo "creation of $$lang.po failed!" 1>&2; \ - rm -f $$tmpdir/$$lang.new.po; \ - fi - -en@quot.insert-header: insert-header.sin - sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header - -en@boldquot.insert-header: insert-header.sin - sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header - -mostlyclean: mostlyclean-quot -mostlyclean-quot: - rm -f *.insert-header diff --git a/po/Makefile.in b/po/Makefile.in deleted file mode 100644 index 64ca4882..00000000 --- a/po/Makefile.in +++ /dev/null @@ -1,301 +0,0 @@ -# Makefile for PO directory in any package using GNU gettext. -# Copyright (C) 1995-1997, 2000-2002 by Ulrich Drepper <drepper@gnu.ai.mit.edu> -# -# This file can be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU General Public -# License but which still want to provide support for the GNU gettext -# functionality. -# Please note that the actual code of GNU gettext is covered by the GNU -# General Public License and is *not* in the public domain. - -PACKAGE = elfutils -VERSION = 0.97 - -SHELL = /bin/sh - - -srcdir = . -top_srcdir = .. - - -prefix = /work/elfutils/google/linux-install-elfutils-0.97/ -exec_prefix = ${prefix} -datadir = ${prefix}/share -localedir = $(datadir)/locale -gettextsrcdir = $(datadir)/gettext/po -top_builddir = .. - -INSTALL = /usr/bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 -MKINSTALLDIRS = config/mkinstalldirs -mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` - -GMSGFMT = /usr/bin/msgfmt -MSGFMT = /usr/bin/msgfmt -XGETTEXT = /usr/bin/xgettext -MSGMERGE = msgmerge -MSGMERGE_UPDATE = /usr/bin/msgmerge --update -MSGINIT = msginit -MSGCONV = msgconv -MSGFILTER = msgfilter - -POFILES = @POFILES@ -GMOFILES = @GMOFILES@ -UPDATEPOFILES = @UPDATEPOFILES@ -DUMMYPOFILES = @DUMMYPOFILES@ -DISTFILES.common = Makefile.in.in Makevars \ -$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) -DISTFILES = $(DISTFILES.common) POTFILES.in $(DOMAIN).pot \ -$(POFILES) $(GMOFILES) \ -$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) - -POTFILES = \ - -CATALOGS = @CATALOGS@ - -# Makevars gets inserted here. (Don't remove this line!) - -.SUFFIXES: -.SUFFIXES: .po .gmo .mo .nop .po-update - -.po.mo: - $(MSGFMT) -c -o $@ $< - -.po.gmo: - @lang=`echo $* | sed -e 's,.*/,,'`; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ - cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po - - -all: all-yes - -all-yes: $(CATALOGS) -all-no: - -# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', -# otherwise packages like GCC can not be built if only parts of the source -# have been downloaded. - -$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in - $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ - --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ - --files-from=$(srcdir)/POTFILES.in \ - --copyright-holder='$(COPYRIGHT_HOLDER)' \ - && test ! -f $(DOMAIN).po \ - || ( rm -f $(srcdir)/$(DOMAIN).pot \ - && mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot ) - -$(srcdir)/$(DOMAIN).pot: - $(MAKE) $(DOMAIN).pot-update - -$(POFILES): $(srcdir)/$(DOMAIN).pot - @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ - cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot - - -install: install-exec install-data -install-exec: -install-data: install-data-yes - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - for file in $(DISTFILES.common); do \ - $(INSTALL_DATA) $(srcdir)/$$file \ - $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi -install-data-no: all -install-data-yes: all - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ - $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ - echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ - for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ - if test -n "$$lc"; then \ - if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ - link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ - mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ - for file in *; do \ - if test -f $$file; then \ - ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ - fi; \ - done); \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - else \ - if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ - :; \ - else \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - fi; \ - fi; \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ - ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ - cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ - fi; \ - done; \ - done - -install-strip: install - -installdirs: installdirs-exec installdirs-data -installdirs-exec: -installdirs-data: installdirs-data-yes - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - else \ - : ; \ - fi -installdirs-data-no: -installdirs-data-yes: - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ - if test -n "$$lc"; then \ - if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ - link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ - mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ - for file in *; do \ - if test -f $$file; then \ - ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ - fi; \ - done); \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - else \ - if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ - :; \ - else \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - fi; \ - fi; \ - fi; \ - done; \ - done - -# Define this as empty until I found a useful application. -installcheck: - -uninstall: uninstall-exec uninstall-data -uninstall-exec: -uninstall-data: uninstall-data-yes - if test "$(PACKAGE)" = "gettext"; then \ - for file in $(DISTFILES.common); do \ - rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi -uninstall-data-no: -uninstall-data-yes: - catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - done; \ - done - -check: all - -dvi info tags TAGS ID: - -mostlyclean: - rm -f core core.* $(DOMAIN).po *.new.po - rm -fr *.o - -clean: mostlyclean - -distclean: clean - rm -f Makefile Makefile.in POTFILES *.mo - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f $(GMOFILES) - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: - $(MAKE) update-po - @$(MAKE) dist2 -# This is a separate target because 'update-po' must be executed before. -dist2: $(DISTFILES) - dists="$(DISTFILES)"; \ - if test -f $(srcdir)/ChangeLog; then dists="$$dists ChangeLog"; fi; \ - if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ - for file in $$dists; do \ - if test -f $$file; then \ - cp -p $$file $(distdir); \ - else \ - cp -p $(srcdir)/$$file $(distdir); \ - fi; \ - done - -update-po: Makefile - $(MAKE) $(DOMAIN).pot-update - $(MAKE) $(UPDATEPOFILES) - $(MAKE) update-gmo - -# General rule for updating PO files. - -.nop.po-update: - @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \ - tmpdir=`pwd`; \ - echo "$$lang:"; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ - cd $(srcdir); \ - if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ - if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ - rm -f $$tmpdir/$$lang.new.po; \ - else \ - if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ - :; \ - else \ - echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ - exit 1; \ - fi; \ - fi; \ - else \ - echo "msgmerge for $$lang.po failed!" 1>&2; \ - rm -f $$tmpdir/$$lang.new.po; \ - fi - -$(DUMMYPOFILES): - -update-gmo: Makefile $(GMOFILES) - @: - -Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ - $(SHELL) ./config.status - -force: - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/po/Makefile.in.in b/po/Makefile.in.in deleted file mode 100644 index d1e93381..00000000 --- a/po/Makefile.in.in +++ /dev/null @@ -1,301 +0,0 @@ -# Makefile for PO directory in any package using GNU gettext. -# Copyright (C) 1995-1997, 2000-2002 by Ulrich Drepper <drepper@gnu.ai.mit.edu> -# -# This file can be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU General Public -# License but which still want to provide support for the GNU gettext -# functionality. -# Please note that the actual code of GNU gettext is covered by the GNU -# General Public License and is *not* in the public domain. - -PACKAGE = @PACKAGE@ -VERSION = @VERSION@ - -SHELL = /bin/sh -@SET_MAKE@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ - -prefix = @prefix@ -exec_prefix = @exec_prefix@ -datadir = @datadir@ -localedir = $(datadir)/locale -gettextsrcdir = $(datadir)/gettext/po -top_builddir = .. - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` - -GMSGFMT = @GMSGFMT@ -MSGFMT = @MSGFMT@ -XGETTEXT = @XGETTEXT@ -MSGMERGE = msgmerge -MSGMERGE_UPDATE = @MSGMERGE@ --update -MSGINIT = msginit -MSGCONV = msgconv -MSGFILTER = msgfilter - -POFILES = @POFILES@ -GMOFILES = @GMOFILES@ -UPDATEPOFILES = @UPDATEPOFILES@ -DUMMYPOFILES = @DUMMYPOFILES@ -DISTFILES.common = Makefile.in.in Makevars \ -$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) -DISTFILES = $(DISTFILES.common) POTFILES.in $(DOMAIN).pot \ -$(POFILES) $(GMOFILES) \ -$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) - -POTFILES = \ - -CATALOGS = @CATALOGS@ - -# Makevars gets inserted here. (Don't remove this line!) - -.SUFFIXES: -.SUFFIXES: .po .gmo .mo .nop .po-update - -.po.mo: - $(MSGFMT) -c -o $@ $< - -.po.gmo: - @lang=`echo $* | sed -e 's,.*/,,'`; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ - cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po - - -all: all-@USE_NLS@ - -all-yes: $(CATALOGS) -all-no: - -# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', -# otherwise packages like GCC can not be built if only parts of the source -# have been downloaded. - -$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in - $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ - --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ - --files-from=$(srcdir)/POTFILES.in \ - --copyright-holder='$(COPYRIGHT_HOLDER)' \ - && test ! -f $(DOMAIN).po \ - || ( rm -f $(srcdir)/$(DOMAIN).pot \ - && mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot ) - -$(srcdir)/$(DOMAIN).pot: - $(MAKE) $(DOMAIN).pot-update - -$(POFILES): $(srcdir)/$(DOMAIN).pot - @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ - cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot - - -install: install-exec install-data -install-exec: -install-data: install-data-@USE_NLS@ - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - for file in $(DISTFILES.common); do \ - $(INSTALL_DATA) $(srcdir)/$$file \ - $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi -install-data-no: all -install-data-yes: all - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ - $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ - echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ - for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ - if test -n "$$lc"; then \ - if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ - link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ - mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ - for file in *; do \ - if test -f $$file; then \ - ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ - fi; \ - done); \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - else \ - if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ - :; \ - else \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - fi; \ - fi; \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ - ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ - cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ - fi; \ - done; \ - done - -install-strip: install - -installdirs: installdirs-exec installdirs-data -installdirs-exec: -installdirs-data: installdirs-data-@USE_NLS@ - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - else \ - : ; \ - fi -installdirs-data-no: -installdirs-data-yes: - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ - if test -n "$$lc"; then \ - if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ - link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ - mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ - for file in *; do \ - if test -f $$file; then \ - ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ - fi; \ - done); \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ - else \ - if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ - :; \ - else \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ - mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ - fi; \ - fi; \ - fi; \ - done; \ - done - -# Define this as empty until I found a useful application. -installcheck: - -uninstall: uninstall-exec uninstall-data -uninstall-exec: -uninstall-data: uninstall-data-@USE_NLS@ - if test "$(PACKAGE)" = "gettext"; then \ - for file in $(DISTFILES.common); do \ - rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi -uninstall-data-no: -uninstall-data-yes: - catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ - rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ - done; \ - done - -check: all - -dvi info tags TAGS ID: - -mostlyclean: - rm -f core core.* $(DOMAIN).po *.new.po - rm -fr *.o - -clean: mostlyclean - -distclean: clean - rm -f Makefile Makefile.in POTFILES *.mo - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f $(GMOFILES) - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: - $(MAKE) update-po - @$(MAKE) dist2 -# This is a separate target because 'update-po' must be executed before. -dist2: $(DISTFILES) - dists="$(DISTFILES)"; \ - if test -f $(srcdir)/ChangeLog; then dists="$$dists ChangeLog"; fi; \ - if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ - for file in $$dists; do \ - if test -f $$file; then \ - cp -p $$file $(distdir); \ - else \ - cp -p $(srcdir)/$$file $(distdir); \ - fi; \ - done - -update-po: Makefile - $(MAKE) $(DOMAIN).pot-update - $(MAKE) $(UPDATEPOFILES) - $(MAKE) update-gmo - -# General rule for updating PO files. - -.nop.po-update: - @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \ - tmpdir=`pwd`; \ - echo "$$lang:"; \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ - cd $(srcdir); \ - if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ - if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ - rm -f $$tmpdir/$$lang.new.po; \ - else \ - if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ - :; \ - else \ - echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ - exit 1; \ - fi; \ - fi; \ - else \ - echo "msgmerge for $$lang.po failed!" 1>&2; \ - rm -f $$tmpdir/$$lang.new.po; \ - fi - -$(DUMMYPOFILES): - -update-gmo: Makefile $(GMOFILES) - @: - -Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ - $(SHELL) ./config.status - -force: - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/po/Makevars b/po/Makevars deleted file mode 100644 index 0accb70a..00000000 --- a/po/Makevars +++ /dev/null @@ -1,25 +0,0 @@ -# Makefile variables for PO directory in any package using GNU gettext. - -# Usually the message domain is the same as the package name. -DOMAIN = $(PACKAGE) - -# These two variables depend on the location of this directory. -subdir = po -top_builddir = .. - -# These options get passed to xgettext. -XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ - -# This is the copyright holder that gets inserted into the header of the -# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding -# package. (Note that the msgstr strings, extracted from the package's -# sources, belong to the copyright holder of the package.) Translators are -# expected to transfer the copyright for their translations to this person -# or entity, or to disclaim their copyright. The empty string stands for -# the public domain; in this case the translators are expected to disclaim -# their copyright. -COPYRIGHT_HOLDER = Red Hat, Inc. - -# This is the list of locale categories, beyond LC_MESSAGES, for which the -# message catalogs shall be used. It is usually empty. -EXTRA_LOCALE_CATEGORIES = diff --git a/po/POTFILES b/po/POTFILES deleted file mode 100644 index b363051e..00000000 --- a/po/POTFILES +++ /dev/null @@ -1,32 +0,0 @@ - ../lib/xmalloc.c \ - ../lib/xstrdup.c \ - ../lib/xstrndup.c \ - ../src/nm.c \ - ../src/readelf.c \ - ../src/size.c \ - ../src/strip.c \ - ../src/ld.c \ - ../src/ldgeneric.c \ - ../src/ldscript.y \ - ../src/elflint.c \ - ../libasm/asm_begin.c \ - ../libasm/asm_abort.c \ - ../libasm/asm_end.c \ - ../libasm/asm_error.c \ - ../libasm/asm_getelf.c \ - ../libdw/dwarf_error.c \ - ../libebl/eblclosebackend.c \ - ../libebl/eblopenbackend.c \ - ../libebl/eblstrtab.c \ - ../libebl/i386_destr.c \ - ../libebl/i386_init.c \ - ../libebl/i386_symbol.c \ - ../libebl/mips_destr.c \ - ../libebl/mips_init.c \ - ../libebl/mips_symbol.c \ - ../libebl/sh_destr.c \ - ../libebl/sh_init.c \ - ../libebl/sh_symbol.c \ - ../libebl/sparc_destr.c \ - ../libebl/sparc_init.c \ - ../libebl/sparc_symbol.c diff --git a/po/POTFILES.in b/po/POTFILES.in deleted file mode 100644 index aa813125..00000000 --- a/po/POTFILES.in +++ /dev/null @@ -1,42 +0,0 @@ -# List of files which containing translatable strings. -# Copyright (C) 2000 Red Hat, Inc. - -# Files from the compatibility library -lib/xmalloc.c -lib/xstrdup.c -lib/xstrndup.c - -# Program sources -src/nm.c -src/readelf.c -src/size.c -src/strip.c -src/ld.c -src/ldgeneric.c -src/ldscript.y -src/elflint.c -libasm/asm_begin.c -libasm/asm_abort.c -libasm/asm_end.c -libasm/asm_error.c -libasm/asm_getelf.c -libdw/dwarf_error.c -# List of files which containing translatable strings. -# Copyright (C) 2000 Red Hat, Inc. - -# Library sources -libebl/eblclosebackend.c -libebl/eblopenbackend.c -libebl/eblstrtab.c -libebl/i386_destr.c -libebl/i386_init.c -libebl/i386_symbol.c -libebl/mips_destr.c -libebl/mips_init.c -libebl/mips_symbol.c -libebl/sh_destr.c -libebl/sh_init.c -libebl/sh_symbol.c -libebl/sparc_destr.c -libebl/sparc_init.c -libebl/sparc_symbol.c diff --git a/po/Rules-quot b/po/Rules-quot deleted file mode 100644 index 5f46d237..00000000 --- a/po/Rules-quot +++ /dev/null @@ -1,42 +0,0 @@ -# Special Makefile rules for English message catalogs with quotation marks. - -DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot - -.SUFFIXES: .insert-header .po-update-en - -en@quot.po-update: en@quot.po-update-en -en@boldquot.po-update: en@boldquot.po-update-en - -.insert-header.po-update-en: - @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ - tmpdir=`pwd`; \ - echo "$$lang:"; \ - ll=`echo $$lang | sed -e 's/@.*//'`; \ - LC_ALL=C; export LC_ALL; \ - cd $(srcdir); \ - if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ - if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ - rm -f $$tmpdir/$$lang.new.po; \ - else \ - if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ - :; \ - else \ - echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ - exit 1; \ - fi; \ - fi; \ - else \ - echo "creation of $$lang.po failed!" 1>&2; \ - rm -f $$tmpdir/$$lang.new.po; \ - fi - -en@quot.insert-header: insert-header.sin - sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header - -en@boldquot.insert-header: insert-header.sin - sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header - -mostlyclean: mostlyclean-quot -mostlyclean-quot: - rm -f *.insert-header diff --git a/po/boldquot.sed b/po/boldquot.sed deleted file mode 100644 index 4b937aa5..00000000 --- a/po/boldquot.sed +++ /dev/null @@ -1,10 +0,0 @@ -s/"\([^"]*\)"/“\1”/g -s/`\([^`']*\)'/‘\1’/g -s/ '\([^`']*\)' / ‘\1’ /g -s/ '\([^`']*\)'$/ ‘\1’/g -s/^'\([^`']*\)' /‘\1’ /g -s/“”/""/g -s/“/“[1m/g -s/”/[0m”/g -s/‘/‘[1m/g -s/’/[0m’/g diff --git a/po/elfutils.pot b/po/elfutils.pot deleted file mode 100644 index 4fe08eba..00000000 --- a/po/elfutils.pot +++ /dev/null @@ -1,3071 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Red Hat, Inc. -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2004-09-25 12:42-0700\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL@li.org>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" - -#: lib/xmalloc.c:38 lib/xmalloc.c:52 lib/xmalloc.c:66 -msgid "memory exhausted" -msgstr "" - -#: src/nm.c:59 src/readelf.c:51 src/strip.c:57 -msgid "Output selection:" -msgstr "" - -#: src/nm.c:60 -msgid "Display debugger-only symbols" -msgstr "" - -#: src/nm.c:61 -msgid "Display only defined symbols" -msgstr "" - -#: src/nm.c:64 -msgid "Display dynamic symbols instead of normal symbols" -msgstr "" - -#: src/nm.c:65 -msgid "Display only external symbols" -msgstr "" - -#: src/nm.c:66 -msgid "Display only undefined symbols" -msgstr "" - -#: src/nm.c:68 -msgid "Include index for symbols from archive members" -msgstr "" - -#: src/nm.c:70 src/size.c:51 -msgid "Output format:" -msgstr "" - -#: src/nm.c:72 -msgid "Print name of the input file before every symbol" -msgstr "" - -#: src/nm.c:75 -msgid "" -"Use the output format FORMAT. FORMAT can be `bsd', `sysv' or `posix'. The " -"default is `sysv'" -msgstr "" - -#: src/nm.c:77 -msgid "Same as --format=bsd" -msgstr "" - -#: src/nm.c:78 -msgid "Same as --format=posix" -msgstr "" - -#: src/nm.c:79 src/size.c:55 -msgid "Use RADIX for printing symbol values" -msgstr "" - -#: src/nm.c:80 -msgid "Mark weak symbols" -msgstr "" - -#: src/nm.c:81 -msgid "Print size of defined symbols" -msgstr "" - -#: src/nm.c:83 src/size.c:61 src/strip.c:61 -msgid "Output options:" -msgstr "" - -#: src/nm.c:84 -msgid "Sort symbols numerically by address" -msgstr "" - -#: src/nm.c:86 -msgid "Do not sort the symbols" -msgstr "" - -#: src/nm.c:87 -msgid "Reverse the sense of the sort" -msgstr "" - -#: src/nm.c:88 -msgid "Miscellaneous:" -msgstr "" - -#: src/nm.c:93 -msgid "List symbols from FILEs (a.out by default)." -msgstr "" - -#: src/nm.c:96 src/size.c:72 src/strip.c:76 -msgid "[FILE...]" -msgstr "" - -#: src/nm.c:124 src/size.c:100 src/strip.c:103 -#, c-format -msgid "%s: INTERNAL ERROR %d (%s-%s): %s" -msgstr "" - -#: src/nm.c:241 src/readelf.c:376 src/size.c:202 src/strip.c:182 src/ld.c:871 -#: src/elflint.c:241 -#, c-format -msgid "" -"Copyright (C) %s Red Hat, Inc.\n" -"This is free software; see the source for copying conditions. There is NO\n" -"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" -msgstr "" - -#: src/nm.c:246 src/readelf.c:381 src/size.c:207 src/strip.c:187 src/ld.c:876 -#: src/elflint.c:246 -#, c-format -msgid "Written by %s.\n" -msgstr "" - -#: src/nm.c:351 src/readelf.c:359 src/size.c:285 src/strip.c:237 src/ld.c:490 -#: src/elflint.c:224 -#, c-format -msgid "Please report bugs to %s.\n" -msgstr "" - -#: src/nm.c:388 src/nm.c:400 src/size.c:324 -#, c-format -msgid "while close `%s'" -msgstr "" - -#: src/nm.c:410 src/strip.c:322 -#, c-format -msgid "%s: File format not recognized" -msgstr "" - -#: src/nm.c:450 -msgid "" -"\n" -"Archive index:" -msgstr "" - -#: src/nm.c:459 -#, c-format -msgid "invalid offset %zu for symbol %s" -msgstr "" - -#: src/nm.c:464 -#, c-format -msgid "%s in %s\n" -msgstr "" - -#: src/nm.c:472 -msgid "cannot reset archive offset to beginning" -msgstr "" - -#: src/nm.c:496 -#, c-format -msgid "%s%s%s: file format not recognized" -msgstr "" - -#: src/nm.c:714 -msgid "cannot create search tree" -msgstr "" - -#: src/nm.c:742 src/nm.c:988 src/readelf.c:691 src/readelf.c:834 -#: src/readelf.c:947 src/readelf.c:1131 src/readelf.c:1350 src/readelf.c:1509 -#: src/readelf.c:1682 src/readelf.c:1941 src/readelf.c:2018 src/readelf.c:2106 -#: src/readelf.c:2387 src/readelf.c:2513 src/readelf.c:4392 src/size.c:429 -#: src/size.c:504 src/strip.c:468 -msgid "cannot get section header string table index" -msgstr "" - -#: src/nm.c:762 -#, c-format -msgid "" -"\n" -"\n" -"Symbols from %s:\n" -"\n" -msgstr "" - -#: src/nm.c:764 -#, c-format -msgid "" -"\n" -"\n" -"Symbols from %s[%s]:\n" -"\n" -msgstr "" - -#: src/nm.c:767 -#, c-format -msgid "" -"%*s%-*s %-*s Class Type %-*s %*s Section\n" -"\n" -msgstr "" - -#: src/nm.c:998 -#, c-format -msgid "%s: entry size in section `%s' is not what we expect" -msgstr "" - -#: src/nm.c:1002 -#, c-format -msgid "%s: size of section `%s' is not multiple of entry size" -msgstr "" - -#: src/nm.c:1235 -#, c-format -msgid "%s%s%s%s: Invalid operation" -msgstr "" - -#: src/nm.c:1292 -#, c-format -msgid "%s%s%s: no symbols" -msgstr "" - -#: src/readelf.c:52 -msgid "Equivalent to: -h -l" -msgstr "" - -#: src/readelf.c:53 -msgid "Display the dynamic segment" -msgstr "" - -#: src/readelf.c:54 -msgid "Display the ELF file header" -msgstr "" - -#: src/readelf.c:56 -msgid "Display histogram of bucket list lengths" -msgstr "" - -#: src/readelf.c:57 -msgid "Display the program headers" -msgstr "" - -#: src/readelf.c:58 -msgid "Display relocations" -msgstr "" - -#: src/readelf.c:59 -msgid "Display the sections' header" -msgstr "" - -#: src/readelf.c:60 -msgid "Display the symbol table" -msgstr "" - -#: src/readelf.c:61 -msgid "Display versioning information" -msgstr "" - -#: src/readelf.c:63 -msgid "" -"Display DWARF section content. SECTION can be one of abbrev, aranges, " -"frame, info, loc, line, pubnames, str, or macinfo." -msgstr "" - -#: src/readelf.c:65 -msgid "Display the core notes" -msgstr "" - -#: src/readelf.c:67 -msgid "Display architecture specific information (if any)" -msgstr "" - -#: src/readelf.c:69 -msgid "Output control:" -msgstr "" - -#: src/readelf.c:75 -msgid "Print information from ELF file in human-readable form." -msgstr "" - -#: src/readelf.c:79 src/elflint.c:66 -msgid "FILE..." -msgstr "" - -#: src/readelf.c:222 src/elflint.c:149 -msgid "cannot open input file" -msgstr "" - -#: src/readelf.c:229 src/elflint.c:156 -#, c-format -msgid "cannot generate Elf descriptor: %s\n" -msgstr "" - -#: src/readelf.c:237 -#, c-format -msgid "error while closing Elf descriptor: %s" -msgstr "" - -#: src/readelf.c:336 -#, c-format -msgid "Unknown DWARF debug section `%s'.\n" -msgstr "" - -#: src/readelf.c:436 src/elflint.c:304 -#, c-format -msgid " error while freeing sub-ELF descriptor: %s\n" -msgstr "" - -#: src/readelf.c:444 -msgid "cannot stat input file" -msgstr "" - -#: src/readelf.c:446 -msgid "input file is empty" -msgstr "" - -#: src/readelf.c:449 src/elflint.c:312 -msgid "Not an ELF file - it has the wrong magic bytes at the start" -msgstr "" - -#: src/readelf.c:476 -#, c-format -msgid "cannot read ELF header: %s" -msgstr "" - -#: src/readelf.c:483 -msgid "cannot create EBL handle" -msgstr "" - -#: src/readelf.c:490 src/strip.c:530 src/ldgeneric.c:592 src/ldgeneric.c:1026 -#, c-format -msgid "cannot determine number of sections: %s" -msgstr "" - -#: src/readelf.c:532 -msgid "NONE (None)" -msgstr "" - -#: src/readelf.c:533 -msgid "REL (Relocatable file)" -msgstr "" - -#: src/readelf.c:534 -msgid "EXEC (Executable file)" -msgstr "" - -#: src/readelf.c:535 -msgid "DYN (Shared object file)" -msgstr "" - -#: src/readelf.c:536 -msgid "CORE (Core file)" -msgstr "" - -#: src/readelf.c:541 -#, c-format -msgid "OS Specific: (%x)\n" -msgstr "" - -#: src/readelf.c:543 -#, c-format -msgid "Processor Specific: (%x)\n" -msgstr "" - -#: src/readelf.c:556 -msgid "" -"ELF Header:\n" -" Magic: " -msgstr "" - -#: src/readelf.c:560 -#, c-format -msgid "" -"\n" -" Class: %s\n" -msgstr "" - -#: src/readelf.c:565 -#, c-format -msgid " Data: %s\n" -msgstr "" - -#: src/readelf.c:571 -#, c-format -msgid " Version: %hhd %s\n" -msgstr "" - -#: src/readelf.c:573 src/readelf.c:589 -msgid "(current)" -msgstr "" - -#: src/readelf.c:576 -#, c-format -msgid " OS/ABI: %s\n" -msgstr "" - -#: src/readelf.c:579 -#, c-format -msgid " ABI Version: %hhd\n" -msgstr "" - -#: src/readelf.c:582 -msgid " Type: " -msgstr "" - -#: src/readelf.c:585 -#, c-format -msgid " Machine: %s\n" -msgstr "" - -#: src/readelf.c:587 -#, c-format -msgid " Version: %d %s\n" -msgstr "" - -#: src/readelf.c:591 -#, c-format -msgid " Entry point address: %#<PRIx64>\n" -msgstr "" - -#: src/readelf.c:594 -#, c-format -msgid " Start of program headers: %<PRId64> %s\n" -msgstr "" - -#: src/readelf.c:595 src/readelf.c:598 -msgid "(bytes into file)" -msgstr "" - -#: src/readelf.c:597 -#, c-format -msgid " Start of section headers: %<PRId64> %s\n" -msgstr "" - -#: src/readelf.c:600 -#, c-format -msgid " Flags: %s\n" -msgstr "" - -#: src/readelf.c:603 -#, c-format -msgid " Size of this header: %<PRId16> %s\n" -msgstr "" - -#: src/readelf.c:604 src/readelf.c:607 src/readelf.c:613 -msgid "(bytes)" -msgstr "" - -#: src/readelf.c:606 -#, c-format -msgid " Size of program header entries: %<PRId16> %s\n" -msgstr "" - -#: src/readelf.c:609 -#, c-format -msgid " Number of program headers entries: %<PRId16>\n" -msgstr "" - -#: src/readelf.c:612 -#, c-format -msgid " Size of section header entries: %<PRId16> %s\n" -msgstr "" - -#: src/readelf.c:615 -#, c-format -msgid " Number of section headers entries: %<PRId16>" -msgstr "" - -#: src/readelf.c:624 -#, c-format -msgid " (%<PRIu32> in [0].sh_size)" -msgstr "" - -#: src/readelf.c:627 src/readelf.c:643 -msgid " ([0] not available)" -msgstr "" - -#: src/readelf.c:639 -#, c-format -msgid " (%<PRIu32> in [0].sh_link)" -msgstr "" - -#: src/readelf.c:647 -#, c-format -msgid "" -" Section header string table index: XINDEX%s\n" -"\n" -msgstr "" - -#: src/readelf.c:651 -#, c-format -msgid "" -" Section header string table index: %<PRId16>\n" -"\n" -msgstr "" - -#: src/readelf.c:683 -#, c-format -msgid "" -"There are %d section headers, starting at offset %#<PRIx64>:\n" -"\n" -msgstr "" - -#: src/readelf.c:693 -msgid "Section Headers:" -msgstr "" - -#: src/readelf.c:696 -msgid "" -"[Nr] Name Type Addr Off Size ES Flags Lk " -"Inf Al" -msgstr "" - -#: src/readelf.c:698 -msgid "" -"[Nr] Name Type Addr Off Size ES " -"Flags Lk Inf Al" -msgstr "" - -#: src/readelf.c:710 src/readelf.c:862 -#, c-format -msgid "cannot get section: %s" -msgstr "" - -#: src/readelf.c:716 src/readelf.c:869 -#, c-format -msgid "cannot get section header: %s" -msgstr "" - -#: src/readelf.c:775 -msgid "Program Headers:" -msgstr "" - -#: src/readelf.c:777 -msgid "" -" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align" -msgstr "" - -#: src/readelf.c:780 -msgid "" -" Type Offset VirtAddr PhysAddr FileSiz " -"MemSiz Flg Align" -msgstr "" - -#: src/readelf.c:820 -#, c-format -msgid "\t[Requesting program interpreter: %s]\n" -msgstr "" - -#: src/readelf.c:836 -msgid "" -"\n" -" Section to Segment mapping:\n" -" Segment Sections..." -msgstr "" - -#: src/readelf.c:849 -#, c-format -msgid "cannot get program header: %s" -msgstr "" - -#: src/readelf.c:952 -#, c-format -msgid "" -"\n" -"COMDAT section group [%2zu] '%s' with signature '%s' contains %zu entry:\n" -msgid_plural "" -"\n" -"COMDAT section group [%2zu] '%s' with signature '%s' contains %zu entries:\n" -msgstr[0] "" -msgstr[1] "" - -#: src/readelf.c:957 -#, c-format -msgid "" -"\n" -"Section group [%2zu] '%s' with signature '%s' contains %zu entry:\n" -msgid_plural "" -"\n" -"Section group [%2zu] '%s' with signature '%s' contains %zu entries:\n" -msgstr[0] "" -msgstr[1] "" - -#: src/readelf.c:965 -msgid "<INVALID SYMBOL>" -msgstr "" - -#: src/readelf.c:977 -#, c-format -msgid " [%2u] <INVALID SECTION>\n" -msgstr "" - -#: src/readelf.c:982 -msgid "<INVALID SECTION>" -msgstr "" - -#: src/readelf.c:1133 -#, c-format -msgid "" -"\n" -"Dynamic segment contains %lu entry:\n" -" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n" -msgid_plural "" -"\n" -"Dynamic segment contains %lu entries:\n" -" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n" -msgstr[0] "" -msgstr[1] "" - -#: src/readelf.c:1145 -msgid " Type Value\n" -msgstr "" - -#: src/readelf.c:1171 -#, c-format -msgid "Shared library: [%s]\n" -msgstr "" - -#: src/readelf.c:1176 -#, c-format -msgid "Library soname: [%s]\n" -msgstr "" - -#: src/readelf.c:1181 -#, c-format -msgid "Library rpath: [%s]\n" -msgstr "" - -#: src/readelf.c:1186 -#, c-format -msgid "Library runpath: [%s]\n" -msgstr "" - -#: src/readelf.c:1206 -#, c-format -msgid "%<PRId64> (bytes)\n" -msgstr "" - -#: src/readelf.c:1325 src/readelf.c:1482 -#, c-format -msgid "" -"\n" -"Invalid symbol table at offset %#0<PRIx64>\n" -msgstr "" - -#: src/readelf.c:1353 -#, c-format -msgid "" -"\n" -"Relocation section [%2u] '%s' for section [%2u] '%s' at offset %#0<PRIx64> " -"contains %d entry:\n" -msgid_plural "" -"\n" -"Relocation section [%2u] '%s' for section [%2u] '%s' at offset %#0<PRIx64> " -"contains %d entries:\n" -msgstr[0] "" -msgstr[1] "" - -#: src/readelf.c:1368 -#, c-format -msgid "" -"\n" -"Relocation section [%2u] '%s' at offset %#0<PRIx64> contains %d entry:\n" -msgid_plural "" -"\n" -"Relocation section [%2u] '%s' at offset %#0<PRIx64> contains %d entries:\n" -msgstr[0] "" -msgstr[1] "" - -#: src/readelf.c:1378 -msgid " Offset Type Value Name\n" -msgstr "" - -#: src/readelf.c:1380 -msgid " Offset Type Value Name\n" -msgstr "" - -#: src/readelf.c:1407 src/readelf.c:1418 src/readelf.c:1436 src/readelf.c:1448 -#: src/readelf.c:1551 src/readelf.c:1563 src/readelf.c:1582 src/readelf.c:1595 -msgid "<INVALID RELOC>" -msgstr "" - -#: src/readelf.c:1408 src/readelf.c:1552 -msgid "INVALID SYMBOL" -msgstr "" - -#: src/readelf.c:1437 src/readelf.c:1583 -msgid "INVALID SECTION" -msgstr "" - -#: src/readelf.c:1511 -#, c-format -msgid "" -"\n" -"Relocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0<PRIx64> " -"contains %d entry:\n" -msgid_plural "" -"\n" -"Relocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0<PRIx64> " -"contains %d entries:\n" -msgstr[0] "" -msgstr[1] "" - -#: src/readelf.c:1523 -msgid " Offset Type Value Addend Name\n" -msgstr "" - -#: src/readelf.c:1525 -msgid " Offset Type Value Addend Name\n" -msgstr "" - -#: src/readelf.c:1688 -#, c-format -msgid "" -"\n" -"Symbol table [%2u] '%s' contains %u entry:\n" -msgid_plural "" -"\n" -"Symbol table [%2u] '%s' contains %u entries:\n" -msgstr[0] "" -msgstr[1] "" - -#: src/readelf.c:1693 -#, c-format -msgid " %lu local symbol String table: [%2u] '%s'\n" -msgid_plural " %lu local symbols String table: [%2u] '%s'\n" -msgstr[0] "" -msgstr[1] "" - -#: src/readelf.c:1703 -msgid " Num: Value Size Type Bind Vis Ndx Name\n" -msgstr "" - -#: src/readelf.c:1705 -msgid " Num: Value Size Type Bind Vis Ndx Name\n" -msgstr "" - -#: src/readelf.c:1725 -#, c-format -msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s" -msgstr "" - -#: src/readelf.c:1815 -msgid "bad dynamic symbol" -msgstr "" - -#: src/readelf.c:1898 -msgid "none" -msgstr "" - -#: src/readelf.c:1915 -msgid "| <unknown>" -msgstr "" - -#: src/readelf.c:1943 -#, c-format -msgid "" -"\n" -"Version needs section [%2u] '%s' contains %d entry:\n" -" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n" -msgid_plural "" -"\n" -"Version needs section [%2u] '%s' contains %d entries:\n" -" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n" -msgstr[0] "" -msgstr[1] "" - -#: src/readelf.c:1970 -#, c-format -msgid " %#06x: Version: %hu File: %s Cnt: %hu\n" -msgstr "" - -#: src/readelf.c:1985 -#, c-format -msgid " %#06x: Name: %s Flags: %s Version: %hu\n" -msgstr "" - -#: src/readelf.c:2020 -#, c-format -msgid "" -"\n" -"Version definition section [%2u] '%s' contains %d entry:\n" -" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n" -msgid_plural "" -"\n" -"Version definition section [%2u] '%s' contains %d entries:\n" -" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n" -msgstr[0] "" -msgstr[1] "" - -#: src/readelf.c:2055 -#, c-format -msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n" -msgstr "" - -#: src/readelf.c:2070 -#, c-format -msgid " %#06x: Parent %d: %s\n" -msgstr "" - -#: src/readelf.c:2319 -#, c-format -msgid "" -"\n" -"Version symbols section [%2u] '%s' contains %d entry:\n" -" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'" -msgid_plural "" -"\n" -"Version symbols section [%2u] '%s' contains %d entries:\n" -" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'" -msgstr[0] "" -msgstr[1] "" - -#: src/readelf.c:2351 -msgid " 0 *local* " -msgstr "" - -#: src/readelf.c:2356 -msgid " 1 *global* " -msgstr "" - -#: src/readelf.c:2412 -#, c-format -msgid "cannot get data for section %d: %s" -msgstr "" - -#: src/readelf.c:2422 -#, c-format -msgid "" -"\n" -"Histogram for bucket list length in section [%2u] '%s' (total of %d " -"bucket):\n" -" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n" -msgid_plural "" -"\n" -"Histogram for bucket list length in section [%2u] '%s' (total of %d " -"buckets):\n" -" Addr: %#0*<PRIx64> Offset: %#08<PRIx64> Link to section: [%2u] '%s'\n" -msgstr[0] "" -msgstr[1] "" - -#: src/readelf.c:2467 -#, c-format -msgid " Length Number % of total Coverage" -msgstr "" - -#: src/readelf.c:2468 -#, c-format -msgid " 0 %6<PRIu32> %5.1f%%\n" -msgstr "" - -#: src/readelf.c:2474 -#, c-format -msgid "%7d %6<PRIu32> %5.1f%% %5.1f%%\n" -msgstr "" - -#: src/readelf.c:2488 -#, c-format -msgid "" -" Average number of tests: successful lookup: %f\n" -" unsuccessful lookup: %f\n" -msgstr "" - -#: src/readelf.c:2523 -#, c-format -msgid "" -"\n" -"Library list section [%2zu] '%s' at offset %#0<PRIx64> contains %d entry:\n" -msgid_plural "" -"\n" -"Library list section [%2zu] '%s' at offset %#0<PRIx64> contains %d entries:\n" -msgstr[0] "" -msgstr[1] "" - -#: src/readelf.c:2537 -msgid "" -" Library Time Stamp Checksum Version " -"Flags" -msgstr "" - -#: src/readelf.c:2648 -#, c-format -msgid "unknown tag %hx" -msgstr "" - -#: src/readelf.c:2650 -#, c-format -msgid "unknown user tag %hx" -msgstr "" - -#: src/readelf.c:2833 -#, c-format -msgid "unknown attribute %hx" -msgstr "" - -#: src/readelf.c:2836 -#, c-format -msgid "unknown user attribute %hx" -msgstr "" - -#: src/readelf.c:2882 -#, c-format -msgid "unknown form %<PRIx64>" -msgstr "" - -#: src/readelf.c:3255 -#, c-format -msgid "" -"\n" -"DWARF section '%s' at offset %#<PRIx64>:\n" -" [ Code]\n" -msgstr "" - -#: src/readelf.c:3267 -#, c-format -msgid " *** error while reading abbreviation: %s\n" -msgstr "" - -#: src/readelf.c:3281 -#, c-format -msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n" -msgstr "" - -#: src/readelf.c:3284 -msgid "yes" -msgstr "" - -#: src/readelf.c:3284 -msgid "no" -msgstr "" - -#: src/readelf.c:3316 -#, c-format -msgid "cannot get .debug_aranges content: %s" -msgstr "" - -#: src/readelf.c:3321 -#, c-format -msgid "" -"\n" -"DWARF section '%s' at offset %#<PRIx64> contains %zu entry:\n" -msgid_plural "" -"\n" -"DWARF section '%s' at offset %#<PRIx64> contains %zu entries:\n" -msgstr[0] "" -msgstr[1] "" - -#: src/readelf.c:3351 -#, c-format -msgid " [%*zu] ???\n" -msgstr "" - -#: src/readelf.c:3353 -#, c-format -msgid "" -" [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n" -msgstr "" - -#: src/readelf.c:3387 -#, c-format -msgid "cannot get attribute code: %s" -msgstr "" - -#: src/readelf.c:3395 -#, c-format -msgid "cannot get attribute form: %s" -msgstr "" - -#: src/readelf.c:3407 -#, c-format -msgid "cannot get attribute value: %s" -msgstr "" - -#: src/readelf.c:3506 -#, c-format -msgid "" -"\n" -"DWARF section '%s' at offset %#<PRIx64>:\n" -" [Offset]\n" -msgstr "" - -#: src/readelf.c:3531 -#, c-format -msgid "" -" Compilation unit at offset %<PRIu64>:\n" -" Version: %<PRIu16>, Abbreviation section offset: %<PRIu64>, Address size: %" -"<PRIu8>, Offset size: %<PRIu8>\n" -msgstr "" - -#: src/readelf.c:3548 -#, c-format -msgid "cannot get DIE at offset %<PRIu64> in section '%s': %s" -msgstr "" - -#: src/readelf.c:3559 -#, c-format -msgid "cannot get DIE offset: %s" -msgstr "" - -#: src/readelf.c:3567 -#, c-format -msgid "cannot get tag of DIE at offset %<PRIu64> in section '%s': %s" -msgstr "" - -#: src/readelf.c:3680 -#, c-format -msgid "cannot get next DIE: %s\n" -msgstr "" - -#: src/readelf.c:3687 -#, c-format -msgid "cannot get next DIE: %s" -msgstr "" - -#: src/readelf.c:3709 src/readelf.c:4120 src/readelf.c:4155 src/readelf.c:4324 -#, c-format -msgid "" -"\n" -"DWARF section '%s' at offset %#<PRIx64>:\n" -msgstr "" - -#: src/readelf.c:3721 -#, c-format -msgid "cannot get line data section data: %s" -msgstr "" - -#: src/readelf.c:3741 -#, c-format -msgid "invalid data in section [%zu] '%s'" -msgstr "" - -#: src/readelf.c:3784 -#, c-format -msgid "" -"\n" -" Length: %<PRIu64>\n" -" DWARF version: %<PRIuFAST16>\n" -" Prologue length: %<PRIu64>\n" -" Minimum instruction length: %<PRIuFAST8>\n" -" Initial value if '%s': %<PRIuFAST8>\n" -" Line base: %<PRIdFAST8>\n" -" Line range: %<PRIuFAST8>\n" -" Opcode base: %<PRIuFAST8>\n" -"\n" -"Opcodes:\n" -msgstr "" - -#: src/readelf.c:3810 -#, c-format -msgid " [%*<PRIuFAST8>] %hhu argument\n" -msgid_plural " [%*<PRIuFAST8>] %hhu arguments\n" -msgstr[0] "" -msgstr[1] "" - -#: src/readelf.c:3818 -msgid "" -"\n" -"Directory table:" -msgstr "" - -#: src/readelf.c:3834 -msgid "" -"\n" -"File name table:\n" -" Entry Dir Time Size Name" -msgstr "" - -#: src/readelf.c:3863 -msgid "" -"\n" -"Line number statements:" -msgstr "" - -#: src/readelf.c:3923 -#, c-format -msgid " special opcode %u: address+%u = %#<PRIx64>, line%+d = %zu\n" -msgstr "" - -#: src/readelf.c:3943 -#, c-format -msgid " extended opcode %u: " -msgstr "" - -#: src/readelf.c:3948 -msgid "end of sequence" -msgstr "" - -#: src/readelf.c:3961 -#, c-format -msgid "set address to %#<PRIx64>\n" -msgstr "" - -#: src/readelf.c:3981 -#, c-format -msgid "define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n" -msgstr "" - -#: src/readelf.c:3990 -msgid "unknown opcode" -msgstr "" - -#: src/readelf.c:4002 -msgid " copy" -msgstr "" - -#: src/readelf.c:4010 -#, c-format -msgid " advance address by %u to %#<PRIx64>\n" -msgstr "" - -#: src/readelf.c:4020 -#, c-format -msgid " advance line by constant %d to %<PRId64>\n" -msgstr "" - -#: src/readelf.c:4028 -#, c-format -msgid " set file to %<PRIu64>\n" -msgstr "" - -#: src/readelf.c:4038 -#, c-format -msgid " set column to %<PRIu64>\n" -msgstr "" - -#: src/readelf.c:4045 -#, c-format -msgid " set '%s' to %<PRIuFAST8>\n" -msgstr "" - -#: src/readelf.c:4051 -msgid " set basic block flag" -msgstr "" - -#: src/readelf.c:4059 -#, c-format -msgid " advance address by constant %u to %#<PRIx64>\n" -msgstr "" - -#: src/readelf.c:4072 -#, c-format -msgid " advance address by fixed value %u to %#<PRIx64>\n" -msgstr "" - -#: src/readelf.c:4079 -msgid " set prologue end flag" -msgstr "" - -#: src/readelf.c:4084 -msgid " set epilogue begin flag" -msgstr "" - -#: src/readelf.c:4093 -#, c-format -msgid " unknown opcode with %<PRIu8> parameter:" -msgid_plural " unknown opcode with %<PRIu8> parameters:" -msgstr[0] "" -msgstr[1] "" - -#: src/readelf.c:4165 -#, c-format -msgid "cannot get macro information section data: %s" -msgstr "" - -#: src/readelf.c:4244 -#, c-format -msgid "%*s*** non-terminated string at end of section" -msgstr "" - -#: src/readelf.c:4311 -#, c-format -msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n" -msgstr "" - -#: src/readelf.c:4346 -#, c-format -msgid "" -"\n" -"DWARF section '%s' at offset %#<PRIx64>:\n" -" %*s String\n" -msgstr "" - -#: src/readelf.c:4359 -#, c-format -msgid " *** error while reading strings: %s\n" -msgstr "" - -#: src/readelf.c:4384 -#, c-format -msgid "cannot get debug context descriptor: %s" -msgstr "" - -#: src/readelf.c:4461 -#, c-format -msgid "" -"\n" -"Note segment of %<PRId64> bytes at offset %#0<PRIx64>:\n" -msgstr "" - -#: src/readelf.c:4468 -#, c-format -msgid "cannot get content of note section: %s" -msgstr "" - -#: src/readelf.c:4471 -msgid " Owner Data size Type\n" -msgstr "" - -#: src/readelf.c:4510 -#, c-format -msgid " %-13.*s %9<PRId32> %s\n" -msgstr "" - -#: src/size.c:52 -msgid "" -"Use the output format FORMAT. FORMAT can be `bsd' or `sysv'. The default " -"is `bsd'" -msgstr "" - -#: src/size.c:53 -msgid "Same as `--format=sysv'" -msgstr "" - -#: src/size.c:54 -msgid "Same as `--format=bsd'" -msgstr "" - -#: src/size.c:56 -msgid "Same as `--radix=10'" -msgstr "" - -#: src/size.c:57 -msgid "Same as `--radix=8'" -msgstr "" - -#: src/size.c:58 -msgid "Same as `--radix=16'" -msgstr "" - -#: src/size.c:59 -msgid "Similar to `--format=sysv' output but in one line" -msgstr "" - -#: src/size.c:62 -msgid "Print size and permission flags for loadable segments" -msgstr "" - -#: src/size.c:63 -msgid "Display the total sizes (bsd only)" -msgstr "" - -#: src/size.c:68 -msgid "List section sizes of FILEs (a.out by default)." -msgstr "" - -#: src/size.c:251 -#, c-format -msgid "Invalid format: %s" -msgstr "" - -#: src/size.c:262 -#, c-format -msgid "Invalid radix: %s" -msgstr "" - -#: src/size.c:336 -#, c-format -msgid "%s: file format not recognized" -msgstr "" - -#: src/size.c:407 src/strip.c:1766 -#, c-format -msgid "while closing `%s'" -msgstr "" - -#: src/size.c:447 src/size.c:589 -#, c-format -msgid " (ex %s)" -msgstr "" - -#: src/size.c:614 -msgid "(TOTALS)\n" -msgstr "" - -#: src/strip.c:58 -msgid "Place stripped output into FILE" -msgstr "" - -#: src/strip.c:59 -msgid "Extract the removed sections into FILE" -msgstr "" - -#: src/strip.c:62 -msgid "Remove all debugging symbols" -msgstr "" - -#: src/strip.c:64 -msgid "Copy modified/access timestamps to the output" -msgstr "" - -#: src/strip.c:66 -msgid "Remove .comment section" -msgstr "" - -#: src/strip.c:68 -msgid "Relax a few rules to handle slightly broken ELF files" -msgstr "" - -#: src/strip.c:73 -msgid "Discard symbols from object files." -msgstr "" - -#: src/strip.c:164 -msgid "Only one input file allowed together with '-o' and '-f'" -msgstr "" - -#: src/strip.c:262 src/strip.c:286 -#, c-format -msgid "cannot stat input file \"%s\"" -msgstr "" - -#: src/strip.c:276 -#, c-format -msgid "while opening \"%s\"" -msgstr "" - -#: src/strip.c:313 -#, c-format -msgid "%s: cannot use -o when stripping archive" -msgstr "" - -#: src/strip.c:419 src/strip.c:454 -#, c-format -msgid "cannot open `%s'" -msgstr "" - -#: src/strip.c:434 -msgid "cannot open EBL backend" -msgstr "" - -#: src/strip.c:482 src/strip.c:508 -#, c-format -msgid "cannot create new file `%s': %s" -msgstr "" - -#: src/strip.c:569 -#, c-format -msgid "illformed file `%s'" -msgstr "" - -#: src/strip.c:835 src/strip.c:944 -#, c-format -msgid "while generating output file: %s" -msgstr "" - -#: src/strip.c:884 src/strip.c:1622 -#, c-format -msgid "%s: error while creating ELF header: %s" -msgstr "" - -#: src/strip.c:893 src/strip.c:1644 -#, c-format -msgid "while writing `%s': %s" -msgstr "" - -#: src/strip.c:904 -#, c-format -msgid "while creating '%s'" -msgstr "" - -#: src/strip.c:916 -msgid "while computing checksum for debug information" -msgstr "" - -#: src/strip.c:931 -#, c-format -msgid "while preparing output for `%s'" -msgstr "" - -#: src/strip.c:985 src/strip.c:1042 -#, c-format -msgid "while create section header section: %s" -msgstr "" - -#: src/strip.c:991 -#, c-format -msgid "cannot allocate section data: %s" -msgstr "" - -#: src/strip.c:1051 -#, c-format -msgid "while create section header string table: %s" -msgstr "" - -#: src/strip.c:1630 -#, c-format -msgid "%s: error while reading the file: %s" -msgstr "" - -#: src/strip.c:1672 src/strip.c:1679 -#, c-format -msgid "error while finishing `%s': %s" -msgstr "" - -#: src/strip.c:1702 src/strip.c:1759 -#, c-format -msgid "cannot set access and modification date of \"%s\"" -msgstr "" - -#: src/ld.c:71 -msgid "Include whole archives in the output from now on." -msgstr "" - -#: src/ld.c:73 -msgid "Stop including the whole arhives in the output." -msgstr "" - -#: src/ld.c:75 src/ld.c:116 src/ld.c:124 -msgid "FILE" -msgstr "" - -#: src/ld.c:75 -msgid "Place output in FILE." -msgstr "" - -#: src/ld.c:77 -msgid "LEVEL" -msgstr "" - -#: src/ld.c:78 -msgid "Set optimization level to LEVEL." -msgstr "" - -#: src/ld.c:80 -msgid "Verbose messages." -msgstr "" - -#: src/ld.c:81 -msgid "Trace file opens." -msgstr "" - -#: src/ld.c:83 -msgid "Trade speed for less memory usage" -msgstr "" - -#: src/ld.c:87 -msgid "Object is marked to not use default search path at runtime." -msgstr "" - -#: src/ld.c:89 -msgid "Same as --whole-archive." -msgstr "" - -#: src/ld.c:90 -msgid "" -"Default rules of extracting from archive; weak references are not enough." -msgstr "" - -#: src/ld.c:93 -msgid "Weak references cause extraction from archive." -msgstr "" - -#: src/ld.c:95 -msgid "Allow multiple definitions; first is used." -msgstr "" - -#: src/ld.c:97 -msgid "Disallow/allow undefined symbols in DSOs." -msgstr "" - -#: src/ld.c:100 -msgid "Object requires immediate handling of $ORIGIN." -msgstr "" - -#: src/ld.c:102 -msgid "Relocation will not be processed lazily." -msgstr "" - -#: src/ld.c:104 -msgid "Object cannot be unloaded at runtime." -msgstr "" - -#: src/ld.c:106 -msgid "Mark object to be initialized first." -msgstr "" - -#: src/ld.c:108 -msgid "Enable/disable lazy-loading flag for following dependencies." -msgstr "" - -#: src/ld.c:110 -msgid "Mark object as not loadable with 'dlopen'." -msgstr "" - -#: src/ld.c:112 -msgid "Ignore/record dependencies on unused DSOs." -msgstr "" - -#: src/ld.c:114 -msgid "Generated DSO will be a system library." -msgstr "" - -#: src/ld.c:118 -msgid "Start a group." -msgstr "" - -#: src/ld.c:119 -msgid "End a group." -msgstr "" - -#: src/ld.c:121 -msgid "PATH" -msgstr "" - -#: src/ld.c:122 -msgid "Add PATH to list of directories files are searched in." -msgstr "" - -#: src/ld.c:124 -msgid "Use linker script in FILE." -msgstr "" - -#: src/ld.c:126 -msgid "ADDRESS" -msgstr "" - -#: src/ld.c:126 -msgid "Set entry point address." -msgstr "" - -#: src/ld.c:130 -msgid "Do not link against shared libraries." -msgstr "" - -#: src/ld.c:133 -msgid "Prefer linking against shared libraries." -msgstr "" - -#: src/ld.c:135 -msgid "Export all dynamic symbols." -msgstr "" - -#: src/ld.c:137 -msgid "Strip all symbols." -msgstr "" - -#: src/ld.c:138 -msgid "Strip debugging symbols." -msgstr "" - -#: src/ld.c:141 -msgid "Assume pagesize for the target system to be SIZE." -msgstr "" - -#: src/ld.c:146 -msgid "Set runtime DSO search path." -msgstr "" - -#: src/ld.c:148 -msgid "Set link time DSO search path." -msgstr "" - -#: src/ld.c:150 -msgid "Ignore LD_LIBRARY_PATH environment variable." -msgstr "" - -#: src/ld.c:153 -msgid "Read version information from FILE." -msgstr "" - -#: src/ld.c:155 -msgid "Set emulation to NAME." -msgstr "" - -#: src/ld.c:157 -msgid "Generate dynamic shared object." -msgstr "" - -#: src/ld.c:158 -msgid "Generate relocatable object." -msgstr "" - -#: src/ld.c:162 -msgid "Causes symbol not assigned to a version be reduced to local." -msgstr "" - -#: src/ld.c:164 -msgid "Remove unused sections." -msgstr "" - -#: src/ld.c:166 -msgid "Don't remove unused sections." -msgstr "" - -#: src/ld.c:168 -msgid "Set soname of shared object." -msgstr "" - -#: src/ld.c:169 -msgid "Set the dynamic linker name." -msgstr "" - -#: src/ld.c:173 -msgid "Add/suppress addition indentifying link-editor to .comment section" -msgstr "" - -#: src/ld.c:177 -msgid "Select to get parser debug information" -msgstr "" - -#: src/ld.c:184 -msgid "Combine object and archive files." -msgstr "" - -#: src/ld.c:187 -msgid "[FILE]..." -msgstr "" - -#: src/ld.c:319 -msgid "At least one input file needed" -msgstr "" - -#: src/ld.c:330 -msgid "error while preparing linking" -msgstr "" - -#: src/ld.c:337 -#, c-format -msgid "cannot open linker script \"%s\"" -msgstr "" - -#: src/ld.c:378 -msgid "-( without matching -)" -msgstr "" - -#: src/ld.c:523 src/ld.c:561 -msgid "only one option of -G and -r is allowed" -msgstr "" - -#: src/ld.c:545 -msgid "more than one '-m' parameter" -msgstr "" - -#: src/ld.c:555 src/ld.c:925 -#, c-format -msgid "unknown option `-%c %s'" -msgstr "" - -#: src/ld.c:597 -#, c-format -msgid "invalid page size value \"%s\": ignored" -msgstr "" - -#: src/ld.c:706 -msgid "More than one output file name given." -msgstr "" - -#: src/ld.c:723 -#, c-format -msgid "Invalid optimization level `%s'" -msgstr "" - -#: src/ld.c:764 -msgid "nested -( -) groups are not allowed" -msgstr "" - -#: src/ld.c:783 -msgid "-) without matching -(" -msgstr "" - -#: src/ld.c:954 -#, c-format -msgid "unknown option '-%c %s'" -msgstr "" - -#: src/ld.c:1058 -msgid "could not find input file to determine output file format" -msgstr "" - -#: src/ld.c:1060 -msgid "try again with an appropriate '-m' parameter" -msgstr "" - -#: src/ld.c:1352 -#, c-format -msgid "cannot read version script \"%s\"" -msgstr "" - -#: src/ld.c:1418 src/ld.c:1457 -#, c-format -msgid "duplicate definition of '%s' in linker script" -msgstr "" - -#: src/ldgeneric.c:179 src/ldgeneric.c:4464 -msgid "cannot create string table" -msgstr "" - -#: src/ldgeneric.c:224 -#, c-format -msgid "cannot load ld backend library '%s': %s" -msgstr "" - -#: src/ldgeneric.c:234 -#, c-format -msgid "cannot find init function in ld backend library '%s': %s" -msgstr "" - -#: src/ldgeneric.c:279 -#, c-format -msgid "%s listed more than once as input" -msgstr "" - -#: src/ldgeneric.c:393 -#, c-format -msgid "%s (for -l%s)\n" -msgstr "" - -#: src/ldgeneric.c:394 -#, c-format -msgid "%s (for DT_NEEDED %s)\n" -msgstr "" - -#: src/ldgeneric.c:488 -#, c-format -msgid "cannot open %s" -msgstr "" - -#: src/ldgeneric.c:510 -#, c-format -msgid "Warning: type of `%s' changed from %s in %s to %s in %s" -msgstr "" - -#: src/ldgeneric.c:523 -#, c-format -msgid "Warning: size of `%s' changed from %<PRIu64> in %s to %<PRIu64> in %s" -msgstr "" - -#: src/ldgeneric.c:609 -#, c-format -msgid "(%s+%#<PRIx64>): multiple definition of %s `%s'\n" -msgstr "" - -#: src/ldgeneric.c:639 -#, c-format -msgid "(%s+%#<PRIx64>): first defined here\n" -msgstr "" - -#: src/ldgeneric.c:758 -#, c-format -msgid "%s: cannot get section group data: %s" -msgstr "" - -#: src/ldgeneric.c:779 -#, c-format -msgid "%s: section '%s' with group flag set does not belong to any group" -msgstr "" - -#: src/ldgeneric.c:824 -#, c-format -msgid "%s: section [%2d] '%s' is in more than one section group" -msgstr "" - -#: src/ldgeneric.c:1060 src/ldgeneric.c:1252 src/ldgeneric.c:1261 -#: src/ldgeneric.c:1318 src/ldgeneric.c:1327 src/ldgeneric.c:1579 -#: src/ldgeneric.c:1831 -#, c-format -msgid "%s: invalid ELF file (%s:%d)\n" -msgstr "" - -#: src/ldgeneric.c:1153 -#, c-format -msgid "%s: only files of type ET_REL might contain section groups" -msgstr "" - -#: src/ldgeneric.c:1187 -#, c-format -msgid "%s: cannot determine signature of section group [%2zd] '%s': %s" -msgstr "" - -#: src/ldgeneric.c:1206 -#, c-format -msgid "%s: section '%s' has unknown type: %d" -msgstr "" - -#: src/ldgeneric.c:1555 -#, c-format -msgid "cannot get descriptor for ELF file (%s:%d): %s\n" -msgstr "" - -#: src/ldgeneric.c:1593 -#, c-format -msgid "cannot open \"%s\"" -msgstr "" - -#: src/ldgeneric.c:1724 -#, c-format -msgid "cannot read archive `%s': %s" -msgstr "" - -#: src/ldgeneric.c:1846 -#, c-format -msgid "file of type %s cannot be linked in\n" -msgstr "" - -#: src/ldgeneric.c:1858 -#, c-format -msgid "%s: cannot get section header string table index: %s\n" -msgstr "" - -#: src/ldgeneric.c:1887 -#, c-format -msgid "cannot use DSO '%s' when generating relocatable object file" -msgstr "" - -#: src/ldgeneric.c:1972 -#, c-format -msgid "input file '%s' ignored" -msgstr "" - -#: src/ldgeneric.c:2167 -#, c-format -msgid "undefined symbol `%s' in %s" -msgstr "" - -#: src/ldgeneric.c:2474 libasm/asm_error.c:110 -msgid "cannot create output file" -msgstr "" - -#: src/ldgeneric.c:2489 -#, c-format -msgid "cannot create ELF descriptor for output file: %s" -msgstr "" - -#: src/ldgeneric.c:2496 -#, c-format -msgid "could not create ELF header for output file: %s" -msgstr "" - -#: src/ldgeneric.c:3006 src/ldgeneric.c:3076 src/ldgeneric.c:3112 -#: src/ldgeneric.c:3799 src/ldgeneric.c:3837 src/ldgeneric.c:3869 -#: src/ldgeneric.c:4086 src/ldgeneric.c:4141 src/ldgeneric.c:4388 -#: src/ldgeneric.c:4444 src/ldgeneric.c:4886 src/ldgeneric.c:4898 -#: libasm/asm_end.c:97 libasm/asm_end.c:135 libasm/asm_end.c:151 -#: libasm/asm_end.c:279 -#, c-format -msgid "cannot create section for output file: %s" -msgstr "" - -#: src/ldgeneric.c:3226 -#, c-format -msgid "address computation expression contains variable '%s'" -msgstr "" - -#: src/ldgeneric.c:3271 -#, c-format -msgid "" -"argument '%<PRIuMAX>' of ALIGN in address computation expression is no power " -"of two" -msgstr "" - -#: src/ldgeneric.c:3454 -#, c-format -msgid "cannot find entry symbol \"%s\": defaulting to %#0*<PRIx64>" -msgstr "" - -#: src/ldgeneric.c:3460 -#, c-format -msgid "no entry symbol specified: defaulting to %#0*<PRIx64>" -msgstr "" - -#: src/ldgeneric.c:3700 src/ldgeneric.c:3721 src/ldgeneric.c:3750 -#: src/ldgeneric.c:5396 -#, c-format -msgid "cannot create symbol table for output file: %s" -msgstr "" - -#: src/ldgeneric.c:4611 src/ldgeneric.c:5138 -msgid "section index too large in dynamic symbol table" -msgstr "" - -#: src/ldgeneric.c:5031 -#, c-format -msgid "cannot create versioning section: %s" -msgstr "" - -#: src/ldgeneric.c:5104 -#, c-format -msgid "cannot create dynamic symbol table for output file: %s" -msgstr "" - -#: src/ldgeneric.c:5245 -#, c-format -msgid "cannot create hash table section for output file: %s" -msgstr "" - -#: src/ldgeneric.c:5324 -#, c-format -msgid "cannot create versioning data: %s" -msgstr "" - -#: src/ldgeneric.c:5428 src/ldgeneric.c:5441 src/ldgeneric.c:5505 -#: src/ldgeneric.c:5513 -#, c-format -msgid "cannot create section header string section: %s" -msgstr "" - -#: src/ldgeneric.c:5435 -msgid "cannot create section header string section" -msgstr "" - -#: src/ldgeneric.c:5588 -#, c-format -msgid "cannot create program header: %s" -msgstr "" - -#: src/ldgeneric.c:5596 -#, c-format -msgid "while determining file layout: %s" -msgstr "" - -#: src/ldgeneric.c:5684 -msgid "internal error: nobits section follows nobits section" -msgstr "" - -#: src/ldgeneric.c:6180 -#, c-format -msgid "cannot get header of 0th section: %s" -msgstr "" - -#: src/ldgeneric.c:6196 -#, c-format -msgid "cannot update ELF header: %s" -msgstr "" - -#: src/ldgeneric.c:6217 -msgid "linker backend didn't specify function to relocate section" -msgstr "" - -#: src/ldgeneric.c:6229 -#, c-format -msgid "while writing output file: %s" -msgstr "" - -#: src/ldgeneric.c:6234 -#, c-format -msgid "while finishing output file: %s" -msgstr "" - -#: src/ldgeneric.c:6240 -msgid "cannot stat output file" -msgstr "" - -#: src/ldgeneric.c:6246 libasm/asm_error.c:113 -msgid "cannot rename output file" -msgstr "" - -#: src/ldgeneric.c:6256 -msgid "WARNING: temporary output file overwritten before linking finished" -msgstr "" - -#: src/ldgeneric.c:6309 src/ldgeneric.c:6320 src/ldgeneric.c:6331 -#: src/ldgeneric.c:6349 src/ldgeneric.c:6362 src/ldgeneric.c:6374 -#, c-format -msgid "no machine specific '%s' implementation" -msgstr "" - -#: src/ldscript.y:162 -msgid "mode for segment invalid\n" -msgstr "" - -#: src/ldscript.y:430 -#, c-format -msgid "while reading version script '%s': %s at line %d" -msgstr "" - -#: src/ldscript.y:431 -#, c-format -msgid "while reading linker script '%s': %s at line %d" -msgstr "" - -#: src/ldscript.y:695 -#, c-format -msgid "symbol '%s' in declared both local and global for unnamed version" -msgstr "" - -#: src/ldscript.y:697 -#, c-format -msgid "symbol '%s' in declared both local and global for version '%s'" -msgstr "" - -#: src/ldscript.y:717 src/ldscript.y:724 -msgid "default visibility set as local and global" -msgstr "" - -#: src/elflint.c:53 -msgid "Be extremely strict, flag level 2 features." -msgstr "" - -#: src/elflint.c:54 -msgid "Do not print anything if successful" -msgstr "" - -#: src/elflint.c:56 -msgid "" -"Binary has been created with GNU ld and is therefore known to be broken in " -"certain ways" -msgstr "" - -#: src/elflint.c:62 -msgid "Pedantic checking of ELF files compliance with gABI/psABI spec." -msgstr "" - -#: src/elflint.c:175 -#, c-format -msgid "error while closing Elf descriptor: %s\n" -msgstr "" - -#: src/elflint.c:179 -msgid "No errors" -msgstr "" - -#: src/elflint.c:371 -#, c-format -msgid "e_ident[%d] == %d is no known class\n" -msgstr "" - -#: src/elflint.c:376 -#, c-format -msgid "e_ident[%d] == %d is no known data encoding\n" -msgstr "" - -#: src/elflint.c:380 -#, c-format -msgid "unknown ELF header version number e_ident[%d] == %d\n" -msgstr "" - -#: src/elflint.c:385 -#, c-format -msgid "unsupported OS ABI e_ident[%d] == \"%s\"\n" -msgstr "" - -#: src/elflint.c:391 -#, c-format -msgid "unsupport ABI version e_ident[%d] == %d\n" -msgstr "" - -#: src/elflint.c:396 -#, c-format -msgid "e_ident[%zu] is not zero\n" -msgstr "" - -#: src/elflint.c:401 -#, c-format -msgid "unknown object file type %d\n" -msgstr "" - -#: src/elflint.c:408 -#, c-format -msgid "unknown machine type %d\n" -msgstr "" - -#: src/elflint.c:412 -msgid "unknown object file version\n" -msgstr "" - -#: src/elflint.c:418 -msgid "invalid program header offset\n" -msgstr "" - -#: src/elflint.c:420 -msgid "executables and DSOs cannot have zero program header offset\n" -msgstr "" - -#: src/elflint.c:424 -msgid "invalid number of program header entries\n" -msgstr "" - -#: src/elflint.c:432 -msgid "invalid section header table offset\n" -msgstr "" - -#: src/elflint.c:435 -msgid "section header table must be present\n" -msgstr "" - -#: src/elflint.c:451 -msgid "invalid number of section header table entries\n" -msgstr "" - -#: src/elflint.c:470 src/elflint.c:476 -msgid "invalid section header index\n" -msgstr "" - -#: src/elflint.c:481 -#, c-format -msgid "invalid machine flags: %s\n" -msgstr "" - -#: src/elflint.c:488 src/elflint.c:505 -#, c-format -msgid "invalid ELF header size: %hd\n" -msgstr "" - -#: src/elflint.c:491 src/elflint.c:508 -#, c-format -msgid "invalid program header size: %hd\n" -msgstr "" - -#: src/elflint.c:494 src/elflint.c:511 -msgid "invalid program header position or size\n" -msgstr "" - -#: src/elflint.c:497 src/elflint.c:514 -#, c-format -msgid "invalid section header size: %hd\n" -msgstr "" - -#: src/elflint.c:500 src/elflint.c:517 -msgid "invalid section header position or size\n" -msgstr "" - -#: src/elflint.c:566 -#, c-format -msgid "" -"section [%2d] '%s': section with SHF_GROUP flag set not part of a section " -"group\n" -msgstr "" - -#: src/elflint.c:570 -#, c-format -msgid "" -"section [%2d] '%s': section group [%2zu] '%s' does not preceed group member\n" -msgstr "" - -#: src/elflint.c:595 src/elflint.c:1015 src/elflint.c:1150 src/elflint.c:1337 -#: src/elflint.c:1584 -#, c-format -msgid "section [%2d] '%s': cannot get section data\n" -msgstr "" - -#: src/elflint.c:601 src/elflint.c:1344 -#, c-format -msgid "" -"section [%2d] '%s': referenced as string table for section [%2d] '%s' but " -"type is not SHT_STRTAB\n" -msgstr "" - -#: src/elflint.c:633 -#, c-format -msgid "section [%2zu] '%s': entry size is does not match ElfXX_Sym\n" -msgstr "" - -#: src/elflint.c:642 -#, c-format -msgid "section [%2d] '%s': cannot get symbol %d: %s\n" -msgstr "" - -#: src/elflint.c:647 src/elflint.c:650 src/elflint.c:653 src/elflint.c:656 -#: src/elflint.c:659 src/elflint.c:662 -#, c-format -msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n" -msgstr "" - -#: src/elflint.c:665 -#, c-format -msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n" -msgstr "" - -#: src/elflint.c:675 -#, c-format -msgid "section [%2d] '%s': cannot get symbol %zu: %s\n" -msgstr "" - -#: src/elflint.c:682 -#, c-format -msgid "section [%2d] '%s': symbol %zu: invalid name value\n" -msgstr "" - -#: src/elflint.c:695 -#, c-format -msgid "" -"section [%2d] '%s': symbol %zu: too large section index but no extended " -"section index section\n" -msgstr "" - -#: src/elflint.c:701 -#, c-format -msgid "" -"section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in " -"st_shndx (%<PRIu32>)\n" -msgstr "" - -#: src/elflint.c:713 -#, c-format -msgid "section [%2d] '%s': symbol %zu: invalid section index\n" -msgstr "" - -#: src/elflint.c:720 -#, c-format -msgid "section [%2d] '%s': symbol %zu: unknown type\n" -msgstr "" - -#: src/elflint.c:724 -#, c-format -msgid "section [%2d] '%s': symbol %zu: unknown symbol binding\n" -msgstr "" - -#: src/elflint.c:732 -#, c-format -msgid "" -"section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n" -msgstr "" - -#: src/elflint.c:736 -#, c-format -msgid "section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n" -msgstr "" - -#: src/elflint.c:740 -#, c-format -msgid "" -"section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n" -msgstr "" - -#: src/elflint.c:755 -#, c-format -msgid "section [%2d] '%s': symbol %zu: st_value out of bounds\n" -msgstr "" - -#: src/elflint.c:760 src/elflint.c:784 src/elflint.c:827 -#, c-format -msgid "" -"section [%2d] '%s': symbol %zu does not fit completely in referenced section " -"[%2d] '%s'\n" -msgstr "" - -#: src/elflint.c:768 -#, c-format -msgid "" -"section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have " -"SHF_TLS flag set\n" -msgstr "" - -#: src/elflint.c:778 src/elflint.c:820 -#, c-format -msgid "" -"section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section " -"[%2d] '%s'\n" -msgstr "" - -#: src/elflint.c:805 -#, c-format -msgid "" -"section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n" -msgstr "" - -#: src/elflint.c:813 -#, c-format -msgid "" -"section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] '%" -"s'\n" -msgstr "" - -#: src/elflint.c:840 -#, c-format -msgid "" -"section [%2d] '%s': symbol %zu: local symbol outside range described in " -"sh_info\n" -msgstr "" - -#: src/elflint.c:847 -#, c-format -msgid "" -"section [%2d] '%s': symbol %zu: non-local symbol outside range described in " -"sh_info\n" -msgstr "" - -#: src/elflint.c:854 -#, c-format -msgid "section [%2d] '%s': symbol %zu: non-local section symbol\n" -msgstr "" - -#: src/elflint.c:883 -#, c-format -msgid "" -"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not " -"match .got section address %#<PRIx64>\n" -msgstr "" - -#: src/elflint.c:890 -#, c-format -msgid "" -"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not " -"match .got section size %<PRIu64>\n" -msgstr "" - -#: src/elflint.c:901 -#, c-format -msgid "" -"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got " -"section\n" -msgstr "" - -#: src/elflint.c:920 -#, c-format -msgid "" -"section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic " -"segment address %#<PRIx64>\n" -msgstr "" - -#: src/elflint.c:927 -#, c-format -msgid "" -"section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic " -"segment size %<PRIu64>\n" -msgstr "" - -#: src/elflint.c:980 -#, c-format -msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n" -msgstr "" - -#: src/elflint.c:1022 src/elflint.c:1157 -#, c-format -msgid "section [%2d] '%s': invalid destination section index\n" -msgstr "" - -#: src/elflint.c:1035 src/elflint.c:1170 -#, c-format -msgid "section [%2d] '%s': invalid destination section type\n" -msgstr "" - -#: src/elflint.c:1043 src/elflint.c:1178 -#, c-format -msgid "section [%2d] '%s': sh_info should be zero\n" -msgstr "" - -#: src/elflint.c:1050 src/elflint.c:1185 -#, c-format -msgid "section [%2d] '%s': no relocations for merge-able sections possible\n" -msgstr "" - -#: src/elflint.c:1057 -#, c-format -msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n" -msgstr "" - -#: src/elflint.c:1074 src/elflint.c:1209 -#, c-format -msgid "section [%2d] '%s': cannot get relocation %zu: %s\n" -msgstr "" - -#: src/elflint.c:1081 src/elflint.c:1216 -#, c-format -msgid "section [%2d] '%s': relocation %zu: invalid type\n" -msgstr "" - -#: src/elflint.c:1084 src/elflint.c:1219 -#, c-format -msgid "" -"section [%2d] '%s': relocation %zu: relocation type invalid for the file " -"type\n" -msgstr "" - -#: src/elflint.c:1092 src/elflint.c:1227 -#, c-format -msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n" -msgstr "" - -#: src/elflint.c:1107 src/elflint.c:1242 -#, c-format -msgid "" -"section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can " -"be used with %s\n" -msgstr "" - -#: src/elflint.c:1122 src/elflint.c:1258 -#, c-format -msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n" -msgstr "" - -#: src/elflint.c:1192 -#, c-format -msgid "section [%2d] '%s': section entry size does not match ElfXX_Rel\n" -msgstr "" - -#: src/elflint.c:1328 -msgid "more than one dynamic section present\n" -msgstr "" - -#: src/elflint.c:1350 -#, c-format -msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n" -msgstr "" - -#: src/elflint.c:1355 src/elflint.c:1517 -#, c-format -msgid "section [%2d] '%s': sh_info not zero\n" -msgstr "" - -#: src/elflint.c:1367 -#, c-format -msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n" -msgstr "" - -#: src/elflint.c:1375 -#, c-format -msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n" -msgstr "" - -#: src/elflint.c:1382 -#, c-format -msgid "section [%2d] '%s': entry %zu: unknown tag\n" -msgstr "" - -#: src/elflint.c:1393 -#, c-format -msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n" -msgstr "" - -#: src/elflint.c:1403 -#, c-format -msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n" -msgstr "" - -#: src/elflint.c:1415 -#, c-format -msgid "" -"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n" -msgstr "" - -#: src/elflint.c:1440 -#, c-format -msgid "section [%2d] '%s': contains %s entry but not %s\n" -msgstr "" - -#: src/elflint.c:1452 -#, c-format -msgid "section [%2d] '%s': mandatory tag %s not present\n" -msgstr "" - -#: src/elflint.c:1462 src/elflint.c:1469 -#, c-format -msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n" -msgstr "" - -#: src/elflint.c:1497 -#, c-format -msgid "" -"section [%2d] '%s': extended section index section not for symbol table\n" -msgstr "" - -#: src/elflint.c:1502 -msgid "cannot get data for symbol section\n" -msgstr "" - -#: src/elflint.c:1505 src/elflint.c:1596 -#, c-format -msgid "section [%2d] '%s': entry size does not match Elf32_Word\n" -msgstr "" - -#: src/elflint.c:1512 -#, c-format -msgid "section [%2d] '%s': extended index table too small for symbol table\n" -msgstr "" - -#: src/elflint.c:1529 -#, c-format -msgid "" -"section [%2d] '%s': extended section index in section [%2zu] '%s' refers to " -"same symbol table\n" -msgstr "" - -#: src/elflint.c:1540 -msgid "symbol 0 should have zero extended section index\n" -msgstr "" - -#: src/elflint.c:1552 -#, c-format -msgid "cannot get data for symbol %zu\n" -msgstr "" - -#: src/elflint.c:1557 -#, c-format -msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n" -msgstr "" - -#: src/elflint.c:1591 -#, c-format -msgid "section [%2d] '%s': hash table not for dynamic symbol table\n" -msgstr "" - -#: src/elflint.c:1601 -#, c-format -msgid "section [%2d] '%s': not marked to be allocated\n" -msgstr "" - -#: src/elflint.c:1606 -#, c-format -msgid "" -"section [%2d] '%s': hash table has not even room for nbucket and nchain\n" -msgstr "" - -#: src/elflint.c:1616 -#, c-format -msgid "" -"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n" -msgstr "" - -#: src/elflint.c:1627 -#, c-format -msgid "section [%2d] '%s': chain array not large enough\n" -msgstr "" - -#: src/elflint.c:1632 -#, c-format -msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n" -msgstr "" - -#: src/elflint.c:1638 -#, c-format -msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n" -msgstr "" - -#: src/elflint.c:1650 -#, c-format -msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n" -msgstr "" - -#: src/elflint.c:1670 -#, c-format -msgid "" -"section [%2d] '%s': section groups only allowed in relocatable object files\n" -msgstr "" - -#: src/elflint.c:1681 -#, c-format -msgid "section [%2d] '%s': cannot get symbol table: %s\n" -msgstr "" - -#: src/elflint.c:1686 -#, c-format -msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n" -msgstr "" - -#: src/elflint.c:1692 -#, c-format -msgid "section [%2d] '%s': invalid symbol index in sh_info\n" -msgstr "" - -#: src/elflint.c:1697 -#, c-format -msgid "section [%2d] '%s': sh_flags not zero\n" -msgstr "" - -#: src/elflint.c:1702 -#, c-format -msgid "section [%2d] '%s': sh_flags not set correctly\n" -msgstr "" - -#: src/elflint.c:1708 -#, c-format -msgid "section [%2d] '%s': cannot get data: %s\n" -msgstr "" - -#: src/elflint.c:1717 -#, c-format -msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n" -msgstr "" - -#: src/elflint.c:1722 -#, c-format -msgid "section [%2d] '%s': section group without flags word\n" -msgstr "" - -#: src/elflint.c:1728 -#, c-format -msgid "section [%2d] '%s': section group without member\n" -msgstr "" - -#: src/elflint.c:1732 -#, c-format -msgid "section [%2d] '%s': section group with only one member\n" -msgstr "" - -#: src/elflint.c:1743 -#, c-format -msgid "section [%2d] '%s': unknown section group flags\n" -msgstr "" - -#: src/elflint.c:1755 -#, c-format -msgid "section [%2d] '%s': section index %Zu out of range\n" -msgstr "" - -#: src/elflint.c:1766 -#, c-format -msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n" -msgstr "" - -#: src/elflint.c:1773 -#, c-format -msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n" -msgstr "" - -#: src/elflint.c:1779 -#, c-format -msgid "" -"section [%2d] '%s': element %Zu references section [%2d] '%s' without " -"SHF_GROUP flag set\n" -msgstr "" - -#: src/elflint.c:1786 -#, c-format -msgid "section [%2d] '%s' is contained in more than one section group\n" -msgstr "" - -#: src/elflint.c:1911 -#, c-format -msgid "" -"section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no " -"dynamic symbol table\n" -msgstr "" - -#: src/elflint.c:1920 -#, c-format -msgid "" -"section [%2d] '%s' has different number of entries than symbol table [%2d] '%" -"s'\n" -msgstr "" - -#: src/elflint.c:1952 -msgid "cannot get section header of zeroth section\n" -msgstr "" - -#: src/elflint.c:1956 -msgid "zeroth section has nonzero name\n" -msgstr "" - -#: src/elflint.c:1958 -msgid "zeroth section has nonzero type\n" -msgstr "" - -#: src/elflint.c:1960 -msgid "zeroth section has nonzero flags\n" -msgstr "" - -#: src/elflint.c:1962 -msgid "zeroth section has nonzero address\n" -msgstr "" - -#: src/elflint.c:1964 -msgid "zeroth section has nonzero offset\n" -msgstr "" - -#: src/elflint.c:1966 -msgid "zeroth section has nonzero info field\n" -msgstr "" - -#: src/elflint.c:1968 -msgid "zeroth section has nonzero align value\n" -msgstr "" - -#: src/elflint.c:1970 -msgid "zeroth section has nonzero entry size value\n" -msgstr "" - -#: src/elflint.c:1973 -msgid "" -"zeroth section has nonzero size value while ELF header has nonzero shnum " -"value\n" -msgstr "" - -#: src/elflint.c:1977 -msgid "" -"zeroth section has nonzero link value while ELF header does not signal " -"overflow in shstrndx\n" -msgstr "" - -#: src/elflint.c:1989 -#, c-format -msgid "cannot get section header for section [%2zu] '%s': %s\n" -msgstr "" - -#: src/elflint.c:1998 -#, c-format -msgid "section [%2zu]: invalid name\n" -msgstr "" - -#: src/elflint.c:2013 -#, c-format -msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n" -msgstr "" - -#: src/elflint.c:2027 -#, c-format -msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n" -msgstr "" - -#: src/elflint.c:2044 -#, c-format -msgid "" -"section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n" -msgstr "" - -#: src/elflint.c:2062 -#, c-format -msgid "section [%2zu] '%s' present in object file\n" -msgstr "" - -#: src/elflint.c:2068 src/elflint.c:2100 -#, c-format -msgid "" -"section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n" -msgstr "" - -#: src/elflint.c:2073 src/elflint.c:2105 -#, c-format -msgid "" -"section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable " -"segments\n" -msgstr "" - -#: src/elflint.c:2081 -#, c-format -msgid "" -"section [%2zu] '%s' is extension section index table in non-object file\n" -msgstr "" - -#: src/elflint.c:2116 -#, c-format -msgid "section [%2zu] '%s': size not multiple of entry size\n" -msgstr "" - -#: src/elflint.c:2121 -msgid "cannot get section header\n" -msgstr "" - -#: src/elflint.c:2129 -#, c-format -msgid "unsupported section type %d\n" -msgstr "" - -#: src/elflint.c:2135 -#, c-format -msgid "section [%2zu] '%s' contain unknown flag(s) %d\n" -msgstr "" - -#: src/elflint.c:2142 -#, c-format -msgid "section [%2zu] '%s': thread-local data sections address not zero\n" -msgstr "" - -#: src/elflint.c:2150 -#, c-format -msgid "section [%2zu] '%s': invalid section reference in link value\n" -msgstr "" - -#: src/elflint.c:2155 -#, c-format -msgid "section [%2zu] '%s': invalid section reference in info value\n" -msgstr "" - -#: src/elflint.c:2162 -#, c-format -msgid "section [%2zu] '%s': strings flag set without merge flag\n" -msgstr "" - -#: src/elflint.c:2167 -#, c-format -msgid "section [%2zu] '%s': merge flag set but entry size is zero\n" -msgstr "" - -#: src/elflint.c:2194 -#, c-format -msgid "" -"section [%2zu] '%s' not fully contained in segment of program header entry %" -"d\n" -msgstr "" - -#: src/elflint.c:2201 -#, c-format -msgid "" -"section [%2zu] '%s' has type NOBITS but is read from the file in segment of " -"program header entry %d\n" -msgstr "" - -#: src/elflint.c:2208 -#, c-format -msgid "" -"section [%2zu] '%s' has not type NOBITS but is not read from the file in " -"segment of program header entry %d\n" -msgstr "" - -#: src/elflint.c:2217 -#, c-format -msgid "" -"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n" -msgstr "" - -#: src/elflint.c:2223 -#, c-format -msgid "" -"section [%2zu] '%s': ELF header says this is the section header string table " -"but type is not SHT_TYPE\n" -msgstr "" - -#: src/elflint.c:2273 -msgid "INTERP program header entry but no .interp section\n" -msgstr "" - -#: src/elflint.c:2284 -#, c-format -msgid "phdr[%d]: no note entries defined for the type of file\n" -msgstr "" - -#: src/elflint.c:2367 -#, c-format -msgid "phdr[%d]: note entries probably in form of a 32-bit ELF file\n" -msgstr "" - -#: src/elflint.c:2370 -#, c-format -msgid "phdr[%d]: extra %zu bytes after last note\n" -msgstr "" - -#: src/elflint.c:2399 -#, c-format -msgid "phdr[%d]: unknown core file note type %<PRIu64> at offset %<PRIu64>\n" -msgstr "" - -#: src/elflint.c:2407 -#, c-format -msgid "phdr[%d]: unknown object file note type %<PRIu64> at offset %<PRIu64>\n" -msgstr "" - -#: src/elflint.c:2429 -msgid "" -"only executables, shared objects, and core files can have program headers\n" -msgstr "" - -#: src/elflint.c:2444 -#, c-format -msgid "cannot get program header entry %d: %s\n" -msgstr "" - -#: src/elflint.c:2451 -#, c-format -msgid "program header entry %d: unknown program header entry type\n" -msgstr "" - -#: src/elflint.c:2462 -msgid "more than one INTERP entry in program header\n" -msgstr "" - -#: src/elflint.c:2470 -msgid "more than one TLS entry in program header\n" -msgstr "" - -#: src/elflint.c:2476 -msgid "static executable cannot have dynamic sections\n" -msgstr "" - -#: src/elflint.c:2480 -msgid "more than one GNU_RELRO entry in program header\n" -msgstr "" - -#: src/elflint.c:2501 -msgid "loadable segment GNU_RELRO applies to is not writable\n" -msgstr "" - -#: src/elflint.c:2504 -msgid "loadable segment GNU_RELRO applies to is executable\n" -msgstr "" - -#: src/elflint.c:2511 -msgid "GNU_RELRO segment not contained in a loaded segment\n" -msgstr "" - -#: src/elflint.c:2517 -#, c-format -msgid "program header entry %d: file size greater than memory size\n" -msgstr "" - -#: src/elflint.c:2524 -#, c-format -msgid "program header entry %d: alignment not a power of 2\n" -msgstr "" - -#: src/elflint.c:2527 -#, c-format -msgid "" -"program header entry %d: file offset and virtual address not module of " -"alignment\n" -msgstr "" - -#: src/elflint.c:2557 -#, c-format -msgid "cannot read ELF header: %s\n" -msgstr "" - -#: libasm/asm_end.c:215 -#, c-format -msgid "cannot create extended section index table: %s" -msgstr "" - -#: libasm/asm_end.c:316 -#, c-format -msgid "cannot create section group for output file: %s" -msgstr "" - -#: libasm/asm_error.c:108 libdw/dwarf_error.c:74 -msgid "no error" -msgstr "" - -#: libasm/asm_error.c:109 libdw/dwarf_error.c:83 -msgid "out of memory" -msgstr "" - -#: libasm/asm_error.c:111 -msgid "invalid parameter" -msgstr "" - -#: libasm/asm_error.c:112 -msgid "cannot change mode of output file" -msgstr "" - -#: libasm/asm_error.c:114 -msgid "duplicate symbol" -msgstr "" - -#: libasm/asm_error.c:115 -msgid "invalid section type for operation" -msgstr "" - -#: libasm/asm_error.c:149 -msgid "Unknown error" -msgstr "" - -#: libdw/dwarf_error.c:75 -msgid "unknown error" -msgstr "" - -#: libdw/dwarf_error.c:76 -msgid "invalid access" -msgstr "" - -#: libdw/dwarf_error.c:77 -msgid "no regular file" -msgstr "" - -#: libdw/dwarf_error.c:78 -msgid "I/O error" -msgstr "" - -#: libdw/dwarf_error.c:79 -msgid "invalid ELF file" -msgstr "" - -#: libdw/dwarf_error.c:80 -msgid "no DWARF information" -msgstr "" - -#: libdw/dwarf_error.c:81 -msgid "no ELF file" -msgstr "" - -#: libdw/dwarf_error.c:82 -msgid "cannot get ELF header" -msgstr "" - -#: libdw/dwarf_error.c:84 -msgid "not implemented" -msgstr "" - -#: libdw/dwarf_error.c:85 -msgid "invalid command" -msgstr "" - -#: libdw/dwarf_error.c:86 -msgid "invalid version" -msgstr "" - -#: libdw/dwarf_error.c:87 -msgid "invalid file" -msgstr "" - -#: libdw/dwarf_error.c:88 -msgid "no entries found" -msgstr "" - -#: libdw/dwarf_error.c:89 -msgid "invalid DWARF" -msgstr "" - -#: libdw/dwarf_error.c:90 -msgid "no string data" -msgstr "" - -#: libdw/dwarf_error.c:91 -msgid "no address value" -msgstr "" - -#: libdw/dwarf_error.c:92 -msgid "no constant value" -msgstr "" - -#: libdw/dwarf_error.c:93 -msgid "no reference value" -msgstr "" - -#: libdw/dwarf_error.c:94 -msgid "invalid reference value" -msgstr "" - -#: libdw/dwarf_error.c:95 -msgid ".debug_line section missing" -msgstr "" - -#: libdw/dwarf_error.c:96 -msgid "invalid .debug_line section" -msgstr "" - -#: libdw/dwarf_error.c:97 -msgid "debug information too big" -msgstr "" - -#: libdw/dwarf_error.c:98 -msgid "invalid DWARF version" -msgstr "" - -#: libdw/dwarf_error.c:99 -msgid "invalid directory index" -msgstr "" - -#: libdw/dwarf_error.c:100 -msgid "address out of range" -msgstr "" - -#: libdw/dwarf_error.c:101 -msgid "no location list value" -msgstr "" - -#: libdw/dwarf_error.c:102 -msgid "no block data" -msgstr "" - -#: libdw/dwarf_error.c:103 -msgid "invalid line index" -msgstr "" - -#: libdw/dwarf_error.c:104 -msgid "invalid address range index" -msgstr "" - -#: libdw/dwarf_error.c:105 -msgid "no matching address range" -msgstr "" - -#: libdw/dwarf_error.c:106 -msgid "no flag value" -msgstr "" diff --git a/po/insert-header.sin b/po/insert-header.sin deleted file mode 100644 index b26de01f..00000000 --- a/po/insert-header.sin +++ /dev/null @@ -1,23 +0,0 @@ -# Sed script that inserts the file called HEADER before the header entry. -# -# At each occurrence of a line starting with "msgid ", we execute the following -# commands. At the first occurrence, insert the file. At the following -# occurrences, do nothing. The distinction between the first and the following -# occurrences is achieved by looking at the hold space. -/^msgid /{ -x -# Test if the hold space is empty. -s/m/m/ -ta -# Yes it was empty. First occurrence. Read the file. -r HEADER -# Output the file's contents by reading the next line. But don't lose the -# current line while doing this. -g -N -bb -:a -# The hold space was nonempty. Following occurrences. Do nothing. -x -:b -} diff --git a/po/quot.sed b/po/quot.sed deleted file mode 100644 index 0122c463..00000000 --- a/po/quot.sed +++ /dev/null @@ -1,6 +0,0 @@ -s/"\([^"]*\)"/“\1”/g -s/`\([^`']*\)'/‘\1’/g -s/ '\([^`']*\)' / ‘\1’ /g -s/ '\([^`']*\)'$/ ‘\1’/g -s/^'\([^`']*\)' /‘\1’ /g -s/“”/""/g diff --git a/splint.rc b/splint.rc deleted file mode 100644 index e0461c41..00000000 --- a/splint.rc +++ /dev/null @@ -1 +0,0 @@ -+posixlib diff --git a/src/ChangeLog b/src/ChangeLog deleted file mode 100644 index e5b44049..00000000 --- a/src/ChangeLog +++ /dev/null @@ -1,188 +0,0 @@ -2004-09-25 Ulrich Drepper <drepper@redhat.com> - - * readelf.c: Make compile with gcc 4.0. - * strip.c: Likewise. - -2004-08-16 Ulrich Drepper <drepper@redhat.com> - - * strip.c (handle_elf): Rewrite dynamic memory handling to use of - allocate to work around gcc 3.4 bug. - -2004-01-25 Ulrich Drepper <drepper@redhat.com> - - * ldlex.l (invalid_char): Better error message. - -2004-01-23 Ulrich Drepper <drepper@redhat.com> - - * readelf.c: Print SHT_GNU_LIBLIST sections. - - * none_ld.c: New file. - -2004-01-21 Ulrich Drepper <drepper@redhat.com> - - * Makefile.am: Enable building of machine specific linker. - -2004-01-20 Ulrich Drepper <drepper@redhat.com> - - * Makefile.am: Support building with mudflap. - - * i386_ld.c: Fix warnings gcc 3.4 spits out. - * ldgeneric.c: Likewise. - * ldscript.y: Likewise. - * readelf.c: Likewise. - * strip.c: Likewise. - - * readelf.c (print_debug_line_section): Determine address size - correctly. - -2004-01-19 Ulrich Drepper <drepper@redhat.com> - - * readelf.c (print_phdr): Show which sections are covered by the - PT_GNU_RELRO entry. - - * elflint.c (check_program_header): Check PT_GNU_RELRO entry. - - * readelf.c (print_debug_macinfo_section): Implement. - -2004-01-18 Ulrich Drepper <drepper@redhat.com> - - * readelf.c (print_debug_line_section): Implement. - -2004-01-17 Ulrich Drepper <drepper@redhat.com> - - * src/elflint.c: Use PACKAGE_NAME instead of PACKAGE. - * src/ld.c: Likewise. - * src/nm.c: Likewise. - * src/readelf.c: Likewise. - * src/size.c: Likewise. - * src/strip.c: Likewise. - - * strip.c: Add a few more unlikely. Reduce scope of some variables. - - * Makefile.am: Support building with mudflap. - -2004-01-16 Ulrich Drepper <drepper@redhat.com> - - * readelf.c (print_debug_info_section): Free dies memory. - - * readelf.c: Print .debug_info section content. - -2004-01-13 Ulrich Drepper <drepper@redhat.com> - - * readelf.c (print_shdr): Add support for SHF_ORDERED and SHF_EXCLUDE. - -2004-01-12 Ulrich Drepper <drepper@redhat.com> - - * readelf.c (print_debug_aranges): Implement using libdw. - -2004-01-11 Ulrich Drepper <drepper@redhat.com> - - * nm.c: Adjust for Dwarf_Files type and dwarf_lineno interface change. - - * readelf.c: Use libdw instead of libdwarf. Not all of the old - behavior is available yet. - * Makefile.am: Link readelf with libdw. Remove libdwarf include path. - -2004-01-09 Ulrich Drepper <drepper@redhat.com> - - * nm.c (get_local_names): Adjust call to dwarf_nextcu. - - * nm.c: Implement getting information about local variables. - -2004-01-07 Ulrich Drepper <drepper@redhat.com> - - * nm.c: Read also debug information for local symbols. - -2004-01-05 Ulrich Drepper <drepper@redhat.com> - - * nm.c: Shuffle dwarf handling code around so the maximum column - width can be computed ahead of printing. Avoid collection symbols - which are not printed anyway. - - * nm.c: Rewrite dwarf handling to use libdw. - * Makefile.am (AM_CFLAGS): Add -std parameter. - (INCLUDES): Find header in libdw subdir. - (nm_LDADD): Replace libdwarf with libdw. - - * elflint.c: Update copyright year. - * readelf.c: Likewise. - * size.c: Likewise. - * strip.c: Likewise. - * nm.c: Likewise. - -2003-12-31 Ulrich Drepper <drepper@redhat.com> - - * strip.c (process_file): Close file before returning. - -2003-11-19 Ulrich Drepper <drepper@redhat.com> - - * readelf.c (handle_dynamic): Make column for tag name wider. - -2003-09-29 Ulrich Drepper <drepper@redhat.com> - - * readelf.c (handle_dynamic): Always terminate tag name with a space. - -2003-09-25 Ulrich Drepper <drepper@redhat.com> - - * strip.c (process_file): Don't mmap the input file, we modify the - data structures and don't want the change end up on disk. - -2003-09-23 Jakub Jelinek <jakub@redhat.com> - - * unaligned.h (union u_2ubyte_unaligned, - union u_4ubyte_unaligned, union u_8ubyte_unaligned): Add - packed attribute. - (add_2ubyte_unaligned, add_4ubyte_unaligned, - add_8ubyte_unaligned): Avoid nesting bswap_NN macros. - Read/store value through _ptr->u instead of *_ptr. - -2003-09-22 Ulrich Drepper <drepper@redhat.com> - - * size.c (show_sysv): Change type of maxlen to int. - - * strip.c (handle_elf): Handle the 64-bit archs which is 64-bit - buckets. - - * i386_ld.c: Many many fixes and extensions. - * ld.c: Likewise. - * ldgeneric.c: Likewise. - -2003-08-16 Ulrich Drepper <drepper@redhat.com> - - * ldgeneric.c (check_definition): Don't add symbol on dso_list if - the reference is from another DSO. - -2003-08-15 Ulrich Drepper <drepper@redhat.com> - - * ldgeneric.c (find_entry_point): It is no fatal error if no entry - point is found when creating a DSO. - -2003-08-14 Ulrich Drepper <drepper@redhat.com> - - * ld.c (main): Always call FLAG_UNRESOLVED. - * ldgeneric.c (ld_generic_flag_unresolved): Only complain about - undefined symbols if not creating DSO or ld_state.nodefs is not set. - -2003-08-13 Ulrich Drepper <drepper@redhat.com> - - * Makefile.in: Depend on libebl.a, not libebl.so. - - * ld.c (main): Mark stream for linker script as locked by caller. - (read_version_script): Likewise. - * ldlex.c: Define fread and fwrite to _unlocked variant. - - * i386_ld.c (elf_i386_finalize_plt): Replace #ifdefs with uses of - target_bswap_32. - * unaligned.h: Define target_bswap_16, target_bswap_32, and - target_bswap_64. - (store_2ubyte_unaligned, store_4ubyte_unaligned, - store_8ubyte_unaligned): Define using new macros. - -2003-08-12 Ulrich Drepper <drepper@redhat.com> - - * i386_ld.c (elf_i386_finalize_plt): Use packed structs to access - possibly unaligned memory. Support use of big endian machines. - -2003-08-11 Ulrich Drepper <drepper@redhat.com> - - * Moved to CVS archive. diff --git a/src/Makefile b/src/Makefile deleted file mode 100644 index f147eee2..00000000 --- a/src/Makefile +++ /dev/null @@ -1,638 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# src/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - - - -SOURCES = $(libld_elf_a_SOURCES) $(libld_elf_i386_pic_a_SOURCES) elflint.c $(ld_SOURCES) $(libld_elf_i386_so_SOURCES) nm.c readelf.c size.c strip.c - -srcdir = . -top_srcdir = .. - -pkgdatadir = $(datadir)/elfutils -pkglibdir = $(libdir)/elfutils -pkgincludedir = $(includedir)/elfutils -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = /usr/bin/install -c -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = i686-pc-linux-gnu -host_triplet = i686-pc-linux-gnu -bin_PROGRAMS = readelf$(EXEEXT) nm$(EXEEXT) size$(EXEEXT) \ - strip$(EXEEXT) ld$(EXEEXT) elflint$(EXEEXT) -noinst_PROGRAMS = $(am__EXEEXT_1) -#am__append_1 = libld_elf.a -subdir = src -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in ChangeLog ldlex.c ldscript.c ylwrap -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -LIBRARIES = $(noinst_LIBRARIES) -AR = ar -ARFLAGS = cru -libld_elf_a_AR = $(AR) $(ARFLAGS) -libld_elf_a_LIBADD = -am_libld_elf_a_OBJECTS = $(base_cpu)_ld.$(OBJEXT) -libld_elf_a_OBJECTS = $(am_libld_elf_a_OBJECTS) -libld_elf_i386_pic_a_AR = $(AR) $(ARFLAGS) -libld_elf_i386_pic_a_LIBADD = -libld_elf_i386_pic_a_OBJECTS = $(am_libld_elf_i386_pic_a_OBJECTS) -am__installdirs = "$(DESTDIR)$(bindir)" -binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) -am__EXEEXT_1 = libld_elf_i386.so$(EXEEXT) -PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) -elflint_SOURCES = elflint.c -elflint_OBJECTS = elflint.$(OBJEXT) -am__DEPENDENCIES_1 = ../libebl/libebl.a -am__DEPENDENCIES_2 = ../libelf/libelf.so -#am__DEPENDENCIES_2 = ../libelf/libelf.a -am__DEPENDENCIES_3 = ../lib/libeu.a -elflint_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \ - $(am__DEPENDENCIES_3) -am_ld_OBJECTS = ld.$(OBJEXT) ldgeneric.$(OBJEXT) ldlex.$(OBJEXT) \ - ldscript.$(OBJEXT) symbolhash.$(OBJEXT) sectionhash.$(OBJEXT) \ - versionhash.$(OBJEXT) -ld_OBJECTS = $(am_ld_OBJECTS) -#am__DEPENDENCIES_4 = libld_elf.a -ld_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \ - $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_4) -am_libld_elf_i386_so_OBJECTS = -libld_elf_i386_so_OBJECTS = $(am_libld_elf_i386_so_OBJECTS) -libld_elf_i386_so_LDADD = $(LDADD) -nm_SOURCES = nm.c -nm_OBJECTS = nm.$(OBJEXT) -am__DEPENDENCIES_5 = ../libdw/libdw.so -#am__DEPENDENCIES_5 = ../libdw/libdw.a -nm_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) -readelf_SOURCES = readelf.c -readelf_OBJECTS = readelf.$(OBJEXT) -readelf_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) -size_SOURCES = size.c -size_OBJECTS = size.$(OBJEXT) -size_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) -strip_SOURCES = strip.c -strip_OBJECTS = strip.$(OBJEXT) -strip_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \ - $(am__DEPENDENCIES_3) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS) -YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS) -SOURCES = $(libld_elf_a_SOURCES) $(libld_elf_i386_pic_a_SOURCES) \ - elflint.c $(ld_SOURCES) $(libld_elf_i386_so_SOURCES) nm.c \ - readelf.c size.c strip.c -DIST_SOURCES = $(libld_elf_a_SOURCES) $(libld_elf_i386_pic_a_SOURCES) \ - elflint.c $(ld_SOURCES) $(libld_elf_i386_so_SOURCES) nm.c \ - readelf.c size.c strip.c -HEADERS = $(noinst_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run aclocal-1.9 -AMDEP_FALSE = # -AMDEP_TRUE = -AMTAR = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run tar -AUTOCONF = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoconf -AUTOHEADER = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoheader -AUTOMAKE = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run automake-1.9 -AWK = gawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -CPP = gcc -E -CPPFLAGS = -CYGPATH_W = echo -DATADIRNAME = ${prefix}/share -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H $(YYDEBUG) \ - -DSRCDIR=\"$(shell cd $(srcdir);pwd)\" -DOBJDIR=\"$(shell pwd)\" - -DEPDIR = .deps -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = grep -E -EXEEXT = -GMSGFMT = /usr/bin/msgfmt -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s -INTLLIBS = -LDFLAGS = -LEX = flex -LEXLIB = -lfl -LEX_OUTPUT_ROOT = lex.yy -LIBICONV = -liconv -LIBINTL = -LIBOBJS = -LIBS = -LOCALEDIR = ${prefix}/share -LTLIBICONV = -liconv -LTLIBINTL = -LTLIBOBJS = -MAKEINFO = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run makeinfo -MKINSTALLDIRS = config/mkinstalldirs -MSGFMT = /usr/bin/msgfmt -MSGMERGE = /usr/bin/msgmerge -MUDFLAP_FALSE = -MUDFLAP_TRUE = # -NATIVE_LD_FALSE = -NATIVE_LD_TRUE = # -OBJEXT = o -PACKAGE = elfutils -PACKAGE_BUGREPORT = http://bugzilla.redhat.com/bugzilla/ -PACKAGE_NAME = Red Hat elfutils -PACKAGE_STRING = Red Hat elfutils 0.97 -PACKAGE_TARNAME = elfutils -PACKAGE_VERSION = 0.97 -PATH_SEPARATOR = : -POSUB = po -RANLIB = ranlib -SET_MAKE = -SHELL = /bin/sh -STRIP = -USE_NLS = yes -VERSION = 0.97 -XGETTEXT = /usr/bin/xgettext -YACC = bison -y -d -ac_ct_CC = gcc -ac_ct_RANLIB = ranlib -ac_ct_STRIP = -am__fastdepCC_FALSE = # -am__fastdepCC_TRUE = -am__include = include -am__leading_dot = . -am__quote = -am__tar = ${AMTAR} chof - "$$tardir" -am__untar = ${AMTAR} xf - -base_cpu = none -bindir = ${exec_prefix}/bin -build = i686-pc-linux-gnu -build_alias = -build_cpu = i686 -build_os = linux-gnu -build_vendor = pc -datadir = ${prefix}/share -exec_prefix = ${prefix} -host = i686-pc-linux-gnu -host_alias = -host_cpu = i686 -host_os = linux-gnu -host_vendor = pc -includedir = ${prefix}/include -infodir = ${prefix}/info -install_sh = /work/elfutils/stock/elfutils-0.97/config/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localstatedir = ${prefix}/var -mandir = ${prefix}/man -mkdir_p = mkdir -p -- -oldincludedir = /usr/include -prefix = /work/elfutils/google/linux-install-elfutils-0.97/ -program_transform_name = s,x,x, -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -sysconfdir = ${prefix}/etc -target_alias = -AM_CFLAGS = -Wall -Wshadow -std=gnu99 \ - $(if $($(*F)_no_Werror),,-Werror) $(native_ld_cflags) - -#AM_CFLAGS = -Wall -Wshadow -std=gnu99 \ -# $(native_ld_cflags) - -#AM_LDFLAGS = -fmudflap -INCLUDES = -I$(srcdir) -I$(srcdir)/../libelf -I$(srcdir)/../libebl -I$(srcdir)/../lib -I$(srcdir)/../libdw -I.. -AM_YFLAGS = -pld -AM_LFLAGS = -Pld -olex.yy.c -native_ld = @native_ld@ -ld_dsos = libld_elf_i386_pic.a -noinst_LIBRARIES = libld_elf.a $(ld_dsos) -#noinst_LIBRARIES = libld_elf.a -#native_ld_cflags = -DBASE_ELF_NAME=elf_$(base_cpu) -ld_SOURCES = ld.c ldgeneric.c ldlex.l ldscript.y symbolhash.c sectionhash.c \ - versionhash.c - -noinst_HEADERS = ld.h symbolhash.h sectionhash.h versionhash.h \ - ldscript.h xelf.h unaligned.h - -EXTRA_DIST = elf32-i386.script libld_elf_i386.map $(ld_modules) -ld_modules = i386_ld.c -libdw = ../libdw/libdw.so -#libdw = ../libdw/libdw.a -libelf = ../libelf/libelf.so -#libelf = ../libelf/libelf.a -libebl = ../libebl/libebl.a -libeu = ../lib/libeu.a -readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) -ldl -nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) -ldl -size_LDADD = $(libelf) $(libeu) -strip_LDADD = $(libebl) $(libelf) $(libeu) -ldl -ld_LDADD = $(libebl) $(libelf) $(libeu) -ldl $(am__append_1) -ld_LDFLAGS = -rdynamic -elflint_LDADD = $(libebl) $(libelf) $(libeu) -ldl -ldlex_no_Werror = yes - -# Machine-specific linker code. -libld_elf_a_SOURCES = $(base_cpu)_ld.c -libld_elf_i386_pic_a_SOURCES = -am_libld_elf_i386_pic_a_OBJECTS = i386_ld.os -libld_elf_i386_so_SOURCES = -CLEANFILES = none_ld.os $(ld_modules:.c=.os) -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .l .o .obj .y -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits src/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits src/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libld_elf.a: $(libld_elf_a_OBJECTS) $(libld_elf_a_DEPENDENCIES) - -rm -f libld_elf.a - $(libld_elf_a_AR) libld_elf.a $(libld_elf_a_OBJECTS) $(libld_elf_a_LIBADD) - $(RANLIB) libld_elf.a -libld_elf_i386_pic.a: $(libld_elf_i386_pic_a_OBJECTS) $(libld_elf_i386_pic_a_DEPENDENCIES) - -rm -f libld_elf_i386_pic.a - $(libld_elf_i386_pic_a_AR) libld_elf_i386_pic.a $(libld_elf_i386_pic_a_OBJECTS) $(libld_elf_i386_pic_a_LIBADD) - $(RANLIB) libld_elf_i386_pic.a -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - if test -f $$p \ - ; then \ - f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ - $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ - else :; fi; \ - done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ - rm -f "$(DESTDIR)$(bindir)/$$f"; \ - done - -clean-binPROGRAMS: - -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) - -clean-noinstPROGRAMS: - -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) -elflint$(EXEEXT): $(elflint_OBJECTS) $(elflint_DEPENDENCIES) - @rm -f elflint$(EXEEXT) - $(LINK) $(elflint_LDFLAGS) $(elflint_OBJECTS) $(elflint_LDADD) $(LIBS) -ld$(EXEEXT): $(ld_OBJECTS) $(ld_DEPENDENCIES) - @rm -f ld$(EXEEXT) - $(LINK) $(ld_LDFLAGS) $(ld_OBJECTS) $(ld_LDADD) $(LIBS) -nm$(EXEEXT): $(nm_OBJECTS) $(nm_DEPENDENCIES) - @rm -f nm$(EXEEXT) - $(LINK) $(nm_LDFLAGS) $(nm_OBJECTS) $(nm_LDADD) $(LIBS) -readelf$(EXEEXT): $(readelf_OBJECTS) $(readelf_DEPENDENCIES) - @rm -f readelf$(EXEEXT) - $(LINK) $(readelf_LDFLAGS) $(readelf_OBJECTS) $(readelf_LDADD) $(LIBS) -size$(EXEEXT): $(size_OBJECTS) $(size_DEPENDENCIES) - @rm -f size$(EXEEXT) - $(LINK) $(size_LDFLAGS) $(size_OBJECTS) $(size_LDADD) $(LIBS) -strip$(EXEEXT): $(strip_OBJECTS) $(strip_DEPENDENCIES) - @rm -f strip$(EXEEXT) - $(LINK) $(strip_LDFLAGS) $(strip_OBJECTS) $(strip_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -include ./$(DEPDIR)/$(base_cpu)_ld.Po -include ./$(DEPDIR)/elflint.Po -include ./$(DEPDIR)/ld.Po -include ./$(DEPDIR)/ldgeneric.Po -include ./$(DEPDIR)/ldlex.Po -include ./$(DEPDIR)/ldscript.Po -include ./$(DEPDIR)/nm.Po -include ./$(DEPDIR)/readelf.Po -include ./$(DEPDIR)/sectionhash.Po -include ./$(DEPDIR)/size.Po -include ./$(DEPDIR)/strip.Po -include ./$(DEPDIR)/symbolhash.Po -include ./$(DEPDIR)/versionhash.Po - -.c.o: - if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ - then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c $< - -.c.obj: - if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ - then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.l.c: - $(LEXCOMPILE) $< - sed '/^#/ s|$(LEX_OUTPUT_ROOT)\.c|$@|' $(LEX_OUTPUT_ROOT).c >$@ - rm -f $(LEX_OUTPUT_ROOT).c - -.y.c: - $(YACCCOMPILE) $< - if test -f y.tab.h; then \ - to=`echo "$*_H" | sed \ - -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ - -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ - sed -e "/^#/!b" -e "s/Y_TAB_H/$$to/g" -e "s|y\.tab\.h|$*.h|" \ - y.tab.h >$*.ht; \ - rm -f y.tab.h; \ - if cmp -s $*.ht $*.h; then \ - rm -f $*.ht ;\ - else \ - mv $*.ht $*.h; \ - fi; \ - fi - if test -f y.output; then \ - mv y.output $*.output; \ - fi - sed '/^#/ s|y\.tab\.c|$@|' y.tab.c >$@t && mv $@t $@ - rm -f y.tab.c -uninstall-info-am: - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(bindir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -rm -f ldlex.c - -rm -f ldscript.c -clean: clean-am - -clean-am: clean-binPROGRAMS clean-generic clean-noinstLIBRARIES \ - clean-noinstPROGRAMS mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: install-binPROGRAMS - -install-info: install-info-am - -install-man: - -installcheck-am: installcheck-binPROGRAMS - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-binPROGRAMS uninstall-info-am - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ - clean-generic clean-noinstLIBRARIES clean-noinstPROGRAMS ctags \ - distclean distclean-compile distclean-generic distclean-tags \ - distdir dvi dvi-am html html-am info info-am install \ - install-am install-binPROGRAMS install-data install-data-am \ - install-exec install-exec-am install-info install-info-am \ - install-man install-strip installcheck installcheck-am \ - installcheck-binPROGRAMS installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-binPROGRAMS uninstall-info-am - - -ldlex.o: ldscript.c -ldscript.h: ldscript.c -libld_elf_i386.so: libld_elf_i386_pic.a libld_elf_i386.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - $(libelf) $(libeu) \ - -Wl,--version-script,$(srcdir)/libld_elf_i386.map - -%.os: %.c %.o - if $(filter-out -fmudflap,$(COMPILE)) -c -o $@ -fpic -DPIC -DSHARED \ - -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ - `test -f '$<' || echo '$(srcdir)/'`$<; \ - then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \ - rm -f "$(DEPDIR)/$*.Tpo"; \ - else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ - fi - -# Special rule to make it possible to define libld_elf_a_SOURCES as we do. -# Otherwise make would complain. -.deps/none_ld.Po: none_ld.os - -: - -installcheck-binPROGRAMS: $(bin_PROGRAMS) - bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \ - case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \ - *" $$p "* | *" $(srcdir)/$$p "*) continue;; \ - esac; \ - f=`echo "$$p" | \ - sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - for opt in --help --version; do \ - if LD_LIBRARY_PATH=$(DESTDIR)$(libdir) \ - $(DESTDIR)$(bindir)/$$f $$opt > c$${pid}_.out 2> c$${pid}_.err \ - && test -n "`cat c$${pid}_.out`" \ - && test -z "`cat c$${pid}_.err`"; then :; \ - else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \ - done; \ - done; rm -f c$${pid}_.???; exit $$bad -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/Makefile.am b/src/Makefile.am deleted file mode 100644 index 7b957eb5..00000000 --- a/src/Makefile.am +++ /dev/null @@ -1,130 +0,0 @@ -## Process this file with automake to create Makefile.in -## Configure input file for elfutils. -## -## Copyright (C) 1996-2002, 2003, 2004 Red Hat, Inc. -## -## This program is Open Source software; you can redistribute it and/or -## modify it under the terms of the Open Software License version 1.0 as -## published by the Open Source Initiative. -## -## You should have received a copy of the Open Software License along -## with this program; if not, you may obtain a copy of the Open Software -## License version 1.0 from http://www.opensource.org/licenses/osl.php or -## by writing the Open Source Initiative c/o Lawrence Rosen, Esq., -## 3001 King Ranch Road, Ukiah, CA 95482. -## -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H $(YYDEBUG) \ - -DSRCDIR=\"$(shell cd $(srcdir);pwd)\" -DOBJDIR=\"$(shell pwd)\" -if MUDFLAP -AM_CFLAGS = -Wall -Wshadow -std=gnu99 \ - $(native_ld_cflags) -else -AM_CFLAGS = -Wall -Wshadow -std=gnu99 \ - $(if $($(*F)_no_Werror),,-Werror) $(native_ld_cflags) -endif -if MUDFLAP -AM_LDFLAGS = -fmudflap -endif -INCLUDES = -I$(srcdir) -I$(srcdir)/../libelf -I$(srcdir)/../libebl -I$(srcdir)/../lib -I$(srcdir)/../libdw -I.. - -YACC = @YACC@ -d -AM_YFLAGS = -pld -AM_LFLAGS = -Pld -olex.yy.c -## Uncomment to enable debugging of linker script parser -##YYDEBUG = -DYYDEBUG=1 - -native_ld = @native_ld@ -base_cpu = @base_cpu@ - -bin_PROGRAMS = readelf nm size strip ld elflint - - -ld_dsos = libld_elf_i386_pic.a -if NATIVE_LD -noinst_LIBRARIES = libld_elf.a -native_ld_cflags = -DBASE_ELF_NAME=elf_$(base_cpu) -else -noinst_LIBRARIES = libld_elf.a $(ld_dsos) -noinst_PROGRAMS = $(ld_dsos:_pic.a=.so) -endif - - -ld_SOURCES = ld.c ldgeneric.c ldlex.l ldscript.y symbolhash.c sectionhash.c \ - versionhash.c - -noinst_HEADERS = ld.h symbolhash.h sectionhash.h versionhash.h \ - ldscript.h xelf.h unaligned.h - -EXTRA_DIST = elf32-i386.script libld_elf_i386.map $(ld_modules) -ld_modules = i386_ld.c - -if MUDFLAP -libdw = ../libdw/libdw.a -libelf = ../libelf/libelf.a -else -libdw = ../libdw/libdw.so -libelf = ../libelf/libelf.so -endif -libebl = ../libebl/libebl.a -libeu = ../lib/libeu.a - -readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) -ldl -nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) -ldl -size_LDADD = $(libelf) $(libeu) -strip_LDADD = $(libebl) $(libelf) $(libeu) -ldl -ld_LDADD = $(libebl) $(libelf) $(libeu) -ldl -if NATIVE_LD -ld_LDADD += libld_elf.a -endif -ld_LDFLAGS = -rdynamic -elflint_LDADD = $(libebl) $(libelf) $(libeu) -ldl - -ldlex.o: ldscript.c -ldlex_no_Werror = yes -ldscript.h: ldscript.c - -# Machine-specific linker code. -libld_elf_a_SOURCES = $(base_cpu)_ld.c - -libld_elf_i386_pic_a_SOURCES = -am_libld_elf_i386_pic_a_OBJECTS = i386_ld.os - -libld_elf_i386_so_SOURCES = -libld_elf_i386.so: libld_elf_i386_pic.a libld_elf_i386.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - $(libelf) $(libeu) \ - -Wl,--version-script,$(srcdir)/libld_elf_i386.map - - -%.os: %.c %.o - if $(filter-out -fmudflap,$(COMPILE)) -c -o $@ -fpic -DPIC -DSHARED \ - -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ - `test -f '$<' || echo '$(srcdir)/'`$<; \ - then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \ - rm -f "$(DEPDIR)/$*.Tpo"; \ - else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ - fi - -# Special rule to make it possible to define libld_elf_a_SOURCES as we do. -# Otherwise make would complain. -.deps/none_ld.Po: none_ld.os - -: - - -installcheck-binPROGRAMS: $(bin_PROGRAMS) - bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \ - case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \ - *" $$p "* | *" $(srcdir)/$$p "*) continue;; \ - esac; \ - f=`echo "$$p" | \ - sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - for opt in --help --version; do \ - if LD_LIBRARY_PATH=$(DESTDIR)$(libdir) \ - $(DESTDIR)$(bindir)/$$f $$opt > c$${pid}_.out 2> c$${pid}_.err \ - && test -n "`cat c$${pid}_.out`" \ - && test -z "`cat c$${pid}_.err`"; then :; \ - else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \ - done; \ - done; rm -f c$${pid}_.???; exit $$bad - -CLEANFILES = none_ld.os $(ld_modules:.c=.os) diff --git a/src/Makefile.in b/src/Makefile.in deleted file mode 100644 index 0eb72237..00000000 --- a/src/Makefile.in +++ /dev/null @@ -1,638 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - - -SOURCES = $(libld_elf_a_SOURCES) $(libld_elf_i386_pic_a_SOURCES) elflint.c $(ld_SOURCES) $(libld_elf_i386_so_SOURCES) nm.c readelf.c size.c strip.c - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -bin_PROGRAMS = readelf$(EXEEXT) nm$(EXEEXT) size$(EXEEXT) \ - strip$(EXEEXT) ld$(EXEEXT) elflint$(EXEEXT) -@NATIVE_LD_FALSE@noinst_PROGRAMS = $(am__EXEEXT_1) -@NATIVE_LD_TRUE@am__append_1 = libld_elf.a -subdir = src -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in ChangeLog ldlex.c ldscript.c ylwrap -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -LIBRARIES = $(noinst_LIBRARIES) -AR = ar -ARFLAGS = cru -libld_elf_a_AR = $(AR) $(ARFLAGS) -libld_elf_a_LIBADD = -am_libld_elf_a_OBJECTS = $(base_cpu)_ld.$(OBJEXT) -libld_elf_a_OBJECTS = $(am_libld_elf_a_OBJECTS) -libld_elf_i386_pic_a_AR = $(AR) $(ARFLAGS) -libld_elf_i386_pic_a_LIBADD = -libld_elf_i386_pic_a_OBJECTS = $(am_libld_elf_i386_pic_a_OBJECTS) -am__installdirs = "$(DESTDIR)$(bindir)" -binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) -am__EXEEXT_1 = libld_elf_i386.so$(EXEEXT) -PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) -elflint_SOURCES = elflint.c -elflint_OBJECTS = elflint.$(OBJEXT) -am__DEPENDENCIES_1 = ../libebl/libebl.a -@MUDFLAP_FALSE@am__DEPENDENCIES_2 = ../libelf/libelf.so -@MUDFLAP_TRUE@am__DEPENDENCIES_2 = ../libelf/libelf.a -am__DEPENDENCIES_3 = ../lib/libeu.a -elflint_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \ - $(am__DEPENDENCIES_3) -am_ld_OBJECTS = ld.$(OBJEXT) ldgeneric.$(OBJEXT) ldlex.$(OBJEXT) \ - ldscript.$(OBJEXT) symbolhash.$(OBJEXT) sectionhash.$(OBJEXT) \ - versionhash.$(OBJEXT) -ld_OBJECTS = $(am_ld_OBJECTS) -@NATIVE_LD_TRUE@am__DEPENDENCIES_4 = libld_elf.a -ld_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \ - $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_4) -am_libld_elf_i386_so_OBJECTS = -libld_elf_i386_so_OBJECTS = $(am_libld_elf_i386_so_OBJECTS) -libld_elf_i386_so_LDADD = $(LDADD) -nm_SOURCES = nm.c -nm_OBJECTS = nm.$(OBJEXT) -@MUDFLAP_FALSE@am__DEPENDENCIES_5 = ../libdw/libdw.so -@MUDFLAP_TRUE@am__DEPENDENCIES_5 = ../libdw/libdw.a -nm_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) -readelf_SOURCES = readelf.c -readelf_OBJECTS = readelf.$(OBJEXT) -readelf_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) -size_SOURCES = size.c -size_OBJECTS = size.$(OBJEXT) -size_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) -strip_SOURCES = strip.c -strip_OBJECTS = strip.$(OBJEXT) -strip_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \ - $(am__DEPENDENCIES_3) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS) -YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS) -SOURCES = $(libld_elf_a_SOURCES) $(libld_elf_i386_pic_a_SOURCES) \ - elflint.c $(ld_SOURCES) $(libld_elf_i386_so_SOURCES) nm.c \ - readelf.c size.c strip.c -DIST_SOURCES = $(libld_elf_a_SOURCES) $(libld_elf_i386_pic_a_SOURCES) \ - elflint.c $(ld_SOURCES) $(libld_elf_i386_so_SOURCES) nm.c \ - readelf.c size.c strip.c -HEADERS = $(noinst_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DATADIRNAME = @DATADIRNAME@ -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H $(YYDEBUG) \ - -DSRCDIR=\"$(shell cd $(srcdir);pwd)\" -DOBJDIR=\"$(shell pwd)\" - -DEPDIR = @DEPDIR@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -GMSGFMT = @GMSGFMT@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTLLIBS = @INTLLIBS@ -LDFLAGS = @LDFLAGS@ -LEX = @LEX@ -LEXLIB = @LEXLIB@ -LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LOCALEDIR = @LOCALEDIR@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -MSGMERGE = @MSGMERGE@ -MUDFLAP_FALSE = @MUDFLAP_FALSE@ -MUDFLAP_TRUE = @MUDFLAP_TRUE@ -NATIVE_LD_FALSE = @NATIVE_LD_FALSE@ -NATIVE_LD_TRUE = @NATIVE_LD_TRUE@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -XGETTEXT = @XGETTEXT@ -YACC = @YACC@ -d -ac_ct_CC = @ac_ct_CC@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -base_cpu = @base_cpu@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -datadir = @datadir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -@MUDFLAP_FALSE@AM_CFLAGS = -Wall -Wshadow -std=gnu99 \ -@MUDFLAP_FALSE@ $(if $($(*F)_no_Werror),,-Werror) $(native_ld_cflags) - -@MUDFLAP_TRUE@AM_CFLAGS = -Wall -Wshadow -std=gnu99 \ -@MUDFLAP_TRUE@ $(native_ld_cflags) - -@MUDFLAP_TRUE@AM_LDFLAGS = -fmudflap -INCLUDES = -I$(srcdir) -I$(srcdir)/../libelf -I$(srcdir)/../libebl -I$(srcdir)/../lib -I$(srcdir)/../libdw -I.. -AM_YFLAGS = -pld -AM_LFLAGS = -Pld -olex.yy.c -native_ld = @native_ld@ -ld_dsos = libld_elf_i386_pic.a -@NATIVE_LD_FALSE@noinst_LIBRARIES = libld_elf.a $(ld_dsos) -@NATIVE_LD_TRUE@noinst_LIBRARIES = libld_elf.a -@NATIVE_LD_TRUE@native_ld_cflags = -DBASE_ELF_NAME=elf_$(base_cpu) -ld_SOURCES = ld.c ldgeneric.c ldlex.l ldscript.y symbolhash.c sectionhash.c \ - versionhash.c - -noinst_HEADERS = ld.h symbolhash.h sectionhash.h versionhash.h \ - ldscript.h xelf.h unaligned.h - -EXTRA_DIST = elf32-i386.script libld_elf_i386.map $(ld_modules) -ld_modules = i386_ld.c -@MUDFLAP_FALSE@libdw = ../libdw/libdw.so -@MUDFLAP_TRUE@libdw = ../libdw/libdw.a -@MUDFLAP_FALSE@libelf = ../libelf/libelf.so -@MUDFLAP_TRUE@libelf = ../libelf/libelf.a -libebl = ../libebl/libebl.a -libeu = ../lib/libeu.a -readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) -ldl -nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) -ldl -size_LDADD = $(libelf) $(libeu) -strip_LDADD = $(libebl) $(libelf) $(libeu) -ldl -ld_LDADD = $(libebl) $(libelf) $(libeu) -ldl $(am__append_1) -ld_LDFLAGS = -rdynamic -elflint_LDADD = $(libebl) $(libelf) $(libeu) -ldl -ldlex_no_Werror = yes - -# Machine-specific linker code. -libld_elf_a_SOURCES = $(base_cpu)_ld.c -libld_elf_i386_pic_a_SOURCES = -am_libld_elf_i386_pic_a_OBJECTS = i386_ld.os -libld_elf_i386_so_SOURCES = -CLEANFILES = none_ld.os $(ld_modules:.c=.os) -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .l .o .obj .y -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits src/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits src/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libld_elf.a: $(libld_elf_a_OBJECTS) $(libld_elf_a_DEPENDENCIES) - -rm -f libld_elf.a - $(libld_elf_a_AR) libld_elf.a $(libld_elf_a_OBJECTS) $(libld_elf_a_LIBADD) - $(RANLIB) libld_elf.a -libld_elf_i386_pic.a: $(libld_elf_i386_pic_a_OBJECTS) $(libld_elf_i386_pic_a_DEPENDENCIES) - -rm -f libld_elf_i386_pic.a - $(libld_elf_i386_pic_a_AR) libld_elf_i386_pic.a $(libld_elf_i386_pic_a_OBJECTS) $(libld_elf_i386_pic_a_LIBADD) - $(RANLIB) libld_elf_i386_pic.a -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - if test -f $$p \ - ; then \ - f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ - $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ - else :; fi; \ - done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ - rm -f "$(DESTDIR)$(bindir)/$$f"; \ - done - -clean-binPROGRAMS: - -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) - -clean-noinstPROGRAMS: - -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) -elflint$(EXEEXT): $(elflint_OBJECTS) $(elflint_DEPENDENCIES) - @rm -f elflint$(EXEEXT) - $(LINK) $(elflint_LDFLAGS) $(elflint_OBJECTS) $(elflint_LDADD) $(LIBS) -ld$(EXEEXT): $(ld_OBJECTS) $(ld_DEPENDENCIES) - @rm -f ld$(EXEEXT) - $(LINK) $(ld_LDFLAGS) $(ld_OBJECTS) $(ld_LDADD) $(LIBS) -nm$(EXEEXT): $(nm_OBJECTS) $(nm_DEPENDENCIES) - @rm -f nm$(EXEEXT) - $(LINK) $(nm_LDFLAGS) $(nm_OBJECTS) $(nm_LDADD) $(LIBS) -readelf$(EXEEXT): $(readelf_OBJECTS) $(readelf_DEPENDENCIES) - @rm -f readelf$(EXEEXT) - $(LINK) $(readelf_LDFLAGS) $(readelf_OBJECTS) $(readelf_LDADD) $(LIBS) -size$(EXEEXT): $(size_OBJECTS) $(size_DEPENDENCIES) - @rm -f size$(EXEEXT) - $(LINK) $(size_LDFLAGS) $(size_OBJECTS) $(size_LDADD) $(LIBS) -strip$(EXEEXT): $(strip_OBJECTS) $(strip_DEPENDENCIES) - @rm -f strip$(EXEEXT) - $(LINK) $(strip_LDFLAGS) $(strip_OBJECTS) $(strip_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/$(base_cpu)_ld.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elflint.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ld.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ldgeneric.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ldlex.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ldscript.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nm.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readelf.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sectionhash.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/size.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strip.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symbolhash.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/versionhash.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.l.c: - $(LEXCOMPILE) $< - sed '/^#/ s|$(LEX_OUTPUT_ROOT)\.c|$@|' $(LEX_OUTPUT_ROOT).c >$@ - rm -f $(LEX_OUTPUT_ROOT).c - -.y.c: - $(YACCCOMPILE) $< - if test -f y.tab.h; then \ - to=`echo "$*_H" | sed \ - -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ - -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ - sed -e "/^#/!b" -e "s/Y_TAB_H/$$to/g" -e "s|y\.tab\.h|$*.h|" \ - y.tab.h >$*.ht; \ - rm -f y.tab.h; \ - if cmp -s $*.ht $*.h; then \ - rm -f $*.ht ;\ - else \ - mv $*.ht $*.h; \ - fi; \ - fi - if test -f y.output; then \ - mv y.output $*.output; \ - fi - sed '/^#/ s|y\.tab\.c|$@|' y.tab.c >$@t && mv $@t $@ - rm -f y.tab.c -uninstall-info-am: - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(bindir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -rm -f ldlex.c - -rm -f ldscript.c -clean: clean-am - -clean-am: clean-binPROGRAMS clean-generic clean-noinstLIBRARIES \ - clean-noinstPROGRAMS mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: install-binPROGRAMS - -install-info: install-info-am - -install-man: - -installcheck-am: installcheck-binPROGRAMS - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-binPROGRAMS uninstall-info-am - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ - clean-generic clean-noinstLIBRARIES clean-noinstPROGRAMS ctags \ - distclean distclean-compile distclean-generic distclean-tags \ - distdir dvi dvi-am html html-am info info-am install \ - install-am install-binPROGRAMS install-data install-data-am \ - install-exec install-exec-am install-info install-info-am \ - install-man install-strip installcheck installcheck-am \ - installcheck-binPROGRAMS installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-binPROGRAMS uninstall-info-am - - -ldlex.o: ldscript.c -ldscript.h: ldscript.c -libld_elf_i386.so: libld_elf_i386_pic.a libld_elf_i386.map - $(CC) -shared -o $@ -Wl,--whole-archive,$<,--no-whole-archive \ - $(libelf) $(libeu) \ - -Wl,--version-script,$(srcdir)/libld_elf_i386.map - -%.os: %.c %.o - if $(filter-out -fmudflap,$(COMPILE)) -c -o $@ -fpic -DPIC -DSHARED \ - -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ - `test -f '$<' || echo '$(srcdir)/'`$<; \ - then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \ - rm -f "$(DEPDIR)/$*.Tpo"; \ - else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ - fi - -# Special rule to make it possible to define libld_elf_a_SOURCES as we do. -# Otherwise make would complain. -.deps/none_ld.Po: none_ld.os - -: - -installcheck-binPROGRAMS: $(bin_PROGRAMS) - bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \ - case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \ - *" $$p "* | *" $(srcdir)/$$p "*) continue;; \ - esac; \ - f=`echo "$$p" | \ - sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - for opt in --help --version; do \ - if LD_LIBRARY_PATH=$(DESTDIR)$(libdir) \ - $(DESTDIR)$(bindir)/$$f $$opt > c$${pid}_.out 2> c$${pid}_.err \ - && test -n "`cat c$${pid}_.out`" \ - && test -z "`cat c$${pid}_.err`"; then :; \ - else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \ - done; \ - done; rm -f c$${pid}_.???; exit $$bad -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/elf32-i386.script b/src/elf32-i386.script deleted file mode 100644 index d62333ac..00000000 --- a/src/elf32-i386.script +++ /dev/null @@ -1,215 +0,0 @@ -ENTRY(_start); - -SEARCH_DIR(/lib); -SEARCH_DIR(/usr/lib); -SEARCH_DIR(/usr/local/lib); -SEARCH_DIR(/usr/i686-pc-linux-gnu/lib); - -INTERP(/lib/ld-linux.so.2); - -PAGESIZE(4k); - -SEGMENT [RX] -{ -#ifdef SHARED - . = SIZEOF_HEADERS; -#else - . = 0x08048000 + SIZEOF_HEADERS; -#endif - - .interp; - .hash; - .dynsym; - .dynstr; - .gnu.version; - .gnu.version_d; - .gnu.version_r; - .rel.dyn; - .rel.plt; - .init { KEEP (*(.init)) } - .plt; - .text - { - *(.text) - *(.text.*) - *(.stub) - *(.gnu.warning) - *(.gnu.linkonce.t.*) - } - .fini { KEEP (*(.fini)) } - PROVIDE (__etext = .); - PROVIDE (_etext = .); - PROVIDE (etext = .); - .rodata - { - *(.rodata) - *(.rodata.*) - *(.gnu.linkonce.r.*) - } - .rodata1; - . = ALIGN(32 / 8); - PROVIDE (__preinit_array_start = .); - .preinit_array - { - *(.preinit_array) - } - PROVIDE (__preinit_array_end = .); - PROVIDE (__init_array_start = .); - .init_array - { - *(.init_array) - } - PROVIDE (__init_array_end = .); - PROVIDE (__fini_array_start = .); - .fini_array - { - *(.fini_array) - } - PROVIDE (__fini_array_end = .); -} - -SEGMENT [RW] -{ - .sdata2 - { - *(.sdata2) - *(.sdata2.*) - *(.gnu.linkonce.s2.*) - } - .sbss2 - { - *(.sbss2) - *(.sbss2.*) - *(.gnu.linkonce.sb2.*) - } - /* Adjust the address for the data segment. We want to adjust up to - the same address within the page on the next page up. */ - . = ALIGN(PAGESIZE) + (. & (PAGESIZE - 1)); - .data - { - *(.data) - *(.data.*) - *(.gnu.linkonce.d.*) - } - .data1; - .eh_frame - { - KEEP (*(.eh_frame)) - } - .gcc_except_table; - .ctors - { - /* gcc uses crtbegin.o to find the start of - the constructors, so we make sure it is - first. Because this is a wildcard, it - doesn't matter if the user does not - actually link against crtbegin.o; the - linker won't look for a file to match a - wildcard. The wildcard also means that it - doesn't matter which directory crtbegin.o - is in. */ - KEEP (*crtbegin.o(.ctors)) - /* We don't want to include the .ctor section from - from the crtend.o file until after the sorted ctors. - The .ctor section from the crtend file contains the - end of ctors marker and it must be last */ - KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - } - .dtors - { - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - } - .jcr; - .got - { - *(.got.plt) - *(.got) - } - .dynamic; - /* We want the small data sections together, so single-instruction offsets - can access them all, and initialized data all before uninitialized, so - we can shorten the on-disk segment size. */ - .sdata - { - *(.sdata) - *(.sdata.*) - *(.gnu.linkonce.s.*) - } - _edata = .; - PROVIDE (edata = .); - __bss_start = .; - .sbss - { - PROVIDE (__sbss_start = .); - PROVIDE (___sbss_start = .); - *(.dynsbss) - *(.sbss) - *(.sbss.*) - *(.gnu.linkonce.sb.*) - *(.scommon) - PROVIDE (__sbss_end = .); - PROVIDE (___sbss_end = .); - } - .bss - { - *(.dynbss) - *(.bss) - *(.bss.*) - *(.gnu.linkonce.b.*) - *(COMMON) - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. */ - . = ALIGN(32 / 8); - } - . = ALIGN(32 / 8); - _end = .; - PROVIDE (end = .); -} - -SEGMENT [] -{ - /* Stabs debugging sections. */ - .stab; - .stabstr; - .stab.excl; - .stab.exclstr; - .stab.index; - .stab.indexstr; - .comment; - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug; - .line; - /* GNU DWARF 1 extensions */ - .debug_srcinfo; - .debug_sfnames; - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges; - .debug_pubnames; - /* DWARF 2 */ - .debug_info - { - *(.debug_info) - *(.gnu.linkonce.wi.*) - } - .debug_abbrev; - .debug_line; - .debug_frame; - .debug_str; - .debug_loc; - .debug_macinfo; - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames; - .debug_funcnames; - .debug_typenames; - .debug_varnames; - /* These must appear regardless of . */ -} diff --git a/src/elflint.c b/src/elflint.c deleted file mode 100644 index d66cdd13..00000000 --- a/src/elflint.c +++ /dev/null @@ -1,2578 +0,0 @@ -/* Pedantic checking of ELF files compliance with gABI/psABI spec. - Copyright (C) 2001, 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <argp.h> -#include <assert.h> -#include <byteswap.h> -#include <endian.h> -#include <error.h> -#include <fcntl.h> -#include <gelf.h> -#include <inttypes.h> -#include <libebl.h> -#include <libintl.h> -#include <locale.h> -#include <stdbool.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <sys/param.h> - -#include <elf-knowledge.h> -#include <system.h> - - -/* Name and version of program. */ -static void print_version (FILE *stream, struct argp_state *state); -void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version; - - -#define ARGP_strict 300 -#define ARGP_gnuld 301 - -/* Definitions of arguments for argp functions. */ -static const struct argp_option options[] = -{ - - { "strict", ARGP_strict, NULL, 0, - N_("Be extremely strict, flag level 2 features.") }, - { "quiet", 'q', NULL, 0, N_("Do not print anything if successful") }, - { "gnu-ld", ARGP_gnuld, NULL, 0, - N_("Binary has been created with GNU ld and is therefore known to be \ -broken in certain ways") }, - { NULL, 0, NULL, 0, NULL } -}; - -/* Short description of program. */ -static const char doc[] = N_("\ -Pedantic checking of ELF files compliance with gABI/psABI spec."); - -/* Strings for arguments in help texts. */ -static const char args_doc[] = N_("FILE..."); - -/* Prototype for option handler. */ -static error_t parse_opt (int key, char *arg, struct argp_state *state); - -/* Function to print some extra text in the help message. */ -static char *more_help (int key, const char *text, void *input); - -/* Data structure to communicate with argp functions. */ -static struct argp argp = -{ - options, parse_opt, args_doc, doc, NULL, more_help -}; - - -/* Declarations of local functions. */ -static void process_file (int fd, Elf *elf, const char *prefix, - const char *suffix, const char *fname, size_t size, - bool only_one); -static void process_elf_file (Elf *elf, const char *prefix, const char *suffix, - const char *fname, size_t size, bool only_one); - -/* Report an error. */ -#define ERROR(str, args...) \ - do { \ - printf (str, ##args); \ - ++error_count; \ - } while (0) -static int error_count; - -/* True if we should perform very strict testing. */ -static bool be_strict; - -/* True if no message is to be printed if the run is succesful. */ -static bool be_quiet; - -/* True if binary is assumed to be generated with GNU ld. */ -static bool gnuld; - -/* Index of section header string table. */ -static uint32_t shstrndx; - -/* Array to count references in section groups. */ -static int *scnref; - - -int -main (int argc, char *argv[]) -{ - int remaining; - bool only_one; - - /* Set locale. */ - setlocale (LC_ALL, ""); - - /* Initialize the message catalog. */ - textdomain (PACKAGE); - - /* Parse and process arguments. */ - argp_parse (&argp, argc, argv, 0, &remaining, NULL); - - /* If no ELF file is given punt. */ - if (remaining >= argc) - { - argp_help (&argp, stdout, ARGP_HELP_SEE | ARGP_HELP_EXIT_ERR, - program_invocation_short_name); - exit (1); - } - - /* Before we start tell the ELF library which version we are using. */ - elf_version (EV_CURRENT); - - /* Now process all the files given at the command line. */ - only_one = remaining + 1 == argc; - do - { - int fd; - Elf *elf; - - /* Open the file. */ - fd = open (argv[remaining], O_RDONLY); - if (fd == -1) - { - error (0, errno, gettext ("cannot open input file")); - continue; - } - - /* Create an `Elf' descriptor. */ - elf = elf_begin (fd, ELF_C_READ_MMAP, NULL); - if (elf == NULL) - ERROR (gettext ("cannot generate Elf descriptor: %s\n"), - elf_errmsg (-1)); - else - { - unsigned int prev_error_count = error_count; - struct stat64 st; - - if (fstat64 (fd, &st) != 0) - { - printf ("cannot stat '%s': %m\n", argv[remaining]); - close (fd); - continue; - } - - process_file (fd, elf, NULL, NULL, argv[remaining], st.st_size, - only_one); - - /* Now we can close the descriptor. */ - if (elf_end (elf) != 0) - ERROR (gettext ("error while closing Elf descriptor: %s\n"), - elf_errmsg (-1)); - - if (prev_error_count == error_count && !be_quiet) - puts (gettext ("No errors")); - } - - close (fd); - } - while (++remaining < argc); - - return error_count != 0; -} - - -/* Handle program arguments. */ -static error_t -parse_opt (int key, char *arg, struct argp_state *state) -{ - switch (key) - { - case ARGP_strict: - be_strict = true; - break; - - case 'q': - be_quiet = true; - break; - - case ARGP_gnuld: - gnuld = true; - break; - - default: - return ARGP_ERR_UNKNOWN; - } - return 0; -} - - -static char * -more_help (int key, const char *text, void *input) -{ - char *buf; - - switch (key) - { - case ARGP_KEY_HELP_EXTRA: - /* We print some extra information. */ - if (asprintf (&buf, gettext ("Please report bugs to %s.\n"), - PACKAGE_BUGREPORT) < 0) - buf = NULL; - return buf; - - default: - break; - } - return (char *) text; -} - - -/* Print the version information. */ -static void -print_version (FILE *stream, struct argp_state *state) -{ - fprintf (stream, "elflint (%s) %s\n", PACKAGE_NAME, VERSION); - fprintf (stream, gettext ("\ -Copyright (C) %s Red Hat, Inc.\n\ -This is free software; see the source for copying conditions. There is NO\n\ -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ -"), "2004"); - fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper"); -} - - -/* Process one file. */ -static void -process_file (int fd, Elf *elf, const char *prefix, const char *suffix, - const char *fname, size_t size, bool only_one) -{ - /* We can handle two types of files: ELF files and archives. */ - Elf_Kind kind = elf_kind (elf); - - switch (kind) - { - case ELF_K_ELF: - /* Yes! It's an ELF file. */ - process_elf_file (elf, prefix, suffix, fname, size, only_one); - break; - - case ELF_K_AR: - { - Elf *subelf; - Elf_Cmd cmd = ELF_C_READ_MMAP; - size_t prefix_len = prefix == NULL ? 0 : strlen (prefix); - size_t fname_len = strlen (fname) + 1; - char new_prefix[prefix_len + 1 + fname_len]; - char new_suffix[(suffix == NULL ? 0 : strlen (suffix)) + 2]; - char *cp = new_prefix; - - /* Create the full name of the file. */ - if (prefix != NULL) - { - cp = mempcpy (cp, prefix, prefix_len); - *cp++ = '('; - strcpy (stpcpy (new_suffix, suffix), ")"); - } - else - new_suffix[0] = '\0'; - memcpy (cp, fname, fname_len); - - /* It's an archive. We process each file in it. */ - while ((subelf = elf_begin (fd, cmd, elf)) != NULL) - { - kind = elf_kind (subelf); - - /* Call this function recursively. */ - if (kind == ELF_K_ELF || kind == ELF_K_AR) - { - Elf_Arhdr *arhdr = elf_getarhdr (subelf); - assert (arhdr != NULL); - - process_file (fd, subelf, new_prefix, new_suffix, - arhdr->ar_name, arhdr->ar_size, false); - } - - /* Get next archive element. */ - cmd = elf_next (subelf); - if (elf_end (subelf) != 0) - ERROR (gettext (" error while freeing sub-ELF descriptor: %s\n"), - elf_errmsg (-1)); - } - } - break; - - default: - /* We cannot do anything. */ - ERROR (gettext ("\ -Not an ELF file - it has the wrong magic bytes at the start")); - break; - } -} - - -static const char * -section_name (Ebl *ebl, GElf_Ehdr *ehdr, int idx) -{ - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - - shdr = gelf_getshdr (elf_getscn (ebl->elf, idx), &shdr_mem); - - return elf_strptr (ebl->elf, shstrndx, shdr->sh_name); -} - - -static const int valid_e_machine[] = - { - EM_M32, EM_SPARC, EM_386, EM_68K, EM_88K, EM_860, EM_MIPS, EM_S370, - EM_MIPS_RS3_LE, EM_PARISC, EM_VPP500, EM_SPARC32PLUS, EM_960, EM_PPC, - EM_PPC64, EM_S390, EM_V800, EM_FR20, EM_RH32, EM_RCE, EM_ARM, - EM_FAKE_ALPHA, EM_SH, EM_SPARCV9, EM_TRICORE, EM_ARC, EM_H8_300, - EM_H8_300H, EM_H8S, EM_H8_500, EM_IA_64, EM_MIPS_X, EM_COLDFIRE, - EM_68HC12, EM_MMA, EM_PCP, EM_NCPU, EM_NDR1, EM_STARCORE, EM_ME16, - EM_ST100, EM_TINYJ, EM_X86_64, EM_PDSP, EM_FX66, EM_ST9PLUS, EM_ST7, - EM_68HC16, EM_68HC11, EM_68HC08, EM_68HC05, EM_SVX, EM_ST19, EM_VAX, - EM_CRIS, EM_JAVELIN, EM_FIREPATH, EM_ZSP, EM_MMIX, EM_HUANY, EM_PRISM, - EM_AVR, EM_FR30, EM_D10V, EM_D30V, EM_V850, EM_M32R, EM_MN10300, - EM_MN10200, EM_PJ, EM_OPENRISC, EM_ARC_A5, EM_XTENSA - }; -#define nvalid_e_machine \ - (sizeof (valid_e_machine) / sizeof (valid_e_machine[0])) - - -/* Number of sections. */ -static unsigned int shnum; - - -static void -check_elf_header (Ebl *ebl, GElf_Ehdr *ehdr, size_t size) -{ - char buf[512]; - size_t cnt; - - /* Check e_ident field. */ - if (ehdr->e_ident[EI_MAG0] != ELFMAG0) - ERROR ("e_ident[%d] != '%c'\n", EI_MAG0, ELFMAG0); - if (ehdr->e_ident[EI_MAG1] != ELFMAG1) - ERROR ("e_ident[%d] != '%c'\n", EI_MAG1, ELFMAG1); - if (ehdr->e_ident[EI_MAG2] != ELFMAG2) - ERROR ("e_ident[%d] != '%c'\n", EI_MAG2, ELFMAG2); - if (ehdr->e_ident[EI_MAG3] != ELFMAG3) - ERROR ("e_ident[%d] != '%c'\n", EI_MAG3, ELFMAG3); - - if (ehdr->e_ident[EI_CLASS] != ELFCLASS32 - && ehdr->e_ident[EI_CLASS] != ELFCLASS64) - ERROR (gettext ("e_ident[%d] == %d is no known class\n"), - EI_CLASS, ehdr->e_ident[EI_CLASS]); - - if (ehdr->e_ident[EI_DATA] != ELFDATA2LSB - && ehdr->e_ident[EI_DATA] != ELFDATA2MSB) - ERROR (gettext ("e_ident[%d] == %d is no known data encoding\n"), - EI_DATA, ehdr->e_ident[EI_DATA]); - - if (ehdr->e_ident[EI_VERSION] != EV_CURRENT) - ERROR (gettext ("unknown ELF header version number e_ident[%d] == %d\n"), - EI_VERSION, ehdr->e_ident[EI_VERSION]); - - /* We currently don't handle any OS ABIs. */ - if (ehdr->e_ident[EI_OSABI] != ELFOSABI_NONE) - ERROR (gettext ("unsupported OS ABI e_ident[%d] == \"%s\"\n"), - EI_OSABI, - ebl_osabi_name (ebl, ehdr->e_ident[EI_OSABI], buf, sizeof (buf))); - - /* No ABI versions other than zero supported either. */ - if (ehdr->e_ident[EI_ABIVERSION] != 0) - ERROR (gettext ("unsupport ABI version e_ident[%d] == %d\n"), - EI_ABIVERSION, ehdr->e_ident[EI_ABIVERSION]); - - for (cnt = EI_PAD; cnt < EI_NIDENT; ++cnt) - if (ehdr->e_ident[cnt] != 0) - ERROR (gettext ("e_ident[%zu] is not zero\n"), cnt); - - /* Check the e_type field. */ - if (ehdr->e_type != ET_REL && ehdr->e_type != ET_EXEC - && ehdr->e_type != ET_DYN && ehdr->e_type != ET_CORE) - ERROR (gettext ("unknown object file type %d\n"), ehdr->e_type); - - /* Check the e_machine field. */ - for (cnt = 0; cnt < nvalid_e_machine; ++cnt) - if (valid_e_machine[cnt] == ehdr->e_machine) - break; - if (cnt == nvalid_e_machine) - ERROR (gettext ("unknown machine type %d\n"), ehdr->e_machine); - - /* Check the e_version field. */ - if (ehdr->e_version != EV_CURRENT) - ERROR (gettext ("unknown object file version\n")); - - /* Check the e_phoff and e_phnum fields. */ - if (ehdr->e_phoff == 0) - { - if (ehdr->e_phnum != 0) - ERROR (gettext ("invalid program header offset\n")); - else if (ehdr->e_type == ET_EXEC || ehdr->e_type == ET_DYN) - ERROR (gettext ("\ -executables and DSOs cannot have zero program header offset\n")); - } - else if (ehdr->e_phnum == 0) - ERROR (gettext ("invalid number of program header entries\n")); - - /* Check the e_shoff field. */ - shnum = ehdr->e_shnum; - shstrndx = ehdr->e_shstrndx; - if (ehdr->e_shoff == 0) - { - if (ehdr->e_shnum != 0) - ERROR (gettext ("invalid section header table offset\n")); - else if (ehdr->e_type != ET_EXEC && ehdr->e_type != ET_DYN - && ehdr->e_type != ET_CORE) - ERROR (gettext ("section header table must be present\n")); - } - else - { - if (ehdr->e_shnum == 0) - { - /* Get the header of the zeroth section. The sh_size field - might contain the section number. */ - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - - shdr = gelf_getshdr (elf_getscn (ebl->elf, 0), &shdr_mem); - if (shdr != NULL) - { - /* The error will be reported later. */ - if (shdr->sh_size == 0) - ERROR (gettext ("\ -invalid number of section header table entries\n")); - else - shnum = shdr->sh_size; - } - } - - if (ehdr->e_shstrndx == SHN_XINDEX) - { - /* Get the header of the zeroth section. The sh_size field - might contain the section number. */ - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - - shdr = gelf_getshdr (elf_getscn (ebl->elf, 0), &shdr_mem); - if (shdr != NULL) - { - /* The error will be reported later. */ - if (shdr->sh_link >= shnum) - ERROR (gettext ("invalid section header index\n")); - else - shstrndx = shdr->sh_link; - } - } - else if (shstrndx >= shnum) - ERROR (gettext ("invalid section header index\n")); - } - - /* Check the e_flags field. */ - if (!ebl_machine_flag_check (ebl, ehdr->e_flags)) - ERROR (gettext ("invalid machine flags: %s\n"), - ebl_machine_flag_name (ebl, ehdr->e_flags, buf, sizeof (buf))); - - /* Check e_ehsize, e_phentsize, and e_shentsize fields. */ - if (gelf_getclass (ebl->elf) == ELFCLASS32) - { - if (ehdr->e_ehsize != 0 && ehdr->e_ehsize != sizeof (Elf32_Ehdr)) - ERROR (gettext ("invalid ELF header size: %hd\n"), ehdr->e_ehsize); - - if (ehdr->e_phentsize != 0 && ehdr->e_phentsize != sizeof (Elf32_Phdr)) - ERROR (gettext ("invalid program header size: %hd\n"), - ehdr->e_phentsize); - else if (ehdr->e_phoff + ehdr->e_phnum * ehdr->e_phentsize > size) - ERROR (gettext ("invalid program header position or size\n")); - - if (ehdr->e_shentsize != 0 && ehdr->e_shentsize != sizeof (Elf32_Shdr)) - ERROR (gettext ("invalid section header size: %hd\n"), - ehdr->e_shentsize); - else if (ehdr->e_shoff + ehdr->e_shnum * ehdr->e_shentsize > size) - ERROR (gettext ("invalid section header position or size\n")); - } - else if (gelf_getclass (ebl->elf) == ELFCLASS64) - { - if (ehdr->e_ehsize != 0 && ehdr->e_ehsize != sizeof (Elf64_Ehdr)) - ERROR (gettext ("invalid ELF header size: %hd\n"), ehdr->e_ehsize); - - if (ehdr->e_phentsize != 0 && ehdr->e_phentsize != sizeof (Elf64_Phdr)) - ERROR (gettext ("invalid program header size: %hd\n"), - ehdr->e_phentsize); - else if (ehdr->e_phoff + ehdr->e_phnum * ehdr->e_phentsize > size) - ERROR (gettext ("invalid program header position or size\n")); - - if (ehdr->e_shentsize != 0 && ehdr->e_shentsize != sizeof (Elf64_Shdr)) - ERROR (gettext ("invalid section header size: %hd\n"), - ehdr->e_shentsize); - else if (ehdr->e_shoff + ehdr->e_shnum * ehdr->e_shentsize > size) - ERROR (gettext ("invalid section header position or size\n")); - } -} - - -/* Check that there is a section group section with index < IDX which - contains section IDX and that there is exactly one. */ -static void -check_scn_group (Ebl *ebl, GElf_Ehdr *ehdr, int idx) -{ - if (scnref[idx] == 0) - { - /* No reference so far. Search following sections, maybe the - order is wrong. */ - size_t cnt; - - for (cnt = idx + 1; cnt < shnum; ++cnt) - { - Elf_Scn *scn; - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - Elf_Data *data; - Elf32_Word *grpdata; - size_t inner; - - scn = elf_getscn (ebl->elf, cnt); - shdr = gelf_getshdr (scn, &shdr_mem); - if (shdr == NULL) - /* We cannot get the section header so we cannot check it. - The error to get the section header will be shown - somewhere else. */ - continue; - - if (shdr->sh_type != SHT_GROUP) - continue; - - data = elf_getdata (scn, NULL); - if (data == NULL || data->d_size < sizeof (Elf32_Word)) - /* Cannot check the section. */ - continue; - - grpdata = (Elf32_Word *) data->d_buf; - for (inner = 1; inner < data->d_size / sizeof (Elf32_Word); ++inner) - if (grpdata[inner] == (Elf32_Word) idx) - goto out; - } - - out: - if (cnt == shnum) - ERROR (gettext ("\ -section [%2d] '%s': section with SHF_GROUP flag set not part of a section group\n"), - idx, section_name (ebl, ehdr, idx)); - else - ERROR (gettext ("\ -section [%2d] '%s': section group [%2zu] '%s' does not preceed group member\n"), - idx, section_name (ebl, ehdr, idx), - cnt, section_name (ebl, ehdr, cnt)); - } -} - - -static void -check_symtab (Ebl *ebl, GElf_Ehdr *ehdr, int idx) -{ - bool no_xndx_warned = false; - int no_pt_tls = 0; - - Elf_Scn *scn = elf_getscn (ebl->elf, idx); - GElf_Shdr shdr_mem; - GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); - GElf_Shdr strshdr_mem; - GElf_Shdr *strshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), - &strshdr_mem); - if (shdr == NULL || strshdr == NULL) - return; - Elf_Data *data = elf_getdata (scn, NULL); - if (data == NULL) - { - ERROR (gettext ("section [%2d] '%s': cannot get section data\n"), - idx, section_name (ebl, ehdr, idx)); - return; - } - - if (strshdr->sh_type != SHT_STRTAB) - ERROR (gettext ("section [%2d] '%s': referenced as string table for section [%2d] '%s' but type is not SHT_STRTAB\n"), - shdr->sh_link, section_name (ebl, ehdr, shdr->sh_link), - idx, section_name (ebl, ehdr, idx)); - - /* Search for an extended section index table section. */ - size_t cnt; - GElf_Shdr xndxshdr_mem; - GElf_Shdr *xndxshdr = NULL; - Elf_Data *xndxdata = NULL; - Elf32_Word xndxscnidx = 0; - for (cnt = 1; cnt < shnum; ++cnt) - if (cnt != (size_t) idx) - { - Elf_Scn *xndxscn = elf_getscn (ebl->elf, cnt); - xndxshdr = gelf_getshdr (xndxscn, &xndxshdr_mem); - xndxdata = elf_getdata (xndxscn, NULL); - xndxscnidx = elf_ndxscn (xndxscn); - - if (xndxshdr == NULL || xndxdata == NULL) - continue; - - if (xndxshdr->sh_type == SHT_SYMTAB_SHNDX - && xndxshdr->sh_link == (GElf_Word) idx) - break; - } - if (cnt == shnum) - { - xndxshdr = NULL; - xndxdata = NULL; - } - - if (shdr->sh_entsize != gelf_fsize (ebl->elf, ELF_T_SYM, 1, EV_CURRENT)) - ERROR (gettext ("\ -section [%2zu] '%s': entry size is does not match ElfXX_Sym\n"), - cnt, section_name (ebl, ehdr, cnt)); - - /* Test the zeroth entry. */ - GElf_Sym sym_mem; - Elf32_Word xndx; - GElf_Sym *sym = gelf_getsymshndx (data, xndxdata, 0, &sym_mem, &xndx); - if (sym == NULL) - ERROR (gettext ("section [%2d] '%s': cannot get symbol %d: %s\n"), - idx, section_name (ebl, ehdr, idx), 0, elf_errmsg (-1)); - else - { - if (sym->st_name != 0) - ERROR (gettext ("section [%2d] '%s': '%s' in zeroth entry not zero\n"), - idx, section_name (ebl, ehdr, idx), "st_name"); - if (sym->st_value != 0) - ERROR (gettext ("section [%2d] '%s': '%s' in zeroth entry not zero\n"), - idx, section_name (ebl, ehdr, idx), "st_value"); - if (sym->st_size != 0) - ERROR (gettext ("section [%2d] '%s': '%s' in zeroth entry not zero\n"), - idx, section_name (ebl, ehdr, idx), "st_size"); - if (sym->st_info != 0) - ERROR (gettext ("section [%2d] '%s': '%s' in zeroth entry not zero\n"), - idx, section_name (ebl, ehdr, idx), "st_info"); - if (sym->st_other != 0) - ERROR (gettext ("section [%2d] '%s': '%s' in zeroth entry not zero\n"), - idx, section_name (ebl, ehdr, idx), "st_other"); - if (sym->st_shndx != 0) - ERROR (gettext ("section [%2d] '%s': '%s' in zeroth entry not zero\n"), - idx, section_name (ebl, ehdr, idx), "st_shndx"); - if (xndxdata != NULL && xndx != 0) - ERROR (gettext ("\ -section [%2d] '%s': XINDEX for zeroth entry not zero\n"), - xndxscnidx, section_name (ebl, ehdr, xndxscnidx)); - } - - for (cnt = 1; cnt < shdr->sh_size / shdr->sh_entsize; ++cnt) - { - sym = gelf_getsymshndx (data, xndxdata, cnt, &sym_mem, &xndx); - if (sym == NULL) - { - ERROR (gettext ("section [%2d] '%s': cannot get symbol %zu: %s\n"), - idx, section_name (ebl, ehdr, idx), cnt, elf_errmsg (-1)); - continue; - } - - const char *name = NULL; - if (sym->st_name >= strshdr->sh_size) - ERROR (gettext ("\ -section [%2d] '%s': symbol %zu: invalid name value\n"), - idx, section_name (ebl, ehdr, idx), cnt); - else - { - name = elf_strptr (ebl->elf, shdr->sh_link, sym->st_name); - assert (name != NULL); - } - - if (sym->st_shndx == SHN_XINDEX) - { - if (xndxdata == NULL) - { - ERROR (gettext ("\ -section [%2d] '%s': symbol %zu: too large section index but no extended section index section\n"), - idx, section_name (ebl, ehdr, idx), cnt); - no_xndx_warned = true; - } - else if (xndx < SHN_LORESERVE) - ERROR (gettext ("\ -section [%2d] '%s': symbol %zu: XINDEX used for index which would fit in st_shndx (%" PRIu32 ")\n"), - xndxscnidx, section_name (ebl, ehdr, xndxscnidx), cnt, - xndx); - } - else if ((sym->st_shndx >= SHN_LORESERVE - // && sym->st_shndx <= SHN_HIRESERVE always true - && sym->st_shndx != SHN_ABS - && sym->st_shndx != SHN_COMMON) - || (sym->st_shndx >= shnum - && (sym->st_shndx < SHN_LORESERVE - /* || sym->st_shndx > SHN_HIRESERVE always false */))) - ERROR (gettext ("\ -section [%2d] '%s': symbol %zu: invalid section index\n"), - idx, section_name (ebl, ehdr, idx), cnt); - else - xndx = sym->st_shndx; - - if (GELF_ST_TYPE (sym->st_info) >= STT_NUM) - ERROR (gettext ("section [%2d] '%s': symbol %zu: unknown type\n"), - idx, section_name (ebl, ehdr, idx), cnt); - - if (GELF_ST_BIND (sym->st_info) >= STB_NUM) - ERROR (gettext ("\ -section [%2d] '%s': symbol %zu: unknown symbol binding\n"), - idx, section_name (ebl, ehdr, idx), cnt); - - if (xndx == SHN_COMMON) - { - /* Common symbols can only appear in relocatable files. */ - if (ehdr->e_type != ET_REL) - ERROR (gettext ("\ -section [%2d] '%s': symbol %zu: COMMON only allowed in relocatable files\n"), - idx, section_name (ebl, ehdr, idx), cnt); - if (cnt < shdr->sh_info) - ERROR (gettext ("\ -section [%2d] '%s': symbol %zu: local COMMON symbols are nonsense\n"), - idx, section_name (ebl, ehdr, idx), cnt); - if (GELF_R_TYPE (sym->st_info) == STT_FUNC) - ERROR (gettext ("\ -section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"), - idx, section_name (ebl, ehdr, idx), cnt); - } - else if (xndx > 0 && xndx < shnum) - { - GElf_Shdr destshdr_mem; - GElf_Shdr *destshdr; - - destshdr = gelf_getshdr (elf_getscn (ebl->elf, xndx), &destshdr_mem); - if (destshdr != NULL) - { - if (GELF_ST_TYPE (sym->st_info) != STT_TLS) - { - if ((sym->st_value - destshdr->sh_addr) > destshdr->sh_size) - ERROR (gettext ("\ -section [%2d] '%s': symbol %zu: st_value out of bounds\n"), - idx, section_name (ebl, ehdr, idx), cnt); - else if ((sym->st_value - destshdr->sh_addr + sym->st_size) - > destshdr->sh_size) - ERROR (gettext ("\ -section [%2d] '%s': symbol %zu does not fit completely in referenced section [%2d] '%s'\n"), - idx, section_name (ebl, ehdr, idx), cnt, - (int) xndx, section_name (ebl, ehdr, xndx)); - } - else - { - if ((destshdr->sh_flags & SHF_TLS) == 0) - ERROR (gettext ("\ -section [%2d] '%s': symbol %zu: referenced section [%2d] '%s' does not have SHF_TLS flag set\n"), - idx, section_name (ebl, ehdr, idx), cnt, - (int) xndx, section_name (ebl, ehdr, xndx)); - - if (ehdr->e_type == ET_REL) - { - /* For object files the symbol value must fall - into the section. */ - if (sym->st_value > destshdr->sh_size) - ERROR (gettext ("\ -section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section [%2d] '%s'\n"), - idx, section_name (ebl, ehdr, idx), cnt, - (int) xndx, section_name (ebl, ehdr, xndx)); - else if (sym->st_value + sym->st_size - > destshdr->sh_size) - ERROR (gettext ("\ -section [%2d] '%s': symbol %zu does not fit completely in referenced section [%2d] '%s'\n"), - idx, section_name (ebl, ehdr, idx), cnt, - (int) xndx, section_name (ebl, ehdr, xndx)); - } - else - { - GElf_Phdr phdr_mem; - GElf_Phdr *phdr = NULL; - int pcnt; - - for (pcnt = 0; pcnt < ehdr->e_phnum; ++pcnt) - { - phdr = gelf_getphdr (ebl->elf, pcnt, &phdr_mem); - if (phdr != NULL && phdr->p_type == PT_TLS) - break; - } - - if (pcnt == ehdr->e_phnum) - { - if (no_pt_tls++ == 0) - ERROR (gettext ("\ -section [%2d] '%s': symbol %zu: TLS symbol but no TLS program header entry\n"), - idx, section_name (ebl, ehdr, idx), cnt); - } - else - { - if (sym->st_value - < destshdr->sh_offset - phdr->p_offset) - ERROR (gettext ("\ -section [%2d] '%s': symbol %zu: st_value short of referenced section [%2d] '%s'\n"), - idx, section_name (ebl, ehdr, idx), cnt, - (int) xndx, section_name (ebl, ehdr, xndx)); - else if (sym->st_value - > (destshdr->sh_offset - phdr->p_offset - + destshdr->sh_size)) - ERROR (gettext ("\ -section [%2d] '%s': symbol %zu: st_value out of bounds of referenced section [%2d] '%s'\n"), - idx, section_name (ebl, ehdr, idx), cnt, - (int) xndx, section_name (ebl, ehdr, xndx)); - else if (sym->st_value + sym->st_size - > (destshdr->sh_offset - phdr->p_offset - + destshdr->sh_size)) - ERROR (gettext ("\ -section [%2d] '%s': symbol %zu does not fit completely in referenced section [%2d] '%s'\n"), - idx, section_name (ebl, ehdr, idx), cnt, - (int) xndx, section_name (ebl, ehdr, xndx)); - } - } - } - } - } - - if (GELF_ST_BIND (sym->st_info) == STB_LOCAL) - { - if (cnt >= shdr->sh_info) - ERROR (gettext ("\ -section [%2d] '%s': symbol %zu: local symbol outside range described in sh_info\n"), - idx, section_name (ebl, ehdr, idx), cnt); - } - else - { - if (cnt < shdr->sh_info) - ERROR (gettext ("\ -section [%2d] '%s': symbol %zu: non-local symbol outside range described in sh_info\n"), - idx, section_name (ebl, ehdr, idx), cnt); - } - - if (GELF_ST_TYPE (sym->st_info) == STT_SECTION - && GELF_ST_BIND (sym->st_info) != STB_LOCAL) - ERROR (gettext ("\ -section [%2d] '%s': symbol %zu: non-local section symbol\n"), - idx, section_name (ebl, ehdr, idx), cnt); - - if (name != NULL) - { - if (strcmp (name, "_GLOBAL_OFFSET_TABLE_") == 0) - { - /* Check that address and size match the global offset - table. We have to locate the GOT by searching for a - section named ".got". */ - Elf_Scn *gscn = NULL; - - while ((gscn = elf_nextscn (ebl->elf, gscn)) != NULL) - { - GElf_Shdr gshdr_mem; - GElf_Shdr *gshdr = gelf_getshdr (gscn, &gshdr_mem); - assert (gshdr != NULL); - - const char *sname = elf_strptr (ebl->elf, ehdr->e_shstrndx, - gshdr->sh_name); - if (sname != NULL && strcmp (sname, ".got") == 0) - { - /* Found it. */ - if (sym->st_value != gshdr->sh_addr) - /* This test is more strict than the psABIs - which usually allow the symbol to be in the - middle of the .got section, allowing - negative offsets. */ - ERROR (gettext ("\ -section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#" PRIx64 " does not match .got section address %#" PRIx64 "\n"), - idx, section_name (ebl, ehdr, idx), - (uint64_t) sym->st_value, - (uint64_t) gshdr->sh_addr); - - if (sym->st_size != gshdr->sh_size) - ERROR (gettext ("\ -section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %" PRIu64 " does not match .got section size %" PRIu64 "\n"), - idx, section_name (ebl, ehdr, idx), - (uint64_t) sym->st_size, - (uint64_t) gshdr->sh_size); - - break; - } - } - - if (gscn == NULL) - ERROR (gettext ("\ -section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got section\n"), - idx, section_name (ebl, ehdr, idx)); - } - else if (strcmp (name, "_DYNAMIC") == 0) - { - /* Check that address and size match the dynamic - section. We locate the dynamic section via the - program header entry. */ - int pcnt; - - for (pcnt = 0; pcnt < ehdr->e_phnum; ++pcnt) - { - GElf_Phdr phdr_mem; - GElf_Phdr *phdr = gelf_getphdr (ebl->elf, pcnt, &phdr_mem); - - if (phdr != NULL && phdr->p_type == PT_DYNAMIC) - { - if (sym->st_value != phdr->p_vaddr) - ERROR (gettext ("\ -section [%2d] '%s': _DYNAMIC_ symbol value %#" PRIx64 " does not match dynamic segment address %#" PRIx64 "\n"), - idx, section_name (ebl, ehdr, idx), - (uint64_t) sym->st_value, - (uint64_t) phdr->p_vaddr); - - if (sym->st_size != phdr->p_memsz) - ERROR (gettext ("\ -section [%2d] '%s': _DYNAMIC symbol size %" PRIu64 " does not match dynamic segment size %" PRIu64 "\n"), - idx, section_name (ebl, ehdr, idx), - (uint64_t) sym->st_size, - (uint64_t) phdr->p_memsz); - - break; - } - } - } - } - } -} - - -static bool -is_rel_dyn (Ebl *ebl, GElf_Ehdr *ehdr, int idx, GElf_Shdr *shdr, bool rela) -{ - /* If this is no executable or DSO it cannot be a .rel.dyn section. */ - if (ehdr->e_type != ET_EXEC && ehdr->e_type != ET_DYN) - return false; - - /* Check the section name. Unfortunately necessary. */ - if (strcmp (section_name (ebl, ehdr, idx), rela ? ".rela.dyn" : ".rel.dyn")) - return false; - - /* When a .rel.dyn section is used a DT_RELCOUNT dynamic section - entry can be present as well. */ - Elf_Scn *scn = NULL; - while ((scn = elf_nextscn (ebl->elf, scn)) != NULL) - { - GElf_Shdr rcshdr_mem; - const GElf_Shdr *rcshdr = gelf_getshdr (scn, &rcshdr_mem); - assert (rcshdr != NULL); - - if (rcshdr->sh_type == SHT_DYNAMIC) - { - /* Found the dynamic section. Look through it. */ - Elf_Data *d = elf_getdata (scn, NULL); - int cnt; - - for (cnt = 1; cnt < rcshdr->sh_size / rcshdr->sh_entsize; ++cnt) - { - GElf_Dyn dyn_mem; - GElf_Dyn *dyn = gelf_getdyn (d, cnt, &dyn_mem); - assert (dyn != NULL); - - if (dyn->d_tag == DT_RELCOUNT) - { - /* Found it. One last check: does the number - specified number of relative relocations exceed - the total number of relocations? */ - if (dyn->d_un.d_val > shdr->sh_size / shdr->sh_entsize) - ERROR (gettext ("\ -section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"), - idx, section_name (ebl, ehdr, idx), - (int) dyn->d_un.d_val); - } - } - - break; - } - } - - return true; -} - - -static void -check_rela (Ebl *ebl, GElf_Ehdr *ehdr, int idx) -{ - Elf_Scn *scn; - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - Elf_Data *data; - GElf_Shdr destshdr_mem; - GElf_Shdr *destshdr = NULL; - size_t cnt; - bool reldyn = false; - bool known_broken = gnuld; - - scn = elf_getscn (ebl->elf, idx); - shdr = gelf_getshdr (scn, &shdr_mem); - if (shdr == NULL) - return; - data = elf_getdata (scn, NULL); - if (data == NULL) - { - ERROR (gettext ("section [%2d] '%s': cannot get section data\n"), - idx, section_name (ebl, ehdr, idx)); - return; - } - - /* Check whether the link to the section we relocate is reasonable. */ - if (shdr->sh_info >= shnum) - ERROR (gettext ("section [%2d] '%s': invalid destination section index\n"), - idx, section_name (ebl, ehdr, idx)); - else - { - destshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_info), - &destshdr_mem); - if (destshdr != NULL) - { - if(destshdr->sh_type != SHT_PROGBITS - && destshdr->sh_type != SHT_NOBITS) - { - reldyn = is_rel_dyn (ebl, ehdr, idx, shdr, true); - if (!reldyn) - ERROR (gettext ("\ -section [%2d] '%s': invalid destination section type\n"), - idx, section_name (ebl, ehdr, idx)); - else - { - /* There is no standard, but we require that .rela.dyn - sections have a sh_info value of zero. */ - if (shdr->sh_info != 0) - ERROR (gettext ("\ -section [%2d] '%s': sh_info should be zero\n"), - idx, section_name (ebl, ehdr, idx)); - } - } - - if ((destshdr->sh_flags & (SHF_MERGE | SHF_STRINGS)) != 0) - ERROR (gettext ("\ -section [%2d] '%s': no relocations for merge-able sections possible\n"), - idx, section_name (ebl, ehdr, idx)); - } - } - - if (shdr->sh_entsize != gelf_fsize (ebl->elf, ELF_T_RELA, 1, EV_CURRENT)) - ERROR (gettext ("\ -section [%2d] '%s': section entry size does not match ElfXX_Rela\n"), - idx, section_name (ebl, ehdr, idx)); - - Elf_Scn *symscn = elf_getscn (ebl->elf, shdr->sh_link); - GElf_Shdr symshdr_mem; - GElf_Shdr *symshdr = gelf_getshdr (symscn, &symshdr_mem); - Elf_Data *symdata = elf_getdata (symscn, NULL); - - for (cnt = 0; cnt < shdr->sh_size / shdr->sh_entsize; ++cnt) - { - GElf_Rela rela_mem; - GElf_Rela *rela; - - rela = gelf_getrela (data, cnt, &rela_mem); - if (rela == NULL) - { - ERROR (gettext ("\ -section [%2d] '%s': cannot get relocation %zu: %s\n"), - idx, section_name (ebl, ehdr, idx), cnt, elf_errmsg (-1)); - continue; - } - - if (!ebl_reloc_type_check (ebl, GELF_R_TYPE (rela->r_info))) - ERROR (gettext ("section [%2d] '%s': relocation %zu: invalid type\n"), - idx, section_name (ebl, ehdr, idx), cnt); - else if (!ebl_reloc_valid_use (ebl, GELF_R_TYPE (rela->r_info))) - ERROR (gettext ("\ -section [%2d] '%s': relocation %zu: relocation type invalid for the file type\n"), - idx, section_name (ebl, ehdr, idx), cnt); - - if (symshdr != NULL - && ((GELF_R_SYM (rela->r_info) + 1) - * gelf_fsize (ebl->elf, ELF_T_SYM, 1, EV_CURRENT) - > symshdr->sh_size)) - ERROR (gettext ("\ -section [%2d] '%s': relocation %zu: invalid symbol index\n"), - idx, section_name (ebl, ehdr, idx), cnt); - - if (ebl_gotpc_reloc_check (ebl, GELF_R_TYPE (rela->r_info))) - { - const char *name; - char buf[64]; - GElf_Sym sym_mem; - GElf_Sym *sym = gelf_getsym (symdata, GELF_R_SYM (rela->r_info), - &sym_mem); - if (sym != NULL - /* Get the name for the symbol. */ - && (name = elf_strptr (ebl->elf, symshdr->sh_link, sym->st_name)) - && strcmp (name, "_GLOBAL_OFFSET_TABLE_") !=0 ) - ERROR (gettext ("\ -section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can be used with %s\n"), - idx, section_name (ebl, ehdr, idx), cnt, - ebl_reloc_type_name (ebl, GELF_R_SYM (rela->r_info), - buf, sizeof (buf))); - } - - if (reldyn) - { - // XXX TODO Check .rel.dyn section addresses. - } - else if (!known_broken) - { - if (destshdr != NULL - && (rela->r_offset - destshdr->sh_addr) >= destshdr->sh_size) - ERROR (gettext ("\ -section [%2d] '%s': relocation %zu: offset out of bounds\n"), - idx, section_name (ebl, ehdr, idx), cnt); - } - } -} - - -static void -check_rel (Ebl *ebl, GElf_Ehdr *ehdr, int idx) -{ - Elf_Scn *scn; - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - Elf_Data *data; - GElf_Shdr destshdr_mem; - GElf_Shdr *destshdr = NULL; - size_t cnt; - bool reldyn = false; - bool known_broken = gnuld; - - scn = elf_getscn (ebl->elf, idx); - shdr = gelf_getshdr (scn, &shdr_mem); - if (shdr == NULL) - return; - data = elf_getdata (scn, NULL); - if (data == NULL) - { - ERROR (gettext ("section [%2d] '%s': cannot get section data\n"), - idx, section_name (ebl, ehdr, idx)); - return; - } - - /* Check whether the link to the section we relocate is reasonable. */ - if (shdr->sh_info >= shnum) - ERROR (gettext ("section [%2d] '%s': invalid destination section index\n"), - idx, section_name (ebl, ehdr, idx)); - else - { - destshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_info), - &destshdr_mem); - if (destshdr != NULL) - { - if (destshdr->sh_type != SHT_PROGBITS - && destshdr->sh_type != SHT_NOBITS) - { - reldyn = is_rel_dyn (ebl, ehdr, idx, shdr, false); - if (!reldyn) - ERROR (gettext ("\ -section [%2d] '%s': invalid destination section type\n"), - idx, section_name (ebl, ehdr, idx)); - else - { - /* There is no standard, but we require that .rela.dyn - sections have a sh_info value of zero. */ - if (shdr->sh_info != 0) - ERROR (gettext ("\ -section [%2d] '%s': sh_info should be zero\n"), - idx, section_name (ebl, ehdr, idx)); - } - } - - if ((destshdr->sh_flags & (SHF_MERGE | SHF_STRINGS)) != 0) - ERROR (gettext ("\ -section [%2d] '%s': no relocations for merge-able sections possible\n"), - idx, section_name (ebl, ehdr, idx)); - } - } - - if (shdr->sh_entsize != gelf_fsize (ebl->elf, ELF_T_REL, 1, EV_CURRENT)) - ERROR (gettext ("\ -section [%2d] '%s': section entry size does not match ElfXX_Rel\n"), - idx, section_name (ebl, ehdr, idx)); - - Elf_Scn *symscn = elf_getscn (ebl->elf, shdr->sh_link); - GElf_Shdr symshdr_mem; - GElf_Shdr *symshdr = gelf_getshdr (symscn, &symshdr_mem); - Elf_Data *symdata = elf_getdata (symscn, NULL); - - for (cnt = 0; cnt < shdr->sh_size / shdr->sh_entsize; ++cnt) - { - GElf_Rel rel_mem; - GElf_Rel *rel; - - rel = gelf_getrel (data, cnt, &rel_mem); - if (rel == NULL) - { - ERROR (gettext ("\ -section [%2d] '%s': cannot get relocation %zu: %s\n"), - idx, section_name (ebl, ehdr, idx), cnt, elf_errmsg (-1)); - continue; - } - - if (!ebl_reloc_type_check (ebl, GELF_R_TYPE (rel->r_info))) - ERROR (gettext ("section [%2d] '%s': relocation %zu: invalid type\n"), - idx, section_name (ebl, ehdr, idx), cnt); - else if (!ebl_reloc_valid_use (ebl, GELF_R_TYPE (rel->r_info))) - ERROR (gettext ("\ -section [%2d] '%s': relocation %zu: relocation type invalid for the file type\n"), - idx, section_name (ebl, ehdr, idx), cnt); - - if (symshdr != NULL - && ((GELF_R_SYM (rel->r_info) + 1) - * gelf_fsize (ebl->elf, ELF_T_SYM, 1, EV_CURRENT) - > symshdr->sh_size)) - ERROR (gettext ("\ -section [%2d] '%s': relocation %zu: invalid symbol index\n"), - idx, section_name (ebl, ehdr, idx), cnt); - - if (ebl_gotpc_reloc_check (ebl, GELF_R_TYPE (rel->r_info))) - { - const char *name; - char buf[64]; - GElf_Sym sym_mem; - GElf_Sym *sym = gelf_getsym (symdata, GELF_R_SYM (rel->r_info), - &sym_mem); - if (sym != NULL - /* Get the name for the symbol. */ - && (name = elf_strptr (ebl->elf, symshdr->sh_link, sym->st_name)) - && strcmp (name, "_GLOBAL_OFFSET_TABLE_") !=0 ) - ERROR (gettext ("\ -section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can be used with %s\n"), - idx, section_name (ebl, ehdr, idx), cnt, - ebl_reloc_type_name (ebl, GELF_R_SYM (rel->r_info), - buf, sizeof (buf))); - } - - if (reldyn) - { - // XXX TODO Check .rel.dyn section addresses. - } - else if (!known_broken) - { - if (destshdr != NULL - && GELF_R_TYPE (rel->r_info) != 0 - && (rel->r_offset - destshdr->sh_addr) >= destshdr->sh_size) - ERROR (gettext ("\ -section [%2d] '%s': relocation %zu: offset out of bounds\n"), - idx, section_name (ebl, ehdr, idx), cnt); - } - } -} - - -/* Number of dynamic sections. */ -static int ndynamic; - - -static void -check_dynamic (Ebl *ebl, GElf_Ehdr *ehdr, int idx) -{ - Elf_Scn *scn; - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - Elf_Data *data; - GElf_Shdr strshdr_mem; - GElf_Shdr *strshdr; - size_t cnt; - static const bool dependencies[DT_NUM][DT_NUM] = - { - [DT_NEEDED] = { [DT_STRTAB] = true }, - [DT_PLTRELSZ] = { [DT_JMPREL] = true }, - [DT_HASH] = { [DT_SYMTAB] = true }, - [DT_STRTAB] = { [DT_STRSZ] = true }, - [DT_SYMTAB] = { [DT_STRTAB] = true, [DT_HASH] = true, - [DT_SYMENT] = true }, - [DT_RELA] = { [DT_RELASZ] = true, [DT_RELAENT] = true }, - [DT_RELASZ] = { [DT_RELA] = true }, - [DT_RELAENT] = { [DT_RELA] = true }, - [DT_STRSZ] = { [DT_STRTAB] = true }, - [DT_SYMENT] = { [DT_SYMTAB] = true }, - [DT_SONAME] = { [DT_STRTAB] = true }, - [DT_RPATH] = { [DT_STRTAB] = true }, - [DT_REL] = { [DT_RELSZ] = true, [DT_RELENT] = true }, - [DT_RELSZ] = { [DT_REL] = true }, - [DT_RELENT] = { [DT_REL] = true }, - [DT_JMPREL] = { [DT_PLTRELSZ] = true, [DT_PLTREL] = true }, - [DT_RUNPATH] = { [DT_STRTAB] = true }, - [DT_PLTREL] = { [DT_JMPREL] = true }, - [DT_PLTRELSZ] = { [DT_JMPREL] = true } - }; - bool has_dt[DT_NUM]; - static const bool level2[DT_NUM] = - { - [DT_RPATH] = true, - [DT_SYMBOLIC] = true, - [DT_TEXTREL] = true, - [DT_BIND_NOW] = true - }; - static const bool mandatory[DT_NUM] = - { - [DT_NULL] = true, - [DT_HASH] = true, - [DT_STRTAB] = true, - [DT_SYMTAB] = true, - [DT_STRSZ] = true, - [DT_SYMENT] = true - }; - GElf_Addr reladdr = 0; - GElf_Word relsz = 0; - GElf_Addr pltreladdr = 0; - GElf_Word pltrelsz = 0; - - memset (has_dt, '\0', sizeof (has_dt)); - - if (++ndynamic == 2) - ERROR (gettext ("more than one dynamic section present\n")); - - scn = elf_getscn (ebl->elf, idx); - shdr = gelf_getshdr (scn, &shdr_mem); - if (shdr == NULL) - return; - data = elf_getdata (scn, NULL); - if (data == NULL) - { - ERROR (gettext ("section [%2d] '%s': cannot get section data\n"), - idx, section_name (ebl, ehdr, idx)); - return; - } - - strshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), &strshdr_mem); - if (strshdr != NULL && strshdr->sh_type != SHT_STRTAB) - ERROR (gettext ("\ -section [%2d] '%s': referenced as string table for section [%2d] '%s' but type is not SHT_STRTAB\n"), - shdr->sh_link, section_name (ebl, ehdr, shdr->sh_link), - idx, section_name (ebl, ehdr, idx)); - - if (shdr->sh_entsize != gelf_fsize (ebl->elf, ELF_T_DYN, 1, EV_CURRENT)) - ERROR (gettext ("\ -section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"), - idx, section_name (ebl, ehdr, idx)); - - if (shdr->sh_info != 0) - ERROR (gettext ("section [%2d] '%s': sh_info not zero\n"), - idx, section_name (ebl, ehdr, idx)); - - bool non_null_warned = false; - for (cnt = 0; cnt < shdr->sh_size / shdr->sh_entsize; ++cnt) - { - GElf_Dyn dyn_mem; - GElf_Dyn *dyn; - - dyn = gelf_getdyn (data, cnt, &dyn_mem); - if (dyn == NULL) - { - ERROR (gettext ("\ -section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"), - idx, section_name (ebl, ehdr, idx), cnt, elf_errmsg (-1)); - continue; - } - - if (has_dt[DT_NULL] && dyn->d_tag != DT_NULL && ! non_null_warned) - { - ERROR (gettext ("\ -section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"), - idx, section_name (ebl, ehdr, idx)); - non_null_warned = true; - } - - if (!ebl_dynamic_tag_check (ebl, dyn->d_tag)) - ERROR (gettext ("section [%2d] '%s': entry %zu: unknown tag\n"), - idx, section_name (ebl, ehdr, idx), cnt); - - if (dyn->d_tag < DT_NUM) - { - if (has_dt[dyn->d_tag] - && dyn->d_tag != DT_NEEDED - && dyn->d_tag != DT_NULL - && dyn->d_tag != DT_POSFLAG_1) - { - char buf[50]; - ERROR (gettext ("\ -section [%2d] '%s': entry %zu: more than one entry with tag %s\n"), - idx, section_name (ebl, ehdr, idx), cnt, - ebl_dynamic_tag_name (ebl, dyn->d_tag, - buf, sizeof (buf))); - } - - if (be_strict && level2[dyn->d_tag]) - { - char buf[50]; - ERROR (gettext ("\ -section [%2d] '%s': entry %zu: level 2 tag %s used\n"), - idx, section_name (ebl, ehdr, idx), cnt, - ebl_dynamic_tag_name (ebl, dyn->d_tag, - buf, sizeof (buf))); - } - - has_dt[dyn->d_tag] = true; - } - - if (dyn->d_tag == DT_PLTREL && dyn->d_un.d_val != DT_REL - && dyn->d_un.d_val != DT_RELA) - ERROR (gettext ("\ -section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"), - idx, section_name (ebl, ehdr, idx), cnt); - - if (dyn->d_tag == DT_REL) - reladdr = dyn->d_un.d_ptr; - if (dyn->d_tag == DT_RELSZ) - relsz = dyn->d_un.d_val; - if (dyn->d_tag == DT_JMPREL) - pltreladdr = dyn->d_un.d_ptr; - if (dyn->d_tag == DT_PLTRELSZ) - pltrelsz = dyn->d_un.d_val; - } - - for (cnt = 1; cnt < DT_NUM; ++cnt) - if (has_dt[cnt]) - { - int inner; - - for (inner = 0; inner < DT_NUM; ++inner) - if (dependencies[cnt][inner] && ! has_dt[inner]) - { - char buf1[50]; - char buf2[50]; - - ERROR (gettext ("\ -section [%2d] '%s': contains %s entry but not %s\n"), - idx, section_name (ebl, ehdr, idx), - ebl_dynamic_tag_name (ebl, cnt, buf1, sizeof (buf1)), - ebl_dynamic_tag_name (ebl, inner, buf2, sizeof (buf2))); - } - } - else - { - if (mandatory[cnt]) - { - char buf[50]; - ERROR (gettext ("\ -section [%2d] '%s': mandatory tag %s not present\n"), - idx, section_name (ebl, ehdr, idx), - ebl_dynamic_tag_name (ebl, cnt, buf, sizeof (buf))); - } - } - - /* Check the rel/rela tags. At least one group must be available. */ - if ((has_dt[DT_RELA] || has_dt[DT_RELASZ] || has_dt[DT_RELAENT]) - && (!has_dt[DT_RELA] || !has_dt[DT_RELASZ] || !has_dt[DT_RELAENT])) - ERROR (gettext ("\ -section [%2d] '%s': not all of %s, %s, and %s are present\n"), - idx, section_name (ebl, ehdr, idx), - "DT_RELA", "DT_RELASZ", "DT_RELAENT"); - - if ((has_dt[DT_REL] || has_dt[DT_RELSZ] || has_dt[DT_RELENT]) - && (!has_dt[DT_REL] || !has_dt[DT_RELSZ] || !has_dt[DT_RELENT])) - ERROR (gettext ("\ -section [%2d] '%s': not all of %s, %s, and %s are present\n"), - idx, section_name (ebl, ehdr, idx), - "DT_REL", "DT_RELSZ", "DT_RELENT"); -} - - -static void -check_symtab_shndx (Ebl *ebl, GElf_Ehdr *ehdr, int idx) -{ - Elf_Scn *scn; - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - GElf_Shdr symshdr_mem; - GElf_Shdr *symshdr; - Elf_Scn *symscn; - size_t cnt; - Elf_Data *data; - Elf_Data *symdata; - - scn = elf_getscn (ebl->elf, idx); - shdr = gelf_getshdr (scn, &shdr_mem); - if (shdr == NULL) - return; - - symscn = elf_getscn (ebl->elf, shdr->sh_link); - symshdr = gelf_getshdr (symscn, &symshdr_mem); - if (symshdr != NULL && symshdr->sh_type != SHT_SYMTAB) - ERROR (gettext ("\ -section [%2d] '%s': extended section index section not for symbol table\n"), - idx, section_name (ebl, ehdr, idx)); - symdata = elf_getdata (symscn, NULL); - if (symdata == NULL) - ERROR (gettext ("cannot get data for symbol section\n")); - - if (shdr->sh_entsize != sizeof (Elf32_Word)) - ERROR (gettext ("\ -section [%2d] '%s': entry size does not match Elf32_Word\n"), - idx, section_name (ebl, ehdr, idx)); - - if (symshdr != NULL - && (shdr->sh_size / shdr->sh_entsize - < symshdr->sh_size / symshdr->sh_entsize)) - ERROR (gettext ("\ -section [%2d] '%s': extended index table too small for symbol table\n"), - idx, section_name (ebl, ehdr, idx)); - - if (shdr->sh_info != 0) - ERROR (gettext ("section [%2d] '%s': sh_info not zero\n"), - idx, section_name (ebl, ehdr, idx)); - - for (cnt = idx + 1; cnt < shnum; ++cnt) - { - GElf_Shdr rshdr_mem; - GElf_Shdr *rshdr; - - rshdr = gelf_getshdr (elf_getscn (ebl->elf, cnt), &rshdr_mem); - if (rshdr != NULL && rshdr->sh_type == SHT_SYMTAB_SHNDX - && rshdr->sh_link == shdr->sh_link) - { - ERROR (gettext ("\ -section [%2d] '%s': extended section index in section [%2zu] '%s' refers to same symbol table\n"), - idx, section_name (ebl, ehdr, idx), - cnt, section_name (ebl, ehdr, cnt)); - break; - } - } - - data = elf_getdata (scn, NULL); - - if (*((Elf32_Word *) data->d_buf) != 0) - ERROR (gettext ("symbol 0 should have zero extended section index\n")); - - for (cnt = 1; cnt < data->d_size / sizeof (Elf32_Word); ++cnt) - { - Elf32_Word xndx = ((Elf32_Word *) data->d_buf)[cnt]; - - if (xndx != 0) - { - GElf_Sym sym_data; - GElf_Sym *sym = gelf_getsym (symdata, cnt, &sym_data); - if (sym == NULL) - { - ERROR (gettext ("cannot get data for symbol %zu\n"), cnt); - continue; - } - - if (sym->st_shndx != SHN_XINDEX) - ERROR (gettext ("\ -extended section index is %" PRIu32 " but symbol index is not XINDEX\n"), - (uint32_t) xndx); - } - } -} - - -static void -check_hash (Ebl *ebl, GElf_Ehdr *ehdr, int idx) -{ - Elf_Scn *scn; - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - Elf_Data *data; - Elf32_Word nbucket; - Elf32_Word nchain; - GElf_Shdr symshdr_mem; - GElf_Shdr *symshdr; - - scn = elf_getscn (ebl->elf, idx); - shdr = gelf_getshdr (scn, &shdr_mem); - if (shdr == NULL) - return; - data = elf_getdata (scn, NULL); - if (data == NULL) - { - ERROR (gettext ("section [%2d] '%s': cannot get section data\n"), - idx, section_name (ebl, ehdr, idx)); - return; - } - - symshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), &symshdr_mem); - if (symshdr != NULL && symshdr->sh_type != SHT_DYNSYM) - ERROR (gettext ("\ -section [%2d] '%s': hash table not for dynamic symbol table\n"), - idx, section_name (ebl, ehdr, idx)); - - if (shdr->sh_entsize != sizeof (Elf32_Word)) - ERROR (gettext ("\ -section [%2d] '%s': entry size does not match Elf32_Word\n"), - idx, section_name (ebl, ehdr, idx)); - - if ((shdr->sh_flags & SHF_ALLOC) == 0) - ERROR (gettext ("section [%2d] '%s': not marked to be allocated\n"), - idx, section_name (ebl, ehdr, idx)); - - if (shdr->sh_size < 2 * shdr->sh_entsize) - { - ERROR (gettext ("\ -section [%2d] '%s': hash table has not even room for nbucket and nchain\n"), - idx, section_name (ebl, ehdr, idx)); - return; - } - - nbucket = ((Elf32_Word *) data->d_buf)[0]; - nchain = ((Elf32_Word *) data->d_buf)[1]; - - if (shdr->sh_size < (2 + nbucket + nchain) * shdr->sh_entsize) - ERROR (gettext ("\ -section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"), - idx, section_name (ebl, ehdr, idx), (long int) shdr->sh_size, - (long int) ((2 + nbucket + nchain) * shdr->sh_entsize)); - - if (symshdr != NULL) - { - size_t symsize = symshdr->sh_size / symshdr->sh_entsize; - size_t cnt; - - if (nchain < symshdr->sh_size / symshdr->sh_entsize) - ERROR (gettext ("section [%2d] '%s': chain array not large enough\n"), - idx, section_name (ebl, ehdr, idx)); - - for (cnt = 2; cnt < 2 + nbucket; ++cnt) - if (((Elf32_Word *) data->d_buf)[cnt] >= symsize) - ERROR (gettext ("\ -section [%2d] '%s': hash bucket reference %zu out of bounds\n"), - idx, section_name (ebl, ehdr, idx), cnt - 2); - - for (; cnt < 2 + nbucket + nchain; ++cnt) - if (((Elf32_Word *) data->d_buf)[cnt] >= symsize) - ERROR (gettext ("\ -section [%2d] '%s': hash chain reference %zu out of bounds\n"), - idx, section_name (ebl, ehdr, idx), cnt - 2 - nbucket); - } -} - - -static void -check_null (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx) -{ -#define TEST(name, extra) \ - if (extra && shdr->sh_##name != 0) \ - ERROR (gettext ("section [%2d] '%s': nonzero sh_%s for NULL section\n"), \ - idx, section_name (ebl, ehdr, idx), #name) - - TEST (name, 1); - TEST (flags, 1); - TEST (addr, 1); - TEST (offset, 1); - TEST (size, idx != 0); - TEST (link, idx != 0); - TEST (info, 1); - TEST (addralign, 1); - TEST (entsize, 1); -} - - -static void -check_group (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx) -{ - if (ehdr->e_type != ET_REL) - { - ERROR (gettext ("\ -section [%2d] '%s': section groups only allowed in relocatable object files\n"), - idx, section_name (ebl, ehdr, idx)); - return; - } - - /* Check that sh_link is an index of a symbol table. */ - GElf_Shdr symshdr_mem; - GElf_Shdr *symshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), - &symshdr_mem); - if (symshdr == NULL) - ERROR (gettext ("section [%2d] '%s': cannot get symbol table: %s\n"), - idx, section_name (ebl, ehdr, idx), elf_errmsg (-1)); - else - { - if (symshdr->sh_type != SHT_SYMTAB) - ERROR (gettext ("\ -section [%2d] '%s': section reference in sh_link is no symbol table\n"), - idx, section_name (ebl, ehdr, idx)); - - if (shdr->sh_info >= symshdr->sh_size / gelf_fsize (ebl->elf, ELF_T_SYM, - 1, EV_CURRENT)) - ERROR (gettext ("\ -section [%2d] '%s': invalid symbol index in sh_info\n"), - idx, section_name (ebl, ehdr, idx)); - - if (shdr->sh_flags != 0) - ERROR (gettext ("section [%2d] '%s': sh_flags not zero\n"), - idx, section_name (ebl, ehdr, idx)); - - if (be_strict - && shdr->sh_entsize != elf32_fsize (ELF_T_WORD, 1, EV_CURRENT)) - ERROR (gettext ("section [%2d] '%s': sh_flags not set correctly\n"), - idx, section_name (ebl, ehdr, idx)); - } - - Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL); - if (data == NULL) - ERROR (gettext ("section [%2d] '%s': cannot get data: %s\n"), - idx, section_name (ebl, ehdr, idx), elf_errmsg (-1)); - else - { - size_t elsize = elf32_fsize (ELF_T_WORD, 1, EV_CURRENT); - size_t cnt; - Elf32_Word val; - - if (data->d_size % elsize != 0) - ERROR (gettext ("\ -section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"), - idx, section_name (ebl, ehdr, idx)); - - if (data->d_size < elsize) - ERROR (gettext ("\ -section [%2d] '%s': section group without flags word\n"), - idx, section_name (ebl, ehdr, idx)); - else if (be_strict) - { - if (data->d_size < 2 * elsize) - ERROR (gettext ("\ -section [%2d] '%s': section group without member\n"), - idx, section_name (ebl, ehdr, idx)); - else if (data->d_size < 3 * elsize) - ERROR (gettext ("\ -section [%2d] '%s': section group with only one member\n"), - idx, section_name (ebl, ehdr, idx)); - } - -#if ALLOW_UNALIGNED - val = *((Elf32_Word *) data->d_buf); -#else - memcpy (&val, data->d_buf, elsize); -#endif - if ((val & ~GRP_COMDAT) != 0) - ERROR (gettext ("section [%2d] '%s': unknown section group flags\n"), - idx, section_name (ebl, ehdr, idx)); - - for (cnt = elsize; cnt < data->d_size; cnt += elsize) - { -#if ALLOW_UNALIGNED - val = *((Elf32_Word *) ((char *) data->d_buf + cnt)); -#else - memcpy (&val, (char *) data->d_buf + cnt, elsize); -#endif - - if (val > shnum) - ERROR (gettext ("\ -section [%2d] '%s': section index %Zu out of range\n"), - idx, section_name (ebl, ehdr, idx), cnt / elsize); - else - { - GElf_Shdr refshdr_mem; - GElf_Shdr *refshdr; - - refshdr = gelf_getshdr (elf_getscn (ebl->elf, val), - &refshdr_mem); - if (refshdr == NULL) - ERROR (gettext ("\ -section [%2d] '%s': cannot get section header for element %zu: %s\n"), - idx, section_name (ebl, ehdr, idx), cnt / elsize, - elf_errmsg (-1)); - else - { - if (refshdr->sh_type == SHT_GROUP) - ERROR (gettext ("\ -section [%2d] '%s': section group contains another group [%2d] '%s'\n"), - idx, section_name (ebl, ehdr, idx), - val, section_name (ebl, ehdr, val)); - - if ((refshdr->sh_flags & SHF_GROUP) == 0) - ERROR (gettext ("\ -section [%2d] '%s': element %Zu references section [%2d] '%s' without SHF_GROUP flag set\n"), - idx, section_name (ebl, ehdr, idx), cnt / elsize, - val, section_name (ebl, ehdr, val)); - } - - if (++scnref[val] == 2) - ERROR (gettext ("\ -section [%2d] '%s' is contained in more than one section group\n"), - val, section_name (ebl, ehdr, val)); - } - } - } -} - - -static bool has_loadable_segment; -static bool has_interp_segment; - -static const struct -{ - const char *name; - size_t namelen; - GElf_Word type; - enum { unused, exact, atleast } attrflag; - GElf_Word attr; - GElf_Word attr2; -} special_sections[] = - { - /* See figure 4-14 in the gABI. */ - { ".bss", 5, SHT_NOBITS, exact, SHF_ALLOC | SHF_WRITE, 0 }, - { ".comment", 8, SHT_PROGBITS, exact, 0, 0 }, - { ".data", 6, SHT_PROGBITS, exact, SHF_ALLOC | SHF_WRITE, 0 }, - { ".data1", 7, SHT_PROGBITS, exact, SHF_ALLOC | SHF_WRITE, 0 }, - { ".debug", 7, SHT_PROGBITS, exact, 0, 0 }, - { ".dynamic", 9, SHT_DYNAMIC, atleast, SHF_ALLOC, SHF_WRITE }, - { ".dynstr", 8, SHT_STRTAB, exact, SHF_ALLOC, 0 }, - { ".dynsym", 8, SHT_DYNSYM, exact, SHF_ALLOC, 0 }, - { ".fini", 6, SHT_PROGBITS, exact, SHF_ALLOC | SHF_EXECINSTR, 0 }, - { ".fini_array", 12, SHT_FINI_ARRAY, exact, SHF_ALLOC | SHF_WRITE, 0 }, - { ".got", 5, SHT_PROGBITS, unused, 0, 0 }, // XXX more info? - { ".hash", 6, SHT_HASH, exact, SHF_ALLOC, 0 }, - { ".init", 6, SHT_PROGBITS, exact, SHF_ALLOC | SHF_EXECINSTR, 0 }, - { ".init_array", 12, SHT_INIT_ARRAY, exact, SHF_ALLOC | SHF_WRITE, 0 }, - { ".interp", 8, SHT_PROGBITS, atleast, 0, SHF_ALLOC }, // XXX more tests? - { ".line", 6, SHT_PROGBITS, exact, 0, 0 }, - { ".note", 6, SHT_NOTE, exact, 0, 0 }, - { ".plt", 5, SHT_PROGBITS, unused, 0, 0 }, // XXX more tests - { ".preinit_array", 15, SHT_PREINIT_ARRAY, exact, SHF_ALLOC | SHF_WRITE, 0 }, - { ".rela", 5, SHT_RELA, atleast, 0, SHF_ALLOC }, // XXX more tests - { ".rel", 4, SHT_REL, atleast, 0, SHF_ALLOC }, // XXX more tests - { ".rodata", 8, SHT_PROGBITS, exact, SHF_ALLOC, 0 }, - { ".rodata1", 9, SHT_PROGBITS, exact, SHF_ALLOC, 0 }, - { ".shstrtab", 10, SHT_STRTAB, exact, 0, 0 }, - { ".strtab", 8, SHT_STRTAB, atleast, 0, SHF_ALLOC }, // XXX more tests - { ".symtab", 8, SHT_SYMTAB, atleast, 0, SHF_ALLOC }, // XXX more tests - { ".symtab_shndx", 14, SHT_SYMTAB_SHNDX, atleast, 0, SHF_ALLOC }, // XXX more tests - { ".tbss", 6, SHT_NOBITS, exact, SHF_ALLOC | SHF_WRITE | SHF_TLS, 0 }, - { ".tdata", 7, SHT_PROGBITS, exact, SHF_ALLOC | SHF_WRITE | SHF_TLS, 0 }, - { ".tdata1", 8, SHT_PROGBITS, exact, SHF_ALLOC | SHF_WRITE | SHF_TLS, 0 }, - { ".text", 6, SHT_PROGBITS, exact, SHF_ALLOC | SHF_EXECINSTR, 0 } - }; -#define nspecial_sections \ - (sizeof (special_sections) / sizeof (special_sections[0])) - - -static const char * -section_flags_string (GElf_Word flags, char *buf, size_t len) -{ - static const struct - { - GElf_Word flag; - const char *name; - } known_flags[] = - { -#define NEWFLAG(name) { SHF_##name, #name } - NEWFLAG (WRITE), - NEWFLAG (ALLOC), - NEWFLAG (EXECINSTR), - NEWFLAG (MERGE), - NEWFLAG (STRINGS), - NEWFLAG (INFO_LINK), - NEWFLAG (LINK_ORDER), - NEWFLAG (OS_NONCONFORMING), - NEWFLAG (GROUP), - NEWFLAG (TLS) - }; -#undef NEWFLAG - const size_t nknown_flags = sizeof (known_flags) / sizeof (known_flags[0]); - - char *cp = buf; - size_t cnt; - - for (cnt = 0; cnt < nknown_flags; ++cnt) - if (flags & known_flags[cnt].flag) - { - if (cp != buf && len > 1) - { - *cp++ = '|'; - --len; - } - - size_t ncopy = MIN (len - 1, strlen (known_flags[cnt].name)); - cp = mempcpy (cp, known_flags[cnt].name, ncopy); - len -= ncopy; - - flags ^= known_flags[cnt].flag; - } - - if (flags != 0 || cp == buf) - snprintf (cp, len - 1, "%" PRIx64, (uint64_t) flags); - - *cp = '\0'; - - return buf; -} - - -static void -check_versym (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx) -{ - /* The number of elements in the version symbol table must be the - same as the number of symbols. */ - GElf_Shdr symshdr_mem; - GElf_Shdr *symshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), - &symshdr_mem); - if (symshdr == NULL) - /* The error has already been reported. */ - return; - - if (symshdr->sh_type != SHT_DYNSYM) - { - ERROR (gettext ("\ -section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no dynamic symbol table\n"), - idx, section_name (ebl, ehdr, idx), - shdr->sh_link, section_name (ebl, ehdr, shdr->sh_link)); - return; - } - - if (shdr->sh_size / shdr->sh_entsize - != symshdr->sh_size / symshdr->sh_entsize) - ERROR (gettext ("\ -section [%2d] '%s' has different number of entries than symbol table [%2d] '%s'\n"), - idx, section_name (ebl, ehdr, idx), - shdr->sh_link, section_name (ebl, ehdr, shdr->sh_link)); - - // XXX TODO A lot more tests - // check value of the fields. local symbols must have zero entries. - // nonlocal symbols refer to valid version. Check that version index - // in bound. -} - - -static void -check_sections (Ebl *ebl, GElf_Ehdr *ehdr) -{ - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - size_t cnt; - bool dot_interp_section = false; - - if (ehdr->e_shoff == 0) - /* No section header. */ - return; - - /* Allocate array to count references in section groups. */ - scnref = (int *) xcalloc (shnum, sizeof (int)); - - /* Check the zeroth section first. It must not have any contents - and the section header must contain nonzero value at most in the - sh_size and sh_link fields. */ - shdr = gelf_getshdr (elf_getscn (ebl->elf, 0), &shdr_mem); - if (shdr == NULL) - ERROR (gettext ("cannot get section header of zeroth section\n")); - else - { - if (shdr->sh_name != 0) - ERROR (gettext ("zeroth section has nonzero name\n")); - if (shdr->sh_type != 0) - ERROR (gettext ("zeroth section has nonzero type\n")); - if (shdr->sh_flags != 0) - ERROR (gettext ("zeroth section has nonzero flags\n")); - if (shdr->sh_addr != 0) - ERROR (gettext ("zeroth section has nonzero address\n")); - if (shdr->sh_offset != 0) - ERROR (gettext ("zeroth section has nonzero offset\n")); - if (shdr->sh_info != 0) - ERROR (gettext ("zeroth section has nonzero info field\n")); - if (shdr->sh_addralign != 0) - ERROR (gettext ("zeroth section has nonzero align value\n")); - if (shdr->sh_entsize != 0) - ERROR (gettext ("zeroth section has nonzero entry size value\n")); - - if (shdr->sh_size != 0 && ehdr->e_shnum != 0) - ERROR (gettext ("\ -zeroth section has nonzero size value while ELF header has nonzero shnum value\n")); - - if (shdr->sh_link != 0 && ehdr->e_shstrndx != SHN_XINDEX) - ERROR (gettext ("\ -zeroth section has nonzero link value while ELF header does not signal overflow in shstrndx\n")); - } - - for (cnt = 1; cnt < shnum; ++cnt) - { - Elf_Scn *scn; - - scn = elf_getscn (ebl->elf, cnt); - shdr = gelf_getshdr (scn, &shdr_mem); - if (shdr == NULL) - { - ERROR (gettext ("\ -cannot get section header for section [%2zu] '%s': %s\n"), - cnt, section_name (ebl, ehdr, cnt), elf_errmsg (-1)); - continue; - } - - const char *scnname = elf_strptr (ebl->elf, shstrndx, shdr->sh_name); - - if (scnname == NULL) - ERROR (gettext ("section [%2zu]: invalid name\n"), cnt); - else - { - /* Check whether it is one of the special sections defined in - the gABI. */ - size_t s; - for (s = 0; s < nspecial_sections; ++s) - if (strncmp (scnname, special_sections[s].name, - special_sections[s].namelen) == 0) - { - char stbuf1[100]; - char stbuf2[100]; - char stbuf3[100]; - - if (shdr->sh_type != special_sections[s].type) - ERROR (gettext ("\ -section [%2d] '%s' has wrong type: expected %s, is %s\n"), - (int) cnt, scnname, - ebl_section_type_name (ebl, special_sections[s].type, - stbuf1, sizeof (stbuf1)), - ebl_section_type_name (ebl, shdr->sh_type, - stbuf2, sizeof (stbuf2))); - - if (special_sections[s].attrflag == exact) - { - /* Except for the link order and group bit all the - other bits should match exactly. */ - if ((shdr->sh_flags & ~(SHF_LINK_ORDER | SHF_GROUP)) - != special_sections[s].attr) - ERROR (gettext ("\ -section [%2zu] '%s' has wrong flags: expected %s, is %s\n"), - cnt, scnname, - section_flags_string (special_sections[s].attr, - stbuf1, sizeof (stbuf1)), - section_flags_string (shdr->sh_flags - & ~SHF_LINK_ORDER, - stbuf2, sizeof (stbuf2))); - } - else if (special_sections[s].attrflag == atleast) - { - if ((shdr->sh_flags & special_sections[s].attr) - != special_sections[s].attr - || ((shdr->sh_flags & ~(SHF_LINK_ORDER | SHF_GROUP - | special_sections[s].attr - | special_sections[s].attr2)) - != 0)) - ERROR (gettext ("\ -section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"), - cnt, scnname, - section_flags_string (special_sections[s].attr, - stbuf1, sizeof (stbuf1)), - section_flags_string (special_sections[s].attr2, - stbuf2, sizeof (stbuf2)), - section_flags_string (shdr->sh_flags - & ~(SHF_LINK_ORDER - | SHF_GROUP), - stbuf3, sizeof (stbuf3))); - } - - if (strcmp (scnname, ".interp") == 0) - { - dot_interp_section = true; - - if (ehdr->e_type == ET_REL) - ERROR (gettext ("\ -section [%2zu] '%s' present in object file\n"), - cnt, scnname); - - if ((shdr->sh_flags & SHF_ALLOC) != 0 - && !has_loadable_segment) - ERROR (gettext ("\ -section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"), - cnt, scnname); - else if ((shdr->sh_flags & SHF_ALLOC) == 0 - && has_loadable_segment) - ERROR (gettext ("\ -section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable segments\n"), - cnt, scnname); - } - else - { - if (strcmp (scnname, ".symtab_shndx") == 0 - && ehdr->e_type != ET_REL) - ERROR (gettext ("\ -section [%2zu] '%s' is extension section index table in non-object file\n"), - cnt, scnname); - - /* These sections must have the SHF_ALLOC flag set iff - a loadable segment is available. - - .relxxx - .strtab - .symtab - .symtab_shndx - - Check that if there is a reference from the - loaded section these sections also have the - ALLOC flag set. */ -#if 0 - // XXX TODO - if ((shdr->sh_flags & SHF_ALLOC) != 0 - && !has_loadable_segment) - ERROR (gettext ("\ -section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"), - cnt, scnname); - else if ((shdr->sh_flags & SHF_ALLOC) == 0 - && has_loadable_segment) - ERROR (gettext ("\ -section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable segments\n"), - cnt, scnname); -#endif - } - - break; - } - } - - if (shdr->sh_entsize != 0 && shdr->sh_size % shdr->sh_entsize) - ERROR (gettext ("\ -section [%2zu] '%s': size not multiple of entry size\n"), - cnt, section_name (ebl, ehdr, cnt)); - - if (elf_strptr (ebl->elf, shstrndx, shdr->sh_name) == NULL) - ERROR (gettext ("cannot get section header\n")); - - if (shdr->sh_type >= SHT_NUM - && shdr->sh_type != SHT_GNU_LIBLIST - && shdr->sh_type != SHT_CHECKSUM - && shdr->sh_type != SHT_GNU_verdef - && shdr->sh_type != SHT_GNU_verneed - && shdr->sh_type != SHT_GNU_versym) - ERROR (gettext ("unsupported section type %d\n"), (int) shdr->sh_type); - -#define ALL_SH_FLAGS (SHF_WRITE | SHF_ALLOC | SHF_EXECINSTR | SHF_MERGE \ - | SHF_STRINGS | SHF_INFO_LINK | SHF_LINK_ORDER \ - | SHF_OS_NONCONFORMING | SHF_GROUP | SHF_TLS) - if (shdr->sh_flags & ~ALL_SH_FLAGS) - ERROR (gettext ("section [%2zu] '%s' contain unknown flag(s) %d\n"), - cnt, section_name (ebl, ehdr, cnt), - (int) shdr->sh_flags & ~ALL_SH_FLAGS); - else if (shdr->sh_flags & SHF_TLS) - { - // XXX Correct? - if (shdr->sh_addr != 0 && !gnuld) - ERROR (gettext ("\ -section [%2zu] '%s': thread-local data sections address not zero\n"), - cnt, section_name (ebl, ehdr, cnt)); - - // XXX TODO more tests!? - } - - if (shdr->sh_link >= shnum) - ERROR (gettext ("\ -section [%2zu] '%s': invalid section reference in link value\n"), - cnt, section_name (ebl, ehdr, cnt)); - - if (SH_INFO_LINK_P (shdr) && shdr->sh_info >= shnum) - ERROR (gettext ("\ -section [%2zu] '%s': invalid section reference in info value\n"), - cnt, section_name (ebl, ehdr, cnt)); - - if ((shdr->sh_flags & SHF_MERGE) == 0 - && (shdr->sh_flags & SHF_STRINGS) != 0 - && be_strict) - ERROR (gettext ("\ -section [%2zu] '%s': strings flag set without merge flag\n"), - cnt, section_name (ebl, ehdr, cnt)); - - if ((shdr->sh_flags & SHF_MERGE) != 0 && shdr->sh_entsize == 0) - ERROR (gettext ("\ -section [%2zu] '%s': merge flag set but entry size is zero\n"), - cnt, section_name (ebl, ehdr, cnt)); - - if (shdr->sh_flags & SHF_GROUP) - check_scn_group (ebl, ehdr, cnt); - - if (ehdr->e_type != ET_REL && (shdr->sh_flags & SHF_ALLOC) != 0) - { - /* Make sure the section is contained in a loaded segment - and that the initialization part matches NOBITS sections. */ - int pcnt; - GElf_Phdr phdr_mem; - GElf_Phdr *phdr; - - for (pcnt = 0; pcnt < ehdr->e_phnum; ++pcnt) - if ((phdr = gelf_getphdr (ebl->elf, pcnt, &phdr_mem)) != NULL - && ((phdr->p_type == PT_LOAD - && (shdr->sh_flags & SHF_TLS) == 0) - || (phdr->p_type == PT_TLS - && (shdr->sh_flags & SHF_TLS) != 0)) - && phdr->p_offset <= shdr->sh_offset - && phdr->p_offset + phdr->p_memsz > shdr->sh_offset) - { - /* Found the segment. */ - if (phdr->p_offset + phdr->p_memsz - < shdr->sh_offset + shdr->sh_size) - ERROR (gettext ("\ -section [%2zu] '%s' not fully contained in segment of program header entry %d\n"), - cnt, section_name (ebl, ehdr, cnt), pcnt); - - if (shdr->sh_type == SHT_NOBITS) - { - if (shdr->sh_offset < phdr->p_offset + phdr->p_filesz) - ERROR (gettext ("\ -section [%2zu] '%s' has type NOBITS but is read from the file in segment of program header entry %d\n"), - cnt, section_name (ebl, ehdr, cnt), pcnt); - } - else - { - if (shdr->sh_offset >= phdr->p_offset + phdr->p_filesz) - ERROR (gettext ("\ -section [%2zu] '%s' has not type NOBITS but is not read from the file in segment of program header entry %d\n"), - cnt, section_name (ebl, ehdr, cnt), pcnt); - } - - break; - } - - if (pcnt == ehdr->e_phnum) - ERROR (gettext ("\ -section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"), - cnt, section_name (ebl, ehdr, cnt)); - } - - if (cnt == shstrndx && shdr->sh_type != SHT_STRTAB) - ERROR (gettext ("\ -section [%2zu] '%s': ELF header says this is the section header string table but type is not SHT_TYPE\n"), - cnt, section_name (ebl, ehdr, cnt)); - - switch (shdr->sh_type) - { - case SHT_SYMTAB: - case SHT_DYNSYM: - check_symtab (ebl, ehdr, cnt); - break; - - case SHT_RELA: - check_rela (ebl, ehdr, cnt); - break; - - case SHT_REL: - check_rel (ebl, ehdr, cnt); - break; - - case SHT_DYNAMIC: - check_dynamic (ebl, ehdr, cnt); - break; - - case SHT_SYMTAB_SHNDX: - check_symtab_shndx (ebl, ehdr, cnt); - break; - - case SHT_HASH: - check_hash (ebl, ehdr, cnt); - break; - - case SHT_NULL: - check_null (ebl, ehdr, shdr, cnt); - break; - - case SHT_GROUP: - check_group (ebl, ehdr, shdr, cnt); - break; - - case SHT_GNU_versym: - check_versym (ebl, ehdr, shdr, cnt); - break; - - default: - /* Nothing. */ - break; - } - } - - if (has_interp_segment && !dot_interp_section) - ERROR (gettext ("INTERP program header entry but no .interp section\n")); - - free (scnref); -} - - -static void -check_note (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Phdr *phdr, int cnt) -{ - if (ehdr->e_type != ET_CORE && ehdr->e_type != ET_REL - && ehdr->e_type != ET_EXEC && ehdr->e_type != ET_DYN) - ERROR (gettext ("\ -phdr[%d]: no note entries defined for the type of file\n"), - cnt); - - char *notemem = gelf_rawchunk (ebl->elf, phdr->p_offset, phdr->p_filesz); - - /* ELF64 files often use note section entries in the 32-bit format. - The p_align field is set to 8 in case the 64-bit format is used. - In case the p_align value is 0 or 4 the 32-bit format is - used. */ - GElf_Xword align = phdr->p_align == 0 || phdr->p_align == 4 ? 4 : 8; -#define ALIGNED_LEN(len) (((len) + align - 1) & ~(align - 1)) - - GElf_Xword idx = 0; - while (idx < phdr->p_filesz) - { - uint64_t namesz; - uint64_t descsz; - uint64_t type; - uint32_t namesz32; - uint32_t descsz32; - - if (align == 4) - { - uint32_t *ptr = (uint32_t *) (notemem + idx); - - if ((__BYTE_ORDER == __LITTLE_ENDIAN - && ehdr->e_ident[EI_DATA] == ELFDATA2MSB) - || (__BYTE_ORDER == __BIG_ENDIAN - && ehdr->e_ident[EI_DATA] == ELFDATA2LSB)) - { - namesz32 = namesz = bswap_32 (*ptr); - ++ptr; - descsz32 = descsz = bswap_32 (*ptr); - ++ptr; - type = bswap_32 (*ptr); - } - else - { - namesz32 = namesz = *ptr++; - descsz32 = descsz = *ptr++; - type = *ptr; - } - } - else - { - uint64_t *ptr = (uint64_t *) (notemem + idx); - uint32_t *ptr32 = (uint32_t *) (notemem + idx); - - if ((__BYTE_ORDER == __LITTLE_ENDIAN - && ehdr->e_ident[EI_DATA] == ELFDATA2MSB) - || (__BYTE_ORDER == __BIG_ENDIAN - && ehdr->e_ident[EI_DATA] == ELFDATA2LSB)) - { - namesz = bswap_64 (*ptr); - ++ptr; - descsz = bswap_64 (*ptr); - ++ptr; - type = bswap_64 (*ptr); - - namesz32 = bswap_32 (*ptr32); - ++ptr32; - descsz32 = bswap_32 (*ptr32); - } - else - { - namesz = *ptr++; - descsz = *ptr++; - type = *ptr; - - namesz32 = *ptr32++; - descsz32 = *ptr32; - } - } - - if (idx + 3 * align > phdr->p_filesz - || (idx + 3 * align + ALIGNED_LEN (namesz) + ALIGNED_LEN (descsz) - > phdr->p_filesz)) - { - if (ehdr->e_ident[EI_CLASS] == ELFCLASS64 - && idx + 3 * 4 <= phdr->p_filesz - && (idx + 3 * 4 + ALIGNED_LEN (namesz32) + ALIGNED_LEN (descsz32) - <= phdr->p_filesz)) - ERROR (gettext ("\ -phdr[%d]: note entries probably in form of a 32-bit ELF file\n"), cnt); - else - ERROR (gettext ("phdr[%d]: extra %zu bytes after last note\n"), - cnt, (size_t) (phdr->p_filesz - idx)); - break; - } - - /* Make sure it is one of the note types we know about. */ - if (ehdr->e_type == ET_CORE) - { - switch (type) - { - case NT_PRSTATUS: - case NT_FPREGSET: - case NT_PRPSINFO: - case NT_TASKSTRUCT: /* NT_PRXREG on Solaris. */ - case NT_PLATFORM: - case NT_AUXV: - case NT_GWINDOWS: - case NT_ASRS: - case NT_PSTATUS: - case NT_PSINFO: - case NT_PRCRED: - case NT_UTSNAME: - case NT_LWPSTATUS: - case NT_LWPSINFO: - case NT_PRFPXREG: - /* Known type. */ - break; - - default: - ERROR (gettext ("\ -phdr[%d]: unknown core file note type %" PRIu64 " at offset %" PRIu64 "\n"), - cnt, type, idx); - } - } - else - { - if (type != NT_VERSION) - ERROR (gettext ("\ -phdr[%d]: unknown object file note type %" PRIu64 " at offset %" PRIu64 "\n"), - cnt, type, idx); - } - - /* Move to the next entry. */ - idx += 3 * align + ALIGNED_LEN (namesz) + ALIGNED_LEN (descsz); - - } - - gelf_freechunk (ebl->elf, notemem); -} - - -static void -check_program_header (Ebl *ebl, GElf_Ehdr *ehdr) -{ - if (ehdr->e_phoff == 0) - return; - - if (ehdr->e_type != ET_EXEC && ehdr->e_type != ET_DYN - && ehdr->e_type != ET_CORE) - ERROR (gettext ("\ -only executables, shared objects, and core files can have program headers\n")); - - int num_pt_interp = 0; - int num_pt_tls = 0; - int num_pt_relro = 0; - - for (int cnt = 0; cnt < ehdr->e_phnum; ++cnt) - { - GElf_Phdr phdr_mem; - GElf_Phdr *phdr; - - phdr = gelf_getphdr (ebl->elf, cnt, &phdr_mem); - if (phdr == NULL) - { - ERROR (gettext ("cannot get program header entry %d: %s\n"), - cnt, elf_errmsg (-1)); - continue; - } - - if (phdr->p_type >= PT_NUM && phdr->p_type != PT_GNU_EH_FRAME - && phdr->p_type != PT_GNU_STACK) - ERROR (gettext ("\ -program header entry %d: unknown program header entry type\n"), - cnt); - - if (phdr->p_type == PT_LOAD) - has_loadable_segment = true; - else if (phdr->p_type == PT_INTERP) - { - if (++num_pt_interp != 1) - { - if (num_pt_interp == 2) - ERROR (gettext ("\ -more than one INTERP entry in program header\n")); - } - has_interp_segment = true; - } - else if (phdr->p_type == PT_TLS) - { - if (++num_pt_tls == 2) - ERROR (gettext ("more than one TLS entry in program header\n")); - } - else if (phdr->p_type == PT_NOTE) - check_note (ebl, ehdr, phdr, cnt); - else if (phdr->p_type == PT_DYNAMIC - && ehdr->e_type == ET_EXEC && ! has_interp_segment) - ERROR (gettext ("static executable cannot have dynamic sections\n")); - else if (phdr->p_type == PT_GNU_RELRO) - { - if (++num_pt_relro == 2) - ERROR (gettext ("\ -more than one GNU_RELRO entry in program header\n")); - else - { - /* Check that the region is in a writable segment. */ - int inner; - for (inner = 0; inner < ehdr->e_phnum; ++inner) - { - GElf_Phdr phdr2_mem; - GElf_Phdr *phdr2; - - phdr2 = gelf_getphdr (ebl->elf, cnt, &phdr2_mem); - if (phdr2 == NULL) - continue; - - if (phdr2->p_type == PT_LOAD - && phdr->p_vaddr >= phdr2->p_vaddr - && (phdr->p_vaddr + phdr->p_memsz - <= phdr2->p_vaddr + phdr2->p_memsz)) - { - if ((phdr2->p_flags & PF_W) == 0) - ERROR (gettext ("\ -loadable segment GNU_RELRO applies to is not writable\n")); - if ((phdr2->p_flags & PF_X) != 0) - ERROR (gettext ("\ -loadable segment GNU_RELRO applies to is executable\n")); - break; - } - } - - if (inner >= ehdr->e_phnum) - ERROR (gettext ("\ -GNU_RELRO segment not contained in a loaded segment\n")); - } - } - - if (phdr->p_filesz > phdr->p_memsz) - ERROR (gettext ("\ -program header entry %d: file size greater than memory size\n"), - cnt); - - if (phdr->p_align > 1) - { - if (!powerof2 (phdr->p_align)) - ERROR (gettext ("\ -program header entry %d: alignment not a power of 2\n"), cnt); - else if ((phdr->p_vaddr - phdr->p_offset) % phdr->p_align != 0) - ERROR (gettext ("\ -program header entry %d: file offset and virtual address not module of alignment\n"), cnt); - } - } -} - - -/* Process one file. */ -static void -process_elf_file (Elf *elf, const char *prefix, const char *suffix, - const char *fname, size_t size, bool only_one) -{ - /* Reset variables. */ - ndynamic = 0; - - GElf_Ehdr ehdr_mem; - GElf_Ehdr *ehdr = gelf_getehdr (elf, &ehdr_mem); - Ebl *ebl; - - /* Print the file name. */ - if (!only_one) - { - if (prefix != NULL) - printf ("\n%s(%s)%s:\n", prefix, fname, suffix); - else - printf ("\n%s:\n", fname); - } - - if (ehdr == NULL) - { - ERROR (gettext ("cannot read ELF header: %s\n"), elf_errmsg (-1)); - return; - } - - ebl = ebl_openbackend (elf); - /* If there is no appropriate backend library we cannot test - architecture and OS specific features. Any encountered extension - is an error. */ - - /* Go straight by the gABI, check all the parts in turn. */ - check_elf_header (ebl, ehdr, size); - - /* Check the program header. */ - check_program_header (ebl, ehdr); - - /* Next the section headers. It is OK if there are no section - headers at all. */ - check_sections (ebl, ehdr); - - /* Free the resources. */ - ebl_closebackend (ebl); -} diff --git a/src/i386_ld.c b/src/i386_ld.c deleted file mode 100644 index 28304ca0..00000000 --- a/src/i386_ld.c +++ /dev/null @@ -1,891 +0,0 @@ -/* Copyright (C) 2001, 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <error.h> -#include <libintl.h> -#include <stdlib.h> -#include <string.h> - -// XXX For debugging -#include <stdio.h> - -#include <system.h> -#include "ld.h" -#include "list.h" -/* x86 is little endian. */ -#define UNALIGNED_ACCESS_CLASS LITTLE_ENDIAN -#include "unaligned.h" -#include "xelf.h" - - -/* The old callbacks. */ -static int (*old_open_outfile) (struct ld_state *, int, int, int); - - -static int -elf_i386_open_outfile (struct ld_state *statep, int machine, int klass, - int data) -{ - /* This backend only handles 32-bit object files. */ - /* XXX For now just use the generic backend. */ - return old_open_outfile (statep, EM_386, ELFCLASS32, ELFDATA2LSB); -} - - -/* Process relocations for the output in a relocatable file. This - only means adjusting offset and symbol indices. */ -static void -elf_i386_relocate_section (struct ld_state *statep, Elf_Scn *outscn, - struct scninfo *firstp, - const Elf32_Word *dblindirect) -{ - struct scninfo *runp; - Elf_Data *data; - - /* Iterate over all the input sections. Appropriate data buffers in the - output sections were already created. I get them iteratively, too. */ - runp = firstp; - data = NULL; - do - { - Elf_Data *reltgtdata; - Elf_Data *insymdata; - Elf_Data *inxndxdata = NULL; - size_t maxcnt; - size_t cnt; - const Elf32_Word *symindirect; - struct symbol **symref; - struct usedfiles *file = runp->fileinfo; - XElf_Shdr *shdr = &SCNINFO_SHDR (runp->shdr); - - /* Get the output section data buffer for this input section. */ - data = elf_getdata (outscn, data); - assert (data != NULL); - - /* Get the data for section in the input file this relocation - section is relocating. Since these buffers are reused in the - output modifying these buffers has the correct result. */ - reltgtdata = elf_getdata (file->scninfo[shdr->sh_info].scn, NULL); - - /* Get the data for the input section symbol table for this - relocation section. */ - insymdata = elf_getdata (file->scninfo[shdr->sh_link].scn, NULL); - assert (insymdata != NULL); - - /* And the extended section index table. */ - inxndxdata = runp->fileinfo->xndxdata; - - /* Number of relocations. */ - maxcnt = shdr->sh_size / shdr->sh_entsize; - - /* Array directing local symbol table offsets to output symbol - table offsets. */ - symindirect = file->symindirect; - - /* References to the symbol records. */ - symref = file->symref; - - /* Iterate over all the relocations in the section. */ - for (cnt = 0; cnt < maxcnt; ++cnt) - { - XElf_Rel_vardef (rel); - Elf32_Word si; - XElf_Sym_vardef (sym); - Elf32_Word xndx; - - /* Get the relocation data itself. x86 uses Rel - relocations. In case we have to handle Rela as well the - whole loop probably should be duplicated. */ - xelf_getrel (data, cnt, rel); - assert (rel != NULL); - - /* Compute the symbol index in the output file. */ - si = symindirect[XELF_R_SYM (rel->r_info)]; - if (si == 0) - { - /* This happens if the symbol is locally undefined or - superceded by some other definition. */ - assert (symref[XELF_R_SYM (rel->r_info)] != NULL); - si = symref[XELF_R_SYM (rel->r_info)]->outsymidx; - } - /* Take reordering performed to sort the symbol table into - account. */ - si = dblindirect[si]; - - /* Get the symbol table entry. */ - xelf_getsymshndx (insymdata, inxndxdata, XELF_R_SYM (rel->r_info), - sym, xndx); - if (sym->st_shndx != SHN_XINDEX) - xndx = sym->st_shndx; - assert (xndx < SHN_LORESERVE || xndx > SHN_HIRESERVE); - - /* We fortunately don't have to do much. The relocations - mostly get only updates of the offset. Only is a - relocation referred to a section do we have to do - something. In this case the reference to the sections - has no direct equivalent since the part the input section - contributes need not start at the same offset as in the - input file. Therefore we have to adjust the addend which - in the case of Rel relocations is in the target section - itself. */ - if (XELF_ST_TYPE (sym->st_info) == STT_SECTION) - { - Elf32_Word toadd; - - /* We expect here on R_386_32 relocations. */ - assert (XELF_R_TYPE (rel->r_info) == R_386_32); - - /* Avoid writing to the section memory if this is - effectively a no-op since it might save a - copy-on-write operation. */ - toadd = file->scninfo[xndx].offset; - if (toadd != 0) - add_4ubyte_unaligned (reltgtdata->d_buf + rel->r_offset, - toadd); - } - - /* Adjust the offset for the position of the input section - content in the output section. */ - rel->r_offset += file->scninfo[shdr->sh_info].offset; - - /* And finally adjust the index of the symbol in the output - symbol table. */ - rel->r_info = XELF_R_INFO (si, XELF_R_TYPE (rel->r_info)); - - /* Store the result. */ - (void) xelf_update_rel (data, cnt, rel); - } - - runp = runp->next; - } - while (runp != firstp); -} - - -/* Each PLT entry has 16 bytes. We need one entry as overhead for - the code to set up the call into the runtime relocation. */ -#define PLT_ENTRY_SIZE 16 - -static void -elf_i386_initialize_plt (struct ld_state *statep, Elf_Scn *scn) -{ - Elf_Data *data; - XElf_Shdr_vardef (shdr); - - /* Change the entry size in the section header. */ - xelf_getshdr (scn, shdr); - assert (shdr != NULL); - shdr->sh_entsize = PLT_ENTRY_SIZE; - (void) xelf_update_shdr (scn, shdr); - - data = elf_newdata (scn); - if (data == NULL) - error (EXIT_FAILURE, 0, gettext ("cannot allocate PLT section: %s"), - elf_errmsg (-1)); - - /* We need one special PLT entry (performing the jump to the runtime - relocation routines) and one for each function we call in a DSO. */ - data->d_size = (1 + statep->nplt) * PLT_ENTRY_SIZE; - data->d_buf = xcalloc (1, data->d_size); - data->d_align = 8; - data->d_off = 0; - - statep->nplt_used = 1; -} - - -static void -elf_i386_initialize_pltrel (struct ld_state *statep, Elf_Scn *scn) -{ - Elf_Data *data; - - data = elf_newdata (scn); - if (data == NULL) - error (EXIT_FAILURE, 0, gettext ("cannot allocate PLTREL section: %s"), - elf_errmsg (-1)); - - /* One relocation per PLT entry. */ - data->d_size = statep->nplt * sizeof (Elf32_Rel); - data->d_buf = xcalloc (1, data->d_size); - data->d_type = ELF_T_REL; - data->d_align = 4; - data->d_off = 0; -} - - -static void -elf_i386_initialize_got (struct ld_state *statep, Elf_Scn *scn) -{ - Elf_Data *data; - - /* If we have no .plt we don't need the special entries we normally - create for it. The other contents is created later. */ - if (statep->ngot + statep->nplt == 0) - return; - - data = elf_newdata (scn); - if (data == NULL) - error (EXIT_FAILURE, 0, gettext ("cannot allocate GOT section: %s"), - elf_errmsg (-1)); - - /* We construct the .got section in pieces. Here we only add the data - structures which are used by the PLT. This includes three reserved - entries at the beginning (the first will contain a pointer to the - .dynamic section), and one word for each PLT entry. */ - data->d_size = (3 + statep->ngot + statep->nplt) * sizeof (Elf32_Addr); - data->d_buf = xcalloc (1, data->d_size); - data->d_align = sizeof (Elf32_Addr); - data->d_off = 0; -} - - -/* The first entry in an absolute procedure linkage table looks like - this. See the SVR4 ABI i386 supplement to see how this works. */ -static const unsigned char elf_i386_plt0_entry[PLT_ENTRY_SIZE] = -{ - 0xff, 0x35, /* pushl contents of address */ - 0, 0, 0, 0, /* replaced with address of .got + 4. */ - 0xff, 0x25, /* jmp indirect */ - 0, 0, 0, 0, /* replaced with address of .got + 8. */ - 0, 0, 0, 0 /* pad out to 16 bytes. */ -}; - -/* Type describing the first PLT entry in non-PIC. */ -struct plt0_entry -{ - /* First a 'push' of the second GOT entry. */ - unsigned char push_instr[2]; - uint32_t gotp4_addr; - /* Second, a 'jmp indirect' to the third GOT entry. */ - unsigned char jmp_instr[2]; - uint32_t gotp8_addr; - /* Padding. */ - unsigned char padding[4]; -} __attribute__ ((packed)); - -/* The first entry in a PIC procedure linkage table look like this. */ -static const unsigned char elf_i386_pic_plt0_entry[PLT_ENTRY_SIZE] = -{ - 0xff, 0xb3, 4, 0, 0, 0, /* pushl 4(%ebx) */ - 0xff, 0xa3, 8, 0, 0, 0, /* jmp *8(%ebx) */ - 0, 0, 0, 0 /* pad out to 16 bytes. */ -}; - -/* Contents of all but the first PLT entry in executable. */ -static const unsigned char elf_i386_plt_entry[PLT_ENTRY_SIZE] = -{ - 0xff, 0x25, /* jmp indirect */ - 0, 0, 0, 0, /* replaced with address of this symbol in .got. */ - 0x68, /* pushl immediate */ - 0, 0, 0, 0, /* replaced with offset into relocation table. */ - 0xe9, /* jmp relative */ - 0, 0, 0, 0 /* replaced with offset to start of .plt. */ -}; - -/* Contents of all but the first PLT entry in DSOs. */ -static const unsigned char elf_i386_pic_plt_entry[PLT_ENTRY_SIZE] = -{ - 0xff, 0xa3, /* jmp *offset(%ebx) */ - 0, 0, 0, 0, /* replaced with offset of this symbol in .got. */ - 0x68, /* pushl immediate */ - 0, 0, 0, 0, /* replaced with offset into relocation table. */ - 0xe9, /* jmp relative */ - 0, 0, 0, 0 /* replaced with offset to start of .plt. */ -}; - -/* Type describing a PLT entry. */ -struct plt_entry -{ - /* The first instruction is 'jmp indirect' or 'jmp *offset(%ebs)'. */ - unsigned char jmp_instr[2]; - uint32_t offset_got; - /* The second instruction is 'push immediate'. */ - unsigned char push_instr; - uint32_t push_imm; - /* Finally a 'jmp relative'. */ - unsigned char jmp_instr2; - uint32_t plt0_offset; -} __attribute__ ((packed)); - - -static void -elf_i386_finalize_plt (struct ld_state *statep, size_t nsym, size_t nsym_dyn) -{ - Elf_Scn *scn; - XElf_Shdr_vardef (shdr); - Elf_Data *data; - Elf_Data *symdata = NULL; - Elf_Data *dynsymdata; - size_t cnt; - const bool build_dso = statep->file_type == dso_file_type; - - if (unlikely (statep->nplt + statep->ngot == 0)) - /* Nothing to be done. */ - return; - - /* Get the address of the got section. */ - scn = elf_getscn (statep->outelf, statep->gotscnidx); - xelf_getshdr (scn, shdr); - data = elf_getdata (scn, NULL); - assert (shdr != NULL && data != NULL); - Elf32_Addr gotaddr = shdr->sh_addr; - - /* Now create the initial values for the .got section. The first - word contains the address of the .dynamic section. */ - xelf_getshdr (elf_getscn (statep->outelf, statep->dynamicscnidx), shdr); - assert (shdr != NULL); - ((Elf32_Word *) data->d_buf)[0] = shdr->sh_addr; - - /* The second and third entry are left empty for use by the dynamic - linker. The following entries are pointers to the instructions - following the initial jmp instruction in the corresponding PLT - entry. Since the first PLT entry is special the first used one - has the index 1. */ - scn = elf_getscn (statep->outelf, statep->pltscnidx); - xelf_getshdr (scn, shdr); - assert (shdr != NULL); - - dynsymdata = elf_getdata (elf_getscn (statep->outelf, statep->dynsymscnidx), - NULL); - assert (dynsymdata != NULL); - - if (statep->symscnidx != 0) - { - symdata = elf_getdata (elf_getscn (statep->outelf, statep->symscnidx), - NULL); - assert (symdata != NULL); - } - - for (cnt = 0; cnt < statep->nplt; ++cnt) - { - assert ((4 + cnt) * sizeof (Elf32_Word) <= data->d_size); - - /* Address in the PLT. */ - Elf32_Addr pltentryaddr = shdr->sh_addr + (1 + cnt) * PLT_ENTRY_SIZE; - - /* Point the GOT entry at the PLT entry, after the initial jmp. */ - ((Elf32_Word *) data->d_buf)[3 + cnt] = pltentryaddr + 6; - - /* The value of the symbol is the address of the corresponding PLT - entry. Store the address, also for the normal symbol table if - this is necessary. */ - ((Elf32_Sym *) dynsymdata->d_buf)[1 + cnt].st_value = pltentryaddr; - - if (symdata != NULL) - ((Elf32_Sym *) symdata->d_buf)[nsym - statep->nplt + cnt].st_value - = pltentryaddr; - } - - /* Create the .plt section. */ - scn = elf_getscn (statep->outelf, statep->pltscnidx); - data = elf_getdata (scn, NULL); - assert (data != NULL); - - /* Create the first entry. */ - assert (data->d_size >= PLT_ENTRY_SIZE); - if (build_dso) - /* Copy the entry. It's complete, no relocation needed. */ - memcpy (data->d_buf, elf_i386_pic_plt0_entry, PLT_ENTRY_SIZE); - else - { - /* Copy the skeleton. */ - memcpy (data->d_buf, elf_i386_plt0_entry, PLT_ENTRY_SIZE); - - /* And fill in the addresses. */ - struct plt0_entry *addr = (struct plt0_entry *) data->d_buf; - addr->gotp4_addr = target_bswap_32 (gotaddr + 4); - addr->gotp8_addr = target_bswap_32 (gotaddr + 8); - } - - /* For DSOs we need GOT offsets, otherwise the GOT address. */ - Elf32_Addr gotaddr_off = build_dso ? 0 : gotaddr; - - /* Create the remaining entries. */ - const unsigned char *plt_template - = build_dso ? elf_i386_pic_plt_entry : elf_i386_plt_entry; - - for (cnt = 0; cnt < statep->nplt; ++cnt) - { - struct plt_entry *addr; - - /* Copy the template. */ - assert (data->d_size >= (2 + cnt) * PLT_ENTRY_SIZE); - addr = (struct plt_entry *) ((char *) data->d_buf - + (1 + cnt) * PLT_ENTRY_SIZE); - memcpy (addr, plt_template, PLT_ENTRY_SIZE); - - /* And once more, fill in the addresses. First the address of - this symbol in .got. */ - addr->offset_got = target_bswap_32 (gotaddr_off - + (3 + cnt) * sizeof (Elf32_Addr)); - /* Offset into relocation table. */ - addr->push_imm = target_bswap_32 (cnt * sizeof (Elf32_Rel)); - /* Offset to start of .plt. */ - addr->plt0_offset = target_bswap_32 (-(2 + cnt) * PLT_ENTRY_SIZE); - } - - /* Create the .rel.plt section data. It simply means relocations - addressing the corresponding entry in the .got section. The - section name is misleading. */ - scn = elf_getscn (statep->outelf, statep->pltrelscnidx); - xelf_getshdr (scn, shdr); - data = elf_getdata (scn, NULL); - assert (shdr != NULL && data != NULL); - - /* Update the sh_link to point to the section being modified. We - point it here (correctly) to the .got section. Some linkers - (e.g., the GNU binutils linker) point to the .plt section. This - is wrong since the .plt section isn't modified even though the - name .rel.plt suggests that this is correct. */ - shdr->sh_link = statep->dynsymscnidx; - shdr->sh_info = statep->gotscnidx; - (void) xelf_update_shdr (scn, shdr); - - for (cnt = 0; cnt < statep->nplt; ++cnt) - { - XElf_Rel_vardef (rel); - - assert ((1 + cnt) * sizeof (Elf32_Rel) <= data->d_size); - xelf_getrel_ptr (data, cnt, rel); - rel->r_offset = gotaddr + (3 + cnt) * sizeof (Elf32_Addr); - /* The symbol table entries for the functions from DSOs are at - the end of the symbol table. */ - rel->r_info = XELF_R_INFO (1 + cnt, R_386_JMP_SLOT); - (void) xelf_update_rel (data, cnt, rel); - } -} - - -static int -elf_i386_rel_type (struct ld_state *statep __attribute__ ((__unused__))) -{ - /* ELF/i386 uses REL. */ - return DT_REL; -} - - -static void -elf_i386_count_relocations (struct ld_state *statep, struct scninfo *scninfo) -{ - /* We go through the list of input sections and count those relocations - which are not handled by the linker. At the same time we have to - see how many GOT entries we need and how much .bss space is needed - for copy relocations. */ - Elf_Data *data = elf_getdata (scninfo->scn, NULL); - XElf_Shdr *shdr = &SCNINFO_SHDR (scninfo->shdr); - size_t maxcnt = shdr->sh_size / shdr->sh_entsize; - size_t relsize = 0; - size_t cnt; - struct symbol *sym; - - assert (shdr->sh_type == SHT_REL); - - for (cnt = 0; cnt < maxcnt; ++cnt) - { - XElf_Rel_vardef (rel); - - xelf_getrel (data, cnt, rel); - /* XXX Should we complain about failing accesses? */ - if (rel != NULL) - { - int r_sym = XELF_R_SYM (rel->r_info); - - switch (XELF_R_TYPE (rel->r_info)) - { - case R_386_GOT32: - if (! scninfo->fileinfo->symref[r_sym]->defined) - relsize += sizeof (Elf32_Rel); - - /* This relocation is not emitted in the output file but - requires a GOT entry. */ - ++statep->ngot; - ++statep->nrel_got; - - /* FALLTHROUGH */ - - case R_386_GOTOFF: - case R_386_GOTPC: - statep->need_got = true; - break; - - case R_386_32: - case R_386_PC32: - /* These relocations cause text relocations in DSOs. */ - if (linked_from_dso_p (scninfo, r_sym)) - { - if (statep->file_type == dso_file_type) - { - relsize += sizeof (Elf32_Rel); - statep->dt_flags |= DF_TEXTREL; - } - else - { - /* Non-function objects from a DSO need to get a - copy relocation. */ - sym = scninfo->fileinfo->symref[r_sym]; - - /* Only do this if we have not requested a copy - relocation already. */ - if (unlikely (sym->type != STT_FUNC) && ! sym->need_copy) - { - sym->need_copy = 1; - ++statep->ncopy; - relsize += sizeof (Elf32_Rel); - } - } - } - else if (statep->file_type == dso_file_type - && r_sym >= SCNINFO_SHDR (scninfo->fileinfo->scninfo[shdr->sh_link].shdr).sh_info - && scninfo->fileinfo->symref[r_sym]->outdynsymidx != 0 - && XELF_R_TYPE (rel->r_info) == R_386_32) - relsize += sizeof (Elf32_Rel); - break; - - case R_386_PLT32: - /* We might need a PLT entry. But we cannot say for sure - here since one of the symbols might turn up being - defined in the executable (if we create such a thing). - If a DSO is created we still might use a local - definition. - - If the symbol is not defined and we are not creating - a statically linked binary, then we need in any case - a PLT entry. */ - if (! scninfo->fileinfo->symref[r_sym]->defined) - { - assert (!statep->statically); - - sym = scninfo->fileinfo->symref[r_sym]; - sym->type = STT_FUNC; - sym->in_dso = 1; - sym->defined = 1; - - /* Remove from the list of unresolved symbols. */ - --statep->nunresolved; - if (! sym->weak) - --statep->nunresolved_nonweak; - CDBL_LIST_DEL (statep->unresolved, sym); - - /* Add to the list of symbols we expect from a DSO. */ - ++statep->nplt; - ++statep->nfrom_dso; - CDBL_LIST_ADD_REAR (statep->from_dso, sym); - } - break; - - case R_386_TLS_GD: - case R_386_TLS_LDM: - case R_386_TLS_GD_32: - case R_386_TLS_GD_PUSH: - case R_386_TLS_GD_CALL: - case R_386_TLS_GD_POP: - case R_386_TLS_LDM_32: - case R_386_TLS_LDM_PUSH: - case R_386_TLS_LDM_CALL: - case R_386_TLS_LDM_POP: - case R_386_TLS_LDO_32: - case R_386_TLS_IE_32: - case R_386_TLS_LE_32: - /* XXX */ - abort (); - break; - - case R_386_NONE: - /* Nothing to be done. */ - break; - - /* These relocation should never be generated by an - assembler. */ - case R_386_COPY: - case R_386_GLOB_DAT: - case R_386_JMP_SLOT: - case R_386_RELATIVE: - case R_386_TLS_DTPMOD32: - case R_386_TLS_DTPOFF32: - case R_386_TLS_TPOFF32: - /* Unknown relocation. */ - default: - abort (); - } - } - } - - scninfo->relsize = relsize; -} - - -static void -elf_i386_create_relocations (struct ld_state *statep, - const Elf32_Word *dblindirect) -{ - /* Get the address of the got section. */ - Elf_Scn *pltscn = elf_getscn (statep->outelf, statep->pltscnidx); - Elf32_Shdr *shdr = elf32_getshdr (pltscn); - assert (shdr != NULL); - Elf32_Addr pltaddr = shdr->sh_addr; - - Elf_Scn *gotscn = elf_getscn (statep->outelf, statep->gotscnidx); - shdr = elf32_getshdr (gotscn); - assert (shdr != NULL); - Elf32_Addr gotaddr = shdr->sh_addr; - - Elf_Scn *reldynscn = elf_getscn (statep->outelf, statep->reldynscnidx); - Elf_Data *reldyndata = elf_getdata (reldynscn, NULL); - - size_t nreldyn = 0; -#define ngot_used (3 + statep->nplt + nreldyn) - - struct scninfo *first = statep->rellist->next; - struct scninfo *runp = first; - do - { - XElf_Shdr *rshdr = &SCNINFO_SHDR (runp->shdr); - Elf_Data *reldata = elf_getdata (runp->scn, NULL); - int nrels = rshdr->sh_size / rshdr->sh_entsize; - - /* We will need the following vlaues a couple of times. Help - the compiler and improve readability. */ - struct symbol **symref = runp->fileinfo->symref; - struct scninfo *scninfo = runp->fileinfo->scninfo; - - /* This is the offset of the input section we are looking at in - the output file. */ - XElf_Addr inscnoffset = scninfo[rshdr->sh_info].offset; - - /* The target section. We use the data from the input file. */ - Elf_Data *data = elf_getdata (scninfo[rshdr->sh_info].scn, NULL); - - /* We cannot handle relocations against merge-able sections. */ - assert ((SCNINFO_SHDR (scninfo[rshdr->sh_link].shdr).sh_flags - & SHF_MERGE) == 0); - - /* Cache the access to the symbol table data. */ - Elf_Data *symdata = elf_getdata (scninfo[rshdr->sh_link].scn, NULL); - - int cnt; - for (cnt = 0; cnt < nrels; ++cnt) - { - XElf_Rel_vardef (rel); - XElf_Rel *rel2; - xelf_getrel (reldata, cnt, rel); - assert (rel != NULL); - XElf_Addr reladdr = inscnoffset + rel->r_offset; - XElf_Addr value; - - size_t idx = XELF_R_SYM (rel->r_info); - if (idx < runp->fileinfo->nlocalsymbols) - { - XElf_Sym_vardef (sym); - xelf_getsym (symdata, idx, sym); - - /* The value just depends on the position of the referenced - section in the output file and the addend. */ - value = scninfo[sym->st_shndx].offset + sym->st_value; - } - else if (symref[idx]->in_dso) - { - /* MERGE.VALUE contains the PLT index. We have to add 1 since - there is this one special PLT entry at the beginning. */ - assert (symref[idx]->merge.value != 0 - || symref[idx]->type != STT_FUNC); - value = pltaddr + symref[idx]->merge.value * PLT_ENTRY_SIZE; - } - else - value = symref[idx]->merge.value; - - /* Address of the relocated memory in the data buffer. */ - void *relloc = (char *) data->d_buf + rel->r_offset; - - switch (XELF_R_TYPE (rel->r_info)) - { - /* These three cases can be handled together since the - symbol associated with the R_386_GOTPC relocation is - _GLOBAL_OFFSET_TABLE_ which has a value corresponding - to the address of the GOT and the address of the PLT - entry required for R_386_PLT32 is computed above. */ - case R_386_PC32: - case R_386_GOTPC: - case R_386_PLT32: - value -= reladdr; - /* FALLTHROUGH */ - - case R_386_32: - if (linked_from_dso_p (scninfo, idx) - && statep->file_type != dso_file_type - && symref[idx]->type != STT_FUNC) - { - value = (ld_state.copy_section->offset - + symref[idx]->merge.value); - - if (unlikely (symref[idx]->need_copy)) - { - /* Add a relocation to initialize the GOT entry. */ - assert (symref[idx]->outdynsymidx != 0); -#if NATIVE_ELF != 0 - xelf_getrel_ptr (reldyndata, nreldyn, rel2); -#else - rel2 = &rel_mem; -#endif - rel2->r_offset = value; - rel2->r_info - = XELF_R_INFO (symref[idx]->outdynsymidx, R_386_COPY); - (void) xelf_update_rel (reldyndata, nreldyn, rel2); - ++nreldyn; - - /* Update the symbol table record for the new - address. */ - Elf32_Word symidx = symref[idx]->outdynsymidx; - Elf_Scn *symscn = elf_getscn (statep->outelf, - statep->dynsymscnidx); - Elf_Data *outsymdata = elf_getdata (symscn, NULL); - assert (outsymdata != NULL); - XElf_Sym_vardef (sym); - xelf_getsym (outsymdata, symidx, sym); - sym->st_value = value; - sym->st_shndx = statep->copy_section->outscnndx; - (void) xelf_update_sym (outsymdata, symidx, sym); - - symidx = symref[idx]->outsymidx; - if (symidx != 0) - { - symidx = statep->dblindirect[symidx]; - symscn = elf_getscn (statep->outelf, - statep->symscnidx); - outsymdata = elf_getdata (symscn, NULL); - assert (outsymdata != NULL); - xelf_getsym (outsymdata, symidx, sym); - sym->st_value = value; - sym->st_shndx = statep->copy_section->outscnndx; - (void) xelf_update_sym (outsymdata, symidx, sym); - } - - /* Remember that we set up the copy relocation. */ - symref[idx]->need_copy = 0; - } - } - else if (statep->file_type == dso_file_type - && idx >= SCNINFO_SHDR (scninfo[rshdr->sh_link].shdr).sh_info - && symref[idx]->outdynsymidx != 0) - { -#if NATIVE_ELF != 0 - xelf_getrel_ptr (reldyndata, nreldyn, rel2); -#else - rel2 = &rel_mem; -#endif - rel2->r_offset = value; - rel2->r_info - = XELF_R_INFO (symref[idx]->outdynsymidx, R_386_32); - (void) xelf_update_rel (reldyndata, nreldyn, rel2); - ++nreldyn; - - value = 0; - } - add_4ubyte_unaligned (relloc, value); - break; - - case R_386_GOT32: - store_4ubyte_unaligned (relloc, ngot_used * sizeof (Elf32_Addr)); - - /* Add a relocation to initialize the GOT entry. */ -#if NATIVE_ELF != 0 - xelf_getrel_ptr (reldyndata, nreldyn, rel2); -#else - rel2 = &rel_mem; -#endif - rel2->r_offset = gotaddr + ngot_used * sizeof (Elf32_Addr); - rel2->r_info - = XELF_R_INFO (symref[idx]->outdynsymidx, R_386_GLOB_DAT); - (void) xelf_update_rel (reldyndata, nreldyn, rel2); - ++nreldyn; - break; - - case R_386_GOTOFF: - add_4ubyte_unaligned (relloc, value - gotaddr); - break; - - case R_386_32PLT: - case R_386_TLS_TPOFF: - case R_386_TLS_IE: - case R_386_TLS_GOTIE: - case R_386_TLS_LE: - case R_386_TLS_GD: - case R_386_TLS_LDM: - case R_386_16: - case R_386_PC16: - case R_386_8: - case R_386_PC8: - case R_386_TLS_GD_32: - case R_386_TLS_GD_PUSH: - case R_386_TLS_GD_CALL: - case R_386_TLS_GD_POP: - case R_386_TLS_LDM_32: - case R_386_TLS_LDM_PUSH: - case R_386_TLS_LDM_CALL: - case R_386_TLS_LDM_POP: - case R_386_TLS_LDO_32: - case R_386_TLS_IE_32: - case R_386_TLS_LE_32: - // XXX For now fall through - printf("ignored relocation %d\n", (int) XELF_R_TYPE (rel->r_info)); - break; - - case R_386_NONE: - /* Nothing to do. */ - break; - - case R_386_COPY: - case R_386_JMP_SLOT: - case R_386_RELATIVE: - case R_386_GLOB_DAT: - case R_386_TLS_DTPMOD32: - case R_386_TLS_DTPOFF32: - case R_386_TLS_TPOFF32: - default: - /* Should not happen. */ - abort (); - } - } - } - while ((runp = runp->next) != first); -} - - -int -elf_i386_ld_init (struct ld_state *statep) -{ - /* We have a few callbacks available. */ - old_open_outfile = statep->callbacks.open_outfile; - statep->callbacks.open_outfile = elf_i386_open_outfile; - - statep->callbacks.relocate_section = elf_i386_relocate_section; - - statep->callbacks.initialize_plt = elf_i386_initialize_plt; - statep->callbacks.initialize_pltrel = elf_i386_initialize_pltrel; - - statep->callbacks.initialize_got = elf_i386_initialize_got; - - statep->callbacks.finalize_plt = elf_i386_finalize_plt; - - statep->callbacks.rel_type = elf_i386_rel_type; - - statep->callbacks.count_relocations = elf_i386_count_relocations; - - statep->callbacks.create_relocations = elf_i386_create_relocations; - - return 0; -} diff --git a/src/ld.c b/src/ld.c deleted file mode 100644 index a6b664f7..00000000 --- a/src/ld.c +++ /dev/null @@ -1,1520 +0,0 @@ -/* Copyright (C) 2001, 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <argp.h> -#include <assert.h> -#include <error.h> -#include <fcntl.h> -#include <libelf.h> -#include <libintl.h> -#include <locale.h> -#include <mcheck.h> -#include <stdio.h> -#include <stdio_ext.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> - -#include <system.h> -#include "ld.h" -#include "list.h" - - -/* Name and version of program. */ -static void print_version (FILE *stream, struct argp_state *state); -void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version; - - -/* Values for the various options. */ -enum - { - ARGP_whole_archive = 300, - ARGP_no_whole_archive, - ARGP_static, - ARGP_dynamic, - ARGP_pagesize, - ARGP_rpath, - ARGP_rpath_link, - ARGP_runpath, - ARGP_runpath_link, - ARGP_version_script, - ARGP_gc_sections, - ARGP_no_gc_sections, - ARGP_no_undefined, - ARGP_conserve, -#if YYDEBUG - ARGP_yydebug, -#endif - }; - - -/* Definitions of arguments for argp functions. */ -static const struct argp_option options[] = -{ - /* XXX This list will be reordered and section names will be added. - Just not right now. */ - { "whole-archive", ARGP_whole_archive, NULL, 0, - N_("Include whole archives in the output from now on.") }, - { "no-whole-archive", ARGP_no_whole_archive, NULL, 0, - N_("Stop including the whole arhives in the output.") }, - - { "output", 'o', N_("FILE"), 0, N_("Place output in FILE.") }, - - { NULL, 'O', N_("LEVEL"), OPTION_ARG_OPTIONAL, - N_("Set optimization level to LEVEL.") }, - - { "verbose", 'v', NULL, 0, N_("Verbose messages.") }, - { "trace", 't', NULL, 0, N_("Trace file opens.") }, - { "conserve-memory", ARGP_conserve, NULL, 0, - N_("Trade speed for less memory usage") }, - - { NULL, 'z', "KEYWORD", OPTION_HIDDEN, NULL }, - { "-z nodefaultlib", '\0', NULL, OPTION_DOC, - N_("Object is marked to not use default search path at runtime.") }, - { "-z allextract", '\0', NULL, OPTION_DOC, - N_("Same as --whole-archive.") }, - { "-z defaultextract", '\0', NULL, OPTION_DOC, N_("\ -Default rules of extracting from archive; weak references are not enough.") }, - { "-z weakextract", '\0', NULL, OPTION_DOC, - N_("Weak references cause extraction from archive.") }, - { "-z muldefs", '\0', NULL, OPTION_DOC, - N_("Allow multiple definitions; first is used.") }, - { "-z defs | nodefs", '\0', NULL, OPTION_DOC, - N_("Disallow/allow undefined symbols in DSOs.") }, - { "no-undefined", ARGP_no_undefined, NULL, OPTION_HIDDEN, NULL }, - { "-z origin", '\0', NULL, OPTION_DOC, - N_("Object requires immediate handling of $ORIGIN.") }, - { "-z now", '\0', NULL, OPTION_DOC, - N_("Relocation will not be processed lazily.") }, - { "-z nodelete", '\0', NULL, OPTION_DOC, - N_("Object cannot be unloaded at runtime.") }, - { "-z initfirst", '\0', NULL, OPTION_DOC, - N_("Mark object to be initialized first.") }, - { "-z lazyload | nolazyload", '\0', NULL, OPTION_DOC, - N_("Enable/disable lazy-loading flag for following dependencies.") }, - { "-z nodlopen", '\0', NULL, OPTION_DOC, - N_("Mark object as not loadable with 'dlopen'.") }, - { "-z ignore | record", '\0', NULL, OPTION_DOC, - N_("Ignore/record dependencies on unused DSOs.") }, - { "-z systemlibrary", '\0', NULL, OPTION_DOC, - N_("Generated DSO will be a system library.") }, - - { NULL, 'l', N_("FILE"), OPTION_HIDDEN, NULL }, - - { NULL, '(', NULL, 0, N_("Start a group.") }, - { NULL, ')', NULL, 0, N_("End a group.") }, - - { NULL, 'L', N_("PATH"), 0, - N_("Add PATH to list of directories files are searched in.") }, - - { NULL, 'c', N_("FILE"), 0, N_("Use linker script in FILE.") }, - - { "entry", 'e', N_("ADDRESS"), 0, N_("Set entry point address.") }, - - { "static", ARGP_static, NULL, OPTION_HIDDEN, NULL }, - { "-B static", ARGP_static, NULL, OPTION_DOC, - N_("Do not link against shared libraries.") }, - { "dynamic", ARGP_dynamic, NULL, OPTION_HIDDEN, NULL }, - { "-B dynamic", ARGP_dynamic, NULL, OPTION_DOC, - N_("Prefer linking against shared libraries.") }, - - { "export-dynamic", 'E', NULL, 0, N_("Export all dynamic symbols.") }, - - { "strip-all", 's', NULL, 0, N_("Strip all symbols.") }, - { "strip-debug", 'S', NULL, 0, N_("Strip debugging symbols.") }, - - { "pagesize", ARGP_pagesize, "SIZE", 0, - N_("Assume pagesize for the target system to be SIZE.") }, - - { "rpath", ARGP_rpath, "PATH", OPTION_HIDDEN, NULL }, - { "rpath-link", ARGP_rpath_link, "PATH", OPTION_HIDDEN, NULL }, - - { "runpath", ARGP_runpath, "PATH", 0, N_("Set runtime DSO search path.") }, - { "runpath-link", ARGP_runpath_link, "PATH", 0, - N_("Set link time DSO search path.") }, - - { NULL, 'i', NULL, 0, N_("Ignore LD_LIBRARY_PATH environment variable.") }, - - { "version-script", ARGP_version_script, "FILE", 0, - N_("Read version information from FILE.") }, - - { "emulation", 'm', "NAME", 0, N_("Set emulation to NAME.") }, - - { "shared", 'G', NULL, 0, N_("Generate dynamic shared object.") }, - { NULL, 'r', NULL, 0L, N_("Generate relocatable object.") }, - - { NULL, 'B', "KEYWORD", OPTION_HIDDEN, "" }, - { "-B local", 'B', NULL, OPTION_DOC, - N_("Causes symbol not assigned to a version be reduced to local.") }, - - { "gc-sections", ARGP_gc_sections, NULL, 0, N_("Remove unused sections.") }, - { "no-gc-sections", ARGP_no_gc_sections, NULL, 0, - N_("Don't remove unused sections.") }, - - { "soname", 'h', "NAME", 0, N_("Set soname of shared object.") }, - { "dynamic-linker", 'I', "NAME", 0, N_("Set the dynamic linker name.") }, - - { NULL, 'Q', "YN", OPTION_HIDDEN, NULL }, - { "-Q y | n", 'Q', NULL, OPTION_DOC, - N_("Add/suppress addition indentifying link-editor to .comment section") }, - -#if YYDEBUG - { "yydebug", ARGP_yydebug, NULL, 0, - N_("Select to get parser debug information") }, -#endif - - { NULL, 0, NULL, 0, NULL } -}; - -/* Short description of program. */ -static const char doc[] = N_("Combine object and archive files."); - -/* Strings for arguments in help texts. */ -static const char args_doc[] = N_("[FILE]..."); - -/* Prototype for option handler. */ -static error_t parse_opt_1st (int key, char *arg, struct argp_state *state); -static error_t parse_opt_2nd (int key, char *arg, struct argp_state *state); - -/* Function to print some extra text in the help message. */ -static char *more_help (int key, const char *text, void *input); - -/* Data structure to communicate with argp functions. */ -static struct argp argp_1st = -{ - options, parse_opt_1st, args_doc, doc, NULL, more_help -}; -static struct argp argp_2nd = -{ - options, parse_opt_2nd, args_doc, doc, NULL, more_help -}; - - -/* Linker state. This contains all global information. */ -struct ld_state ld_state; - -/* List of the input files. */ -static struct file_list -{ - const char *name; - struct file_list *next; -} *input_file_list; - -/* If nonzero be verbose. */ -int verbose; - -/* If nonzero, trade speed for less memory/address space usage. */ -int conserve_memory; - -/* The emulation name to use. */ -static const char *emulation; - -/* Keep track of the nesting level. Even though we don't handle nested - groups we still keep track to improve the error messages. */ -static int group_level; - -/* The last file we processed. */ -static struct usedfiles *last_file; - -/* The default linker script. */ -/* XXX We'll do this a bit different in the real solution. */ -static const char *linker_script = SRCDIR "/elf32-i386.script"; - -/* Nonzero if an error occurred while loading the input files. */ -static int error_loading; - - -/* Intermediate storage for the LD_LIBRARY_PATH information from the - environment. */ -static char *ld_library_path1; - -/* Flag used to communicate with the scanner. */ -int ld_scan_version_script; - -/* Name of the input file. */ -const char *ldin_fname; - -/* Define by parser if required. */ -extern int lddebug; - - -/* Prototypes for local functions. */ -static void parse_z_option (const char *arg); -static void parse_z_option_2 (const char *arg); -static void parse_B_option (const char *arg); -static void parse_B_option_2 (const char *arg); -static void determine_output_format (void); -static void load_needed (void); -static void collect_sections (void); -static void add_rxxpath (struct pathelement **pathp, const char *str); -static void gen_rxxpath_data (void); -static void read_version_script (const char *fname); -static void create_lscript_symbols (void); -static void create_special_section_symbol (struct symbol **symp, - const char *name); - - -int -main (int argc, char *argv[]) -{ - int remaining; - int err; - -#ifndef NDEBUG - /* Enable memory debugging. */ - mtrace (); -#endif - - /* Sanity check. We always want to use the LFS functionality. */ - if (sizeof (off_t) != sizeof (off64_t)) - abort (); - - /* We use no threads here which can interfere with handling a stream. */ - __fsetlocking (stdin, FSETLOCKING_BYCALLER); - __fsetlocking (stdout, FSETLOCKING_BYCALLER); - __fsetlocking (stderr, FSETLOCKING_BYCALLER); - - /* Set locale. */ - setlocale (LC_ALL, ""); - - /* Make sure the message catalog can be found. */ - bindtextdomain (PACKAGE, LOCALEDIR); - - /* Initialize the message catalog. */ - textdomain (PACKAGE); - - /* Before we start tell the ELF library which version we are using. */ - elf_version (EV_CURRENT); - - /* The user can use the LD_LIBRARY_PATH environment variable to add - additional lookup directories. */ - ld_library_path1 = getenv ("LD_LIBRARY_PATH"); - - /* Initialize the memory handling. */ -#define obstack_chunk_alloc xmalloc -#define obstack_chunk_free free - obstack_init (&ld_state.smem); - - /* One quick pass over the parameters which allows us to scan for options - with global effect which influence the rest of the processing. */ - argp_parse (&argp_1st, argc, argv, ARGP_IN_ORDER, &remaining, NULL); - - /* We need at least one input file. */ - if (input_file_list == NULL) - { - error (0, 0, gettext ("At least one input file needed")); - argp_help (&argp_1st, stderr, ARGP_HELP_SEE, "ld"); - exit (EXIT_FAILURE); - } - - /* Determine which ELF backend to use. */ - determine_output_format (); - - /* Prepare state. */ - err = ld_prepare_state (emulation); - if (err != 0) - error (EXIT_FAILURE, 0, gettext ("error while preparing linking")); - - /* XXX Read the linker script now. Since we later will have the linker - script built in we don't go into trouble to make sure we handle GROUP - statements in the script. This simply must not happen. */ - ldin = fopen (linker_script, "r"); - if (ldin == NULL) - error (EXIT_FAILURE, errno, gettext ("cannot open linker script \"%s\""), - linker_script); - /* No need for locking. */ - __fsetlocking (ldin, FSETLOCKING_BYCALLER); - - ld_state.srcfiles = NULL; - ldlineno = 1; - ld_scan_version_script = 0; - ldin_fname = linker_script; - if (ldparse () != 0) - /* Something went wrong during parsing. */ - exit (EXIT_FAILURE); - fclose (ldin); - - /* We now might have a list of directories to look for libraries in - named by the linker script. Put them in a different list so that - they are searched after all paths given by the user on the - command line. */ - ld_state.default_paths = ld_state.paths; - ld_state.paths = ld_state.tailpaths = NULL; - - /* Get runpath/rpath information in usable form. */ - gen_rxxpath_data (); - - /* Parse and process arguments for real. */ - argp_parse (&argp_2nd, argc, argv, ARGP_IN_ORDER, &remaining, NULL); - /* All options should have been processed by the argp parser. */ - assert (remaining == argc); - - /* Process the last file. */ - while (last_file != NULL) - /* Try to open the file. */ - error_loading |= FILE_PROCESS (-1, last_file, &ld_state, &last_file); - - /* Stop if there has been a problem while reading the input files. */ - if (error_loading) - exit (error_loading); - - /* See whether all opened -( were closed. */ - if (group_level > 0) - { - error (0, 0, gettext ("-( without matching -)")); - argp_help (&argp_1st, stderr, ARGP_HELP_SEE, "ld"); - exit (EXIT_FAILURE); - } - - /* When we create a relocatable file we don't have to look for the - DT_NEEDED DSOs and we also don't test for undefined symbols. */ - if (ld_state.file_type != relocatable_file_type) - { - /* At this point we have loaded all the direct dependencies. What - remains to be done is find the indirect dependencies. These are - DSOs which are referenced by the DT_NEEDED entries in the DSOs - which are direct dependencies. We have to transitively find and - load all these dependencies. */ - load_needed (); - - /* At this point all object files and DSOs are read. If there - are still undefined symbols left they might have to be - synthesized from the linker script. */ - create_lscript_symbols (); - - /* Now that we have loaded all the object files we can determine - whether we have any non-weak unresolved references left. If - there are any we stop. If the user used the '-z nodefs' option - and we are creating a DSO don't perform the tests. */ - if (FLAG_UNRESOLVED (&ld_state) != 0) - exit (1); - } - - /* Collect information about the relocations which will be carried - forward into the output. We have to do this here and now since - we need to know which sections have to be created. */ - if (ld_state.file_type != relocatable_file_type) - { - void *p ; - struct scnhead *h; - - p = NULL; - while ((h = ld_section_tab_iterate (&ld_state.section_tab, &p)) != NULL) - if (h->type == SHT_REL || h->type == SHT_RELA) - { - struct scninfo *runp = h->last; - do - { - /* If we are processing the relocations determine how - many will be in the output file. Also determine - how many GOT entries are needed. */ - COUNT_RELOCATIONS (&ld_state, runp); - - ld_state.relsize_total += runp->relsize; - } - while ((runp = runp->next) != h->last); - } - } - - /* Not part of the gABI, but part of every psABI: the symbols for the - GOT section. Add the symbol if necessary. */ - if (ld_state.need_got) - create_special_section_symbol (&ld_state.got_symbol, - "_GLOBAL_OFFSET_TABLE_"); - /* Similarly for the _DYNAMIC symbol which points to the dynamic - section. */ - if (dynamically_linked_p ()) - create_special_section_symbol (&ld_state.dyn_symbol, "_DYNAMIC"); - - /* We are ready to start working on the output file. Not all - information has been gather or created yet. This will be done as - we go. Open the file now. */ - if (OPEN_OUTFILE (&ld_state, EM_NONE, ELFCLASSNONE, ELFDATANONE) != 0) - exit (1); - - /* Create the sections which are generated by the linker and are not - present in the input file. The output file must already have - been opened since we need the ELF descriptor to deduce type - sizes. */ - GENERATE_SECTIONS (&ld_state); - - /* At this point we have read all the files and know all the - sections which have to be linked into the application. We do now - create an array listing all the sections. We will than pass this - array to a system specific function which can reorder it at will. - The functions can also merge sections if this is what is - wanted. */ - collect_sections (); - - /* Create the output sections now. This may requires sorting them - first. */ - CREATE_SECTIONS (&ld_state); - - /* Create the output file data. Appropriate code for the selected - output file type is called. */ - if (CREATE_OUTFILE (&ld_state) != 0) - exit (1); - - /* Finalize the output file, write the data out. */ - err |= FINALIZE (&ld_state); - - /* Return with an non-zero exit status also if any error message has - been printed. */ - return err | (error_message_count != 0); -} - - -static char * -more_help (int key, const char *text, void *input) -{ - char *buf; - - switch (key) - { - case ARGP_KEY_HELP_EXTRA: - /* We print some extra information. */ - if (asprintf (&buf, gettext ("Please report bugs to %s.\n"), - PACKAGE_BUGREPORT) < 0) - buf = NULL; - return buf; - - default: - break; - } - return (char *) text; -} - - -/* Quick scan of the parameter list for options with global effect. */ -static error_t -parse_opt_1st (int key, char *arg, struct argp_state *state) -{ - switch (key) - { - case 'B': - parse_B_option (arg); - break; - - case 'c': - linker_script = arg; - break; - - case 'E': - ld_state.export_all_dynamic = true; - break; - - case 'G': - if (ld_state.file_type != no_file_type) - error (EXIT_FAILURE, 0, - gettext ("only one option of -G and -r is allowed")); - ld_state.file_type = dso_file_type; - - /* If we generate a DSO we have to export all symbols. */ - ld_state.export_all_dynamic = true; - break; - - case 'h': - ld_state.soname = arg; - break; - - case 'i': - /* Discard the LD_LIBRARY_PATH value we found. */ - ld_library_path1 = NULL; - break; - - case 'I': - ld_state.interp = arg; - break; - - case 'm': - if (emulation != NULL) - error (EXIT_FAILURE, 0, gettext ("more than one '-m' parameter")); - emulation = arg; - break; - - case 'Q': - if (arg[1] == '\0' && (arg[0] == 'y' || arg[0] == 'Y')) - ld_state.add_ld_comment = true; - else if (arg[1] == '\0' && (arg[0] == 'n' || arg[0] == 'N')) - ld_state.add_ld_comment = true; - else - error (EXIT_FAILURE, 0, gettext ("unknown option `-%c %s'"), 'Q', arg); - break; - - case 'r': - if (ld_state.file_type != no_file_type) - error (EXIT_FAILURE, 0, - gettext ("only one option of -G and -r is allowed")); - ld_state.file_type = relocatable_file_type; - break; - - case 'S': - ld_state.strip = strip_debug; - break; - - case 't': - ld_state.trace_files = true; - break; - - case 'v': - verbose = 1; - break; - - case 'z': - /* The SysV linker used 'z' to pass various flags to the linker. - We follow this. See 'parse_z_option' for the options we - recognize. */ - parse_z_option (arg); - break; - - case ARGP_pagesize: - { - char *endp; - ld_state.pagesize = strtoul (arg, &endp, 0); - if (*endp != '\0') - { - if (endp[1] == '\0' && tolower (*endp) == 'k') - ld_state.pagesize *= 1024; - else if (endp[1] == '\0' && tolower (*endp) == 'm') - ld_state.pagesize *= 1024 * 1024; - else - { - error (0, 0, - gettext ("invalid page size value \"%s\": ignored"), - arg); - ld_state.pagesize = 0; - } - } - } - break; - - case ARGP_rpath: - add_rxxpath (&ld_state.rpath, arg); - break; - - case ARGP_rpath_link: - add_rxxpath (&ld_state.rpath_link, arg); - break; - - case ARGP_runpath: - add_rxxpath (&ld_state.runpath, arg); - break; - - case ARGP_runpath_link: - add_rxxpath (&ld_state.runpath_link, arg); - break; - - case ARGP_gc_sections: - case ARGP_no_gc_sections: - ld_state.gc_sections = key == ARGP_gc_sections; - break; - - case 's': - if (arg == NULL) - { - if (ld_state.strip == strip_all) - ld_state.strip = strip_everything; - else - ld_state.strip = strip_all; - break; - } - /* FALLTHROUGH */ - - case 'e': - case 'o': - case 'O': - case ARGP_whole_archive: - case ARGP_no_whole_archive: - case 'L': - case '(': - case ')': - case 'l': - case ARGP_static: - case ARGP_dynamic: - case ARGP_version_script: - /* We'll handle these in the second pass. */ - break; - - case ARGP_KEY_ARG: - { - struct file_list *newp; - - newp = (struct file_list *) xmalloc (sizeof (struct file_list)); - newp->name = arg; -#ifndef NDEBUG - newp->next = NULL; -#endif - CSNGL_LIST_ADD_REAR (input_file_list, newp); - } - break; - -#if YYDEBUG - case ARGP_yydebug: - lddebug = 1; - break; -#endif - - case ARGP_no_undefined: - ld_state.nodefs = false; - break; - - case ARGP_conserve: - conserve_memory = 1; - break; - - default: - return ARGP_ERR_UNKNOWN; - } - return 0; -} - - -/* Handle program arguments for real. */ -static error_t -parse_opt_2nd (int key, char *arg, struct argp_state *state) -{ - static bool group_start_requested; - static bool group_end_requested; - - switch (key) - { - case 'B': - parse_B_option_2 (arg); - break; - - case 'e': - ld_state.entry = arg; - break; - - case 'o': - if (ld_state.outfname != NULL) - { - error (0, 0, gettext ("More than one output file name given.")); - see_help: - argp_help (&argp_2nd, stderr, ARGP_HELP_SEE, "ld"); - exit (EXIT_FAILURE); - } - ld_state.outfname = arg; - break; - - case 'O': - if (arg == NULL) - ld_state.optlevel = 1; - else - { - char *endp; - unsigned long int level = strtoul (arg, &endp, 10); - if (*endp != '\0') - { - error (0, 0, gettext ("Invalid optimization level `%s'"), arg); - goto see_help; - } - ld_state.optlevel = level; - } - break; - - case ARGP_whole_archive: - ld_state.extract_rule = allextract; - break; - case ARGP_no_whole_archive: - ld_state.extract_rule = defaultextract; - break; - - case ARGP_static: - case ARGP_dynamic: - /* Enable/disable use for DSOs. */ - ld_state.statically = key == ARGP_static; - break; - - case 'z': - /* The SysV linker used 'z' to pass various flags to the linker. - We follow this. See 'parse_z_option' for the options we - recognize. */ - parse_z_option_2 (arg); - break; - - case ARGP_version_script: - read_version_script (arg); - break; - - case 'L': - /* Add a new search directory. */ - ld_new_searchdir (arg); - break; - - case '(': - /* Start a link group. We have to be able to determine the object - file which is named next. Do this by remembering a pointer to - the pointer which will point to the next object. */ - if (verbose && (group_start_requested || !group_end_requested)) - error (0, 0, gettext ("nested -( -) groups are not allowed")); - - /* Increment the nesting level. */ - ++group_level; - - /* Record group start. */ - group_start_requested = true; - group_end_requested = false; - break; - - case ')': - /* End a link group. If there is no group open this is clearly - a bug. If there is a group open insert a back reference - pointer in the record for the last object of the group. If - there is no new object or just one don't do anything. */ - if (!group_end_requested) - { - if (group_level == 0) - { - error (0, 0, gettext ("-) without matching -(")); - goto see_help; - } - } - else - last_file->group_end = true; - - if (group_level > 0) - --group_level; - break; - - case 'l': - case ARGP_KEY_ARG: - { - while (last_file != NULL) - /* Try to open the file. */ - error_loading |= FILE_PROCESS (-1, last_file, &ld_state, &last_file); - - last_file = ld_new_inputfile (arg, - key == 'l' - ? archive_file_type - : relocatable_file_type); - if (group_start_requested) - { - last_file->group_start = true; - - group_start_requested = false; - group_end_requested = true; - } - } - break; - - default: - /* We can catch all other options here. They either have - already been handled or, if the parameter was not correct, - the error has been reported. */ - break; - } - return 0; -} - - -/* Load all the DSOs named as dependencies in other DSOs we already - loaded. */ -static void -load_needed (void) -{ - struct usedfiles *first; - struct usedfiles *runp; - - /* XXX There is one problem here: do we allow references from - regular object files to be satisfied by these implicit - dependencies? The old linker allows this and several libraries - depend on this. Solaris' linker does not allow this; it provides - the user with a comprehensive error message explaining the - situation. - - XXX IMO the old ld behavior is correct since this is also how the - dynamic linker will work. It will look for unresolved references - in all loaded DSOs. - - XXX Should we add an option to get Solaris compatibility? */ - if (ld_state.needed == NULL) - return; - - runp = first = ld_state.needed->next; - do - { - struct usedfiles *ignore; - struct usedfiles *next = runp->next; - int err; - - err = FILE_PROCESS (-1, runp, &ld_state, &ignore); - if (err != 0) - /* Something went wrong. */ - exit (err); - - runp = next; - } - while (runp != first); -} - - -/* Print the version information. */ -static void -print_version (FILE *stream, struct argp_state *state) -{ - fprintf (stream, "ld (%s) %s\n", PACKAGE_NAME, VERSION); - fprintf (stream, gettext ("\ -Copyright (C) %s Red Hat, Inc.\n\ -This is free software; see the source for copying conditions. There is NO\n\ -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ -"), "2004"); - fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper"); -} - - -/* There are a lot of -z options, parse them here. Some of them have - to be parsed in the first pass, others must be handled in the - second pass. */ -static void -parse_z_option (const char *arg) -{ - if (strcmp (arg, "nodefaultlib") == 0 - /* This is only meaningful if we create a DSO. */ - && ld_state.file_type == dso_file_type) - ld_state.dt_flags_1 |= DF_1_NODEFLIB; - else if (strcmp (arg, "muldefs") == 0) - ld_state.muldefs = true; - else if (strcmp (arg, "nodefs") == 0) - ld_state.nodefs = true; - else if (strcmp (arg, "defs") == 0) - ld_state.nodefs = false; - else if (strcmp (arg, "now") == 0) - /* We could also set the DF_1_NOW flag in DT_FLAGS_1 but this isn't - necessary. */ - ld_state.dt_flags |= DF_BIND_NOW; - else if (strcmp (arg, "origin") == 0) - /* We could also set the DF_1_ORIGIN flag in DT_FLAGS_1 but this isn't - necessary. */ - ld_state.dt_flags |= DF_ORIGIN; - else if (strcmp (arg, "nodelete") == 0 - /* This is only meaningful if we create a DSO. */ - && ld_state.file_type == dso_file_type) - ld_state.dt_flags_1 |= DF_1_NODELETE; - else if (strcmp (arg, "initfirst") == 0) - ld_state.dt_flags_1 |= DF_1_INITFIRST; - else if (strcmp (arg, "nodlopen") == 0 - /* This is only meaningful if we create a DSO. */ - && ld_state.file_type == dso_file_type) - ld_state.dt_flags_1 |= DF_1_NOOPEN; - else if (strcmp (arg, "ignore") == 0) - ld_state.ignore_unused_dsos = true; - else if (strcmp (arg, "record") == 0) - ld_state.ignore_unused_dsos = false; - else if (strcmp (arg, "systemlibrary") == 0) - ld_state.is_system_library = true; - else if (strcmp (arg, "allextract") != 0 - && strcmp (arg, "defaultextract") != 0 - && strcmp (arg, "weakextract") != 0 - && strcmp (arg, "lazyload") != 0 - && strcmp (arg, "nolazyload") != 0) - error (0, 0, gettext ("unknown option `-%c %s'"), 'z', arg); -} - - -static void -parse_z_option_2 (const char *arg) -{ - if (strcmp (arg, "allextract") == 0) - ld_state.extract_rule = allextract; - else if (strcmp (arg, "defaultextract") == 0) - ld_state.extract_rule = defaultextract; - else if (strcmp (arg, "weakextract") == 0) - ld_state.extract_rule = weakextract; - else if (strcmp (arg, "lazyload") == 0) - ld_state.lazyload = true; - else if (strcmp (arg, "nolazyload") == 0) - ld_state.lazyload = false; -} - - -/* There are a lot of -B options, parse them here. */ -static void -parse_B_option (const char *arg) -{ - if (strcmp (arg, "local") == 0) - ld_state.default_bind_local = true; - else if (strcmp (arg, "symbolic") != 0 - && strcmp (arg, "static") != 0 - && strcmp (arg, "dynamic") != 0) - error (0, 0, gettext ("unknown option '-%c %s'"), 'B', arg); -} - - -/* The same functionality, but called in the second pass over the - parameters. */ -static void -parse_B_option_2 (const char *arg) -{ - if (strcmp (arg, "static") == 0) - ld_state.statically = true; - else if (strcmp (arg, "dynamic") == 0) - ld_state.statically = false; - else if (strcmp (arg, "symbolic") == 0 - /* This is only meaningful if we create a DSO. */ - && ld_state.file_type == dso_file_type) - ld_state.dt_flags |= DF_SYMBOLIC; -} - - -static void -determine_output_format (void) -{ - /* First change the 'input_file_list' variable in a simple - single-linked list. */ - struct file_list *last = input_file_list; - input_file_list = input_file_list->next; - last->next = NULL; - - /* Determine the target configuration which we are supposed to use. - The user can use the '-m' option to select one. If this is - missing we are trying to load one file and determine the - architecture from that. */ - if (emulation != NULL) - { - ld_state.ebl = ebl_openbackend_emulation (emulation); - - assert (ld_state.ebl != NULL); - } - else - { - /* Find an ELF input file and let it determine the ELf backend. */ - struct file_list *runp = input_file_list; - - while (runp != NULL) - { - int fd = open (runp->name, O_RDONLY); - if (fd != -1) - { - int try (Elf *elf) - { - int result = 0; - - if (elf == NULL) - return 0; - - if (elf_kind (elf) == ELF_K_ELF) - { - /* We have an ELF file. We now can find out - what the output format should be. */ - XElf_Ehdr_vardef(ehdr); - - /* Get the ELF header of the object. */ - xelf_getehdr (elf, ehdr); - if (ehdr != NULL) - ld_state.ebl = - ebl_openbackend_machine (ehdr->e_machine); - - result = 1; - } - else if (elf_kind (elf) == ELF_K_AR) - { - /* Try the archive members. This could - potentially lead to wrong results if the - archive contains files for more than one - architecture. But this is the user's - problem. */ - Elf *subelf; - Elf_Cmd cmd = ELF_C_READ_MMAP; - - while ((subelf = elf_begin (fd, cmd, elf)) != NULL) - { - cmd = elf_next (subelf); - - if (try (subelf) != 0) - break; - } - } - - elf_end (elf); - - return result; - } - - if (try (elf_begin (fd, ELF_C_READ_MMAP, NULL)) != 0) - /* Found a file. */ - break; - } - - runp = runp->next; - } - - if (ld_state.ebl == NULL) - { - error (0, 0, gettext ("\ -could not find input file to determine output file format")); - error (EXIT_FAILURE, 0, gettext ("\ -try again with an appropriate '-m' parameter")); - } - } - - /* We don't need the list of input files anymore. The second run over - the parameters will handle them. */ - while (input_file_list != NULL) - { - struct file_list *oldp = input_file_list; - input_file_list = input_file_list->next; - free (oldp); - } - - /* We also know now what kind of file we are supposed to create. If - the user hasn't selected anythign we create and executable. */ - if (ld_state.file_type == no_file_type) - ld_state.file_type = executable_file_type; -} - -/* Add DIR to the list of directories searched for object files and - libraries. */ -void -ld_new_searchdir (const char *dir) -{ - struct pathelement *newpath; - - newpath = (struct pathelement *) - obstack_calloc (&ld_state.smem, sizeof (struct pathelement)); - - newpath->pname = dir; - - /* Enqueue the file. */ - if (ld_state.tailpaths == NULL) - ld_state.paths = ld_state.tailpaths = newpath; - else - { - ld_state.tailpaths->next = newpath; - ld_state.tailpaths = newpath; - } -} - - -struct usedfiles * -ld_new_inputfile (const char *fname, enum file_type type) -{ - struct usedfiles *newfile = (struct usedfiles *) - obstack_calloc (&ld_state.smem, sizeof (struct usedfiles)); - - newfile->soname = newfile->fname = newfile->rfname = fname; - newfile->file_type = type; - newfile->extract_rule = ld_state.extract_rule; - newfile->lazyload = ld_state.lazyload; - newfile->status = not_opened; - - return newfile; -} - - -/* Create an array listing all the sections. We will than pass this - array to a system specific function which can reorder it at will. - The functions can also merge sections if this is what is - wanted. */ -static void -collect_sections (void) -{ - void *p ; - struct scnhead *h; - size_t cnt; - - /* We have that many sections. At least for now. */ - ld_state.nallsections = ld_state.section_tab.filled; - - /* Allocate the array. We allocate one more entry than computed so - far since we might need a new section for the copy relocations. */ - ld_state.allsections = - (struct scnhead **) obstack_alloc (&ld_state.smem, - (ld_state.nallsections + 1) - * sizeof (struct scnhead *)); - - /* Fill the array. We rely here on the hash table iterator to - return the entries in the order they were added. */ - cnt = 0; - p = NULL; - while ((h = ld_section_tab_iterate (&ld_state.section_tab, &p)) != NULL) - { - struct scninfo *runp; - bool used = false; - - if (h->kind == scn_normal) - { - runp = h->last; - do - { - if (h->type == SHT_REL || h->type == SHT_RELA) - { - if (runp->used) - /* This is a relocation section. If the section - it is relocating is used in the result so must - the relocation section. */ - runp->used - = runp->fileinfo->scninfo[SCNINFO_SHDR (runp->shdr).sh_info].used; - } - - /* Accumulate the result. */ - used |= runp->used; - - /* Next input section. */ - runp = runp->next; - } - while (runp != h->last); - - h->used = used; - } - - ld_state.allsections[cnt++] = h; - } - ld_state.nusedsections = cnt; - - assert (cnt == ld_state.nallsections); -} - - -/* Add given path to the end of list. */ -static void -add_rxxpath (struct pathelement **pathp, const char *str) -{ - struct pathelement *newp; - - /* The path elements can in theory be freed after we read all the - files. But the amount of memory we are talking about is small - and the cost of free() calls is not neglectable. */ - newp = (struct pathelement *) obstack_alloc (&ld_state.smem, sizeof (*newp)); - newp->pname = str; - newp->exist = 0; -#ifndef NDEBUG - newp->next = NULL; -#endif - - CSNGL_LIST_ADD_REAR (*pathp, newp); -} - - -/* Convert lists of possibly colon-separated directory lists into lists - where each entry is for a single directory. */ -static void -normalize_dirlist (struct pathelement **pathp) -{ - struct pathelement *firstp = *pathp; - - do - { - const char *pname = (*pathp)->pname; - const char *colonp = strchrnul (pname, ':'); - - if (colonp != NULL) - { - struct pathelement *lastp = *pathp; - struct pathelement *newp; - - while (1) - { - if (colonp == pname) - lastp->pname = "."; - else - lastp->pname = obstack_strndup (&ld_state.smem, pname, - colonp - pname); - - if (*colonp == '\0') - break; - pname = colonp + 1; - - newp = (struct pathelement *) obstack_alloc (&ld_state.smem, - sizeof (*newp)); - newp->next = lastp->next; - newp->exist = 0; - lastp = lastp->next = newp; - - colonp = strchrnul (pname, ':'); - } - - pathp = &lastp->next; - } - else - pathp = &(*pathp)->next; - } - while (*pathp != firstp); -} - - -/* Called after all parameters are parsed to bring the runpath/rpath - information into a usable form. */ -static void -gen_rxxpath_data (void) -{ - char *ld_library_path2; - - /* Convert the information in true single-linked lists for easy use. - At this point we also discard the rpath information if runpath - information is provided. rpath is deprecated and should not be - used (or ever be invented for that matter). */ - if (ld_state.rpath != NULL) - { - struct pathelement *endp = ld_state.rpath; - ld_state.rpath = ld_state.rpath->next; - endp->next = NULL; - } - if (ld_state.rpath_link != NULL) - { - struct pathelement *endp = ld_state.rpath_link; - ld_state.rpath_link = ld_state.rpath_link->next; - endp->next = NULL; - } - - if (ld_state.runpath != NULL) - { - struct pathelement *endp = ld_state.runpath; - ld_state.runpath = ld_state.runpath->next; - endp->next = NULL; - - /* If rpath information is also available discard it. - XXX Should there be a possibility to avoid this? */ - while (ld_state.rpath != NULL) - { - struct pathelement *old = ld_state.rpath; - ld_state.rpath = ld_state.rpath->next; - free (old); - } - } - if (ld_state.runpath_link != NULL) - { - struct pathelement *endp = ld_state.runpath_link; - ld_state.runpath_link = ld_state.runpath_link->next; - endp->next = NULL; - - /* If rpath information is also available discard it. - XXX Should there be a possibility to avoid this? */ - while (ld_state.rpath_link != NULL) - { - struct pathelement *old = ld_state.rpath_link; - ld_state.rpath_link = ld_state.rpath_link->next; - free (old); - } - - /* The information in the strings in the list can actually be - directory lists themselves, with entries separated by colons. - Convert the list now to a list with one list entry for each - directory. */ - normalize_dirlist (&ld_state.runpath_link); - } - else if (ld_state.rpath_link != NULL) - /* Same as for the runpath_link above. */ - normalize_dirlist (&ld_state.rpath_link); - - - /* As a related task, handle the LD_LIBRARY_PATH value here. First - we have to possibly split the value found (if it contains a - semicolon). Then we have to split the value in list of - directories, i.e., split at the colons. */ - if (ld_library_path1 != NULL) - { - ld_library_path2 = strchr (ld_library_path1, ';'); - if (ld_library_path2 == NULL) - { - /* If no semicolon is present the directories are looked at - after the -L parameters (-> ld_library_path2). */ - ld_library_path2 = ld_library_path1; - ld_library_path1 = NULL; - } - else - { - /* NUL terminate the first part. */ - *ld_library_path2++ = '\0'; - - /* Convert the string value in a list. */ - add_rxxpath (&ld_state.ld_library_path1, ld_library_path1); - normalize_dirlist (&ld_state.ld_library_path1); - } - - add_rxxpath (&ld_state.ld_library_path2, ld_library_path2); - normalize_dirlist (&ld_state.ld_library_path2); - } -} - - -static void -read_version_script (const char *fname) -{ - /* Open the file. The name is supposed to be the complete (relative - or absolute) path. No search along a path will be performed. */ - ldin = fopen (fname, "r"); - if (ldin == NULL) - error (EXIT_FAILURE, errno, gettext ("cannot read version script \"%s\""), - fname); - /* No need for locking. */ - __fsetlocking (ldin, FSETLOCKING_BYCALLER); - - /* Tell the parser that this is a version script. */ - ld_scan_version_script = 1; - - ldlineno = 1; - ldin_fname = fname; - if (ldparse () != 0) - /* Something went wrong during parsing. */ - exit (EXIT_FAILURE); - - fclose (ldin); -} - - -static void -create_lscript_symbols (void) -{ - /* Walk through the data from the linker script and generate all the - symbols which are required to be present and and those marked - with PROVIDE if there is a undefined reference. */ - if (ld_state.output_segments == NULL) - return; - - struct output_segment *segment = ld_state.output_segments->next; - do - { - struct output_rule *orule; - - for (orule = segment->output_rules; orule != NULL; orule = orule->next) - if (orule->tag == output_assignment - /* The assignments to "." (i.e., the PC) have to be - ignored here. */ - && strcmp (orule->val.assignment->variable, ".") != 0) - { - struct symbol *s = ld_state.unresolved; - - /* Check whether the symbol is needed. */ - if (likely (s != NULL)) - { - struct symbol *first = s; - const char *providename = orule->val.assignment->variable; - - /* Determine whether the provided symbol is still - undefined. */ - // XXX TODO Loop inside a loop. Gag! Must rewrite. */ - do - if (strcmp (s->name, providename) == 0) - { - /* Not defined but referenced. */ - if (unlikely (!s->defined)) - { - /* Put on the list of symbols. First remove it from - whatever list it currently is on. */ - CDBL_LIST_DEL (ld_state.unresolved, s); - --ld_state.nunresolved; - goto use_it; - } - - if (unlikely (!orule->val.assignment->provide_flag)) - { - /* The symbol is already defined and now again - in the linker script. This is an error. */ - error (0, 0, gettext ("\ -duplicate definition of '%s' in linker script"), - providename); - goto next_rule; - } - } - while ((s = s->next) != first); - } - - /* If the symbol only has to be provided if it is needed, - ignore it here since it is not undefined. */ - if (orule->val.assignment->provide_flag) - continue; - - /* Allocate memory for this new symbol. */ - s = (struct symbol *) - obstack_calloc (&ld_state.smem, sizeof (struct symbol)); - - /* Initialize it. */ - s->name = orule->val.assignment->variable; - - /* Insert it into the symbol hash table. */ - unsigned long int hval = elf_hash (s->name); - if (unlikely (ld_symbol_tab_insert (&ld_state.symbol_tab, - hval, s) != 0)) - { - /* This means the symbol is defined somewhere else. - Maybe it comes from a DSO or so. Get the - definition. */ - free (s); - struct symbol *old = ld_symbol_tab_find (&ld_state.symbol_tab, - hval, s); - assert (old != NULL); - free (s); - - /* If this is a definition from the application itself - this means a duplicate definition. */ - if (! old->in_dso) - { - error (0, 0, gettext ("\ -duplicate definition of '%s' in linker script"), - s->name); - goto next_rule; - } - - /* We use the definition from the linker script. */ - s = old; - } - - use_it: - /* The symbol is (now) defined. */ - s->defined = 1; - s->type = STT_NOTYPE; - - /* Add a reference to the symbol record. We will come - across it when creating the output file. */ - orule->val.assignment->sym = s; - - SNGL_LIST_PUSH (ld_state.lscript_syms, s); - ++ld_state.nlscript_syms; - - next_rule: - ; - } - - segment = segment->next; - } - while (segment != ld_state.output_segments->next); -} - - -/* Create creation of spection section symbols representing sections in the - output file. This is done for symbols like _GLOBAL_OFFSET_TABLE_ and - _DYNAMIC. */ -static void -create_special_section_symbol (struct symbol **symp, const char *name) -{ - if (*symp == NULL) - { - /* No symbol defined found yet. Create one. */ - struct symbol *newsym = (struct symbol *) - obstack_calloc (&ld_state.smem, sizeof (*newsym)); - - newsym->name = name; - // XXX Should we mark the symbol hidden? They are hardly useful - // used outside the current object. - - /* Add to the symbol table. */ - if (unlikely (ld_symbol_tab_insert (&ld_state.symbol_tab, - elf_hash (name), newsym) != 0)) - abort (); - - *symp = newsym; - } - else if ((*symp)->defined) - /* Cannot happen. We do use this symbol from any input file. */ - abort (); - - (*symp)->defined = 1; - (*symp)->type = STT_OBJECT; - - ++ld_state.nsymtab; -} diff --git a/src/ld.h b/src/ld.h deleted file mode 100644 index 760ff125..00000000 --- a/src/ld.h +++ /dev/null @@ -1,1073 +0,0 @@ -/* Copyright (C) 2001, 2002, 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef LD_H -#define LD_H 1 - -#include <dlfcn.h> -#include <obstack.h> -#include <stdbool.h> -#include <stdio.h> -#include "xelf.h" - - -/* Recommended size of the buffer passed to ld_strerror. */ -#define ERRBUFSIZE (512) - -/* Character used to introduce version name after symbol. */ -#define VER_CHR '@' - - -/* Methods for handling archives. */ -enum extract_rule - { - defaultextract, /* Weak references don't cause archive member to - be used. */ - weakextract, /* Weak references cause archive member to be - extracted. */ - allextract /* Extract all archive members regardless of - references (aka whole-archive). */ - }; - - -/* Type of output file. */ -enum file_type - { - no_file_type = 0, /* None selected so far. */ - executable_file_type, /* Executable. */ - dso_file_type, /* DSO. */ - dso_needed_file_type, /* DSO introduced by DT_NEEDED. */ - relocatable_file_type, /* Relocatable object file. */ - archive_file_type /* Archive (input only). */ - }; - - -struct usedfiles -{ - /* The next file given at the command line. */ - struct usedfiles *next; - /* Nonzero if this file is the beginning of a group. */ - bool group_start; - /* Nonzero if this file is the end of a group. */ - bool group_end; - /* Pointer to the beginning of the group. It is necessary to - explain why we cannot simply use the 'next' pointer and have a - circular single-linked list like in many cases. The problem is - that the last archive of the group, if it is the last file of the - group, contains the only existing pointer to the next file we - have to look at. All files are initially connected via the - 'next' pointer in a single-linked list. Therefore we cannot - overwrite this value. It instead will be used once the group is - handled and we go on processing the rest of the files. */ - struct usedfiles *group_backref; - - /* Name/path of the file. */ - const char *fname; - /* Resolved file name. */ - const char *rfname; - /* Name used as reference in DT_NEEDED entries. This is normally - the SONAME. If it is missing it's normally the fname above. */ - const char *soname; - /* Handle for the SONAME in the string table. */ - struct Ebl_Strent *sonameent; - - /* Help to identify duplicates. */ - dev_t dev; - ino_t ino; - - enum - { - not_opened, - opened, - in_archive, - closed - } status; - - /* How to extract elements from archives. */ - enum extract_rule extract_rule; - - /* Lazy-loading rule. */ - bool lazyload; - - /* If this is a DSO the flag indicates whether the file is directly - used in a reference. */ - bool used; - - /* If nonzero this is the archive sequence number which can be used to - determine whether back refernces from -( -) or GROUP statements - have to be followed. */ - int archive_seq; - - /* Pointer to the record for the archive containing this file. */ - struct usedfiles *archive_file; - - /* Type of file. We have to distinguish these types since they - are searched for differently. */ - enum file_type file_type; - /* This is the ELF library handle for this file. */ - Elf *elf; - - /* The ELF header. */ -#if NATIVE_ELF != 0 - XElf_Ehdr *ehdr; -# define FILEINFO_EHDR(fi) (*(fi)) -#else - XElf_Ehdr ehdr; -# define FILEINFO_EHDR(fi) (fi) -#endif - - /* Index of the section header string table section. We use a - separate field and not the e_shstrndx field in the ELF header - since in case of a file with more than 64000 sections the index - might be stored in the section header of section zero. The - elf_getshstrndx() function can find the value but it is too - costly to repeat this call over and over. */ - size_t shstrndx; - - /* Info about the sections of the file. */ - struct scninfo - { - /* Handle for the section. Note that we can store a section - handle here because the file is not changing. This together - with the knowledge about the libelf library is enough for us to - assume the section reference remains valid at all times. */ - Elf_Scn *scn; - /* Section header. */ -#if NATIVE_ELF != 0 - XElf_Shdr *shdr; -# define SCNINFO_SHDR(si) (*(si)) -#else - XElf_Shdr shdr; -# define SCNINFO_SHDR(si) (si) -#endif - /* Offset of this files section in the combined section. */ - XElf_Off offset; - /* Index of the section in the output file. */ - Elf32_Word outscnndx; - /* Index of the output section in the 'allsection' array. */ - Elf32_Word allsectionsidx; - /* True if the section is used. */ - bool used; - /* Section group number. This is the index of the SHT_GROUP section. */ - Elf32_Word grpid; - /* Pointer back to the containing file information structure. */ - struct usedfiles *fileinfo; - /* List of symbols in this section (set only for merge-able sections). */ - struct symbol *symbols; - /* Size of relocations in this section. Only used for relocation - sections. */ - size_t relsize; - /* Pointer to next section which is put in the given output - section. */ - struct scninfo *next; - } *scninfo; - - /* List of section group sections. */ - struct scninfo *groups; - - /* The symbol table section. - - XXX Maybe support for more than one symbol table is needed. */ - Elf_Data *symtabdata; - /* Extra section index table section. */ - Elf_Data *xndxdata; - /* Dynamic symbol table section. */ - Elf_Data *dynsymtabdata; - /* The version number section. */ - Elf_Data *versymdata; - /* The defined versions. */ - Elf_Data *verdefdata; - /* Number of versions defined. */ - size_t nverdef; - /* True if the version with the given index number is used in the - output. */ - XElf_Versym *verdefused; - /* How many versions are used. */ - size_t nverdefused; - /* Handle for name of the version. */ - struct Ebl_Strent **verdefent; - /* The needed versions. */ - Elf_Data *verneeddata; - /* String table section associated with the symbol table. */ - Elf32_Word symstridx; - /* String table section associated with the dynamic symbol table. */ - Elf32_Word dynsymstridx; - /* Number of entries in the symbol table. */ - size_t nsymtab; - size_t nlocalsymbols; - size_t ndynsymtab; - /* Dynamic section. */ - Elf_Scn *dynscn; - - /* Indirection table for the symbols defined here. */ - Elf32_Word *symindirect; - Elf32_Word *dynsymindirect; - /* For undefined or common symbols we need a reference to the symbol - record. */ - struct symbol **symref; - struct symbol **dynsymref; - - /* This is the file descriptor. The value is -1 if the descriptor - was already closed. This can happen if we needed file descriptors - to open new files. */ - int fd; - /* This flag is true if the descriptor was passed to the generic - functions from somewhere else. This is an implementation detail; - no machine-specific code must use this flag. */ - bool fd_passed; - - /* True if any of the sections is merge-able. */ - bool has_merge_sections; -}; - - -/* Functions to test for the various types of files we handle. */ -static inline int -ld_file_rel_p (struct usedfiles *file) -{ - return (elf_kind (file->elf) == ELF_K_ELF - && FILEINFO_EHDR (file->ehdr).e_type == ET_REL); -} - -static inline int -ld_file_dso_p (struct usedfiles *file) -{ - return (elf_kind (file->elf) == ELF_K_ELF - && FILEINFO_EHDR (file->ehdr).e_type == ET_DYN); -} - -static inline int -ld_file_ar_p (struct usedfiles *file) -{ - return elf_kind (file->elf) == ELF_K_AR; -} - - -struct pathelement -{ - /* The next path to search. */ - struct pathelement *next; - /* The path name. */ - const char *pname; - /* Larger than zero if the directory exists, smaller than zero if not, - zero if it is not yet known. */ - int exist; -}; - - -/* Forward declaration. */ -struct ld_state; - - -/* Callback functions. */ -struct callbacks -{ - /* Library names passed to the linker as -lXXX represent files named - libXXX.YY. The YY part can have different forms, depending on the - architecture. The generic set is .so and .a (in this order). */ - const char **(*lib_extensions) (struct ld_state *) - __attribute__ ((__const__)); -#define LIB_EXTENSION(state) \ - DL_CALL_FCT ((state)->callbacks.lib_extensions, (state)) - - /* Process the given file. If the file is not yet open, open it. - The first parameter is a file descriptor for the file which can - be -1 to indicate the file has not yet been found. The second - parameter describes the file to be opened, the last one is the - state of the linker which among other information contain the - paths we look at.*/ - int (*file_process) (int fd, struct usedfiles *, struct ld_state *, - struct usedfiles **); -#define FILE_PROCESS(fd, file, state, nextp) \ - DL_CALL_FCT ((state)->callbacks.file_process, (fd, file, state, nextp)) - - /* Close the given file. */ - int (*file_close) (struct usedfiles *, struct ld_state *); -#define FILE_CLOSE(file, state) \ - DL_CALL_FCT ((state)->callbacks.file_close, (file, state)) - - /* Create the output sections now. This requires knowledge about - all the sections we will need. It may be necessary to sort the - sections in the order they are supposed to appear in the - executable. The sorting use many different kinds of information - to optimize the resulting binary. Important is to respect - segment boundaries and the needed alignment. The mode of the - segments will be determined afterwards automatically by the - output routines. */ - void (*create_sections) (struct ld_state *); -#define CREATE_SECTIONS(state) \ - DL_CALL_FCT ((state)->callbacks.create_sections, (state)) - - /* Determine whether we have any non-weak unresolved references left. */ - int (*flag_unresolved) (struct ld_state *); -#define FLAG_UNRESOLVED(state) \ - DL_CALL_FCT ((state)->callbacks.flag_unresolved, (state)) - - /* Create the sections which are generated by the linker and are not - present in the input file. */ - void (*generate_sections) (struct ld_state *); -#define GENERATE_SECTIONS(state) \ - DL_CALL_FCT ((state)->callbacks.generate_sections, (state)) - - /* Open the output file. The file name is given or "a.out". We - create as much of the ELF structure as possible. */ - int (*open_outfile) (struct ld_state *, int, int, int); -#define OPEN_OUTFILE(state, machine, class, data) \ - DL_CALL_FCT ((state)->callbacks.open_outfile, (state, machine, class, data)) - - /* Create the data for the output file. */ - int (*create_outfile) (struct ld_state *); -#define CREATE_OUTFILE(state) \ - DL_CALL_FCT ((state)->callbacks.create_outfile, (state)) - - /* Process a relocation section. */ - void (*relocate_section) (struct ld_state *, Elf_Scn *, struct scninfo *, - const Elf32_Word *); -#define RELOCATE_SECTION(state, outscn, first, dblindirect) \ - DL_CALL_FCT ((state)->callbacks.relocate_section, (state, outscn, first, \ - dblindirect)) - - /* Allocate a data buffer for the relocations of the given output - section. */ - void (*count_relocations) (struct ld_state *, struct scninfo *); -#define COUNT_RELOCATIONS(state, scninfo) \ - DL_CALL_FCT ((state)->callbacks.count_relocations, (state, scninfo)) - - /* Create relocations for executable or DSO. */ - void (*create_relocations) (struct ld_state *, const Elf32_Word *); -#define CREATE_RELOCATIONS(state, dlbindirect) \ - DL_CALL_FCT ((state)->callbacks.create_relocations, (state, dblindirect)) - - /* Finalize the output file. */ - int (*finalize) (struct ld_state *); -#define FINALIZE(state) \ - DL_CALL_FCT ((state)->callbacks.finalize, (state)) - - /* Check whether special section number is known. */ - bool (*special_section_number_p) (struct ld_state *, size_t); -#define SPECIAL_SECTION_NUMBER_P(state, number) \ - DL_CALL_FCT ((state)->callbacks.special_section_number_p, (state, number)) - - /* Check whether section type is known. */ - bool (*section_type_p) (struct ld_state *, XElf_Word); -#define SECTION_TYPE_P(state, type) \ - DL_CALL_FCT ((state)->callbacks.section_type_p, (state, type)) - - /* Return section flags for .dynamic section. */ - XElf_Xword (*dynamic_section_flags) (struct ld_state *); -#define DYNAMIC_SECTION_FLAGS(state) \ - DL_CALL_FCT ((state)->callbacks.dynamic_section_flags, (state)) - - /* Create the data structures for the .plt section and initialize it. */ - void (*initialize_plt) (struct ld_state *, Elf_Scn *scn); -#define INITIALIZE_PLT(state, scn) \ - DL_CALL_FCT ((state)->callbacks.initialize_plt, (state, scn)) - - /* Create the data structures for the .rel.plt section and initialize it. */ - void (*initialize_pltrel) (struct ld_state *, Elf_Scn *scn); -#define INITIALIZE_PLTREL(state, scn) \ - DL_CALL_FCT ((state)->callbacks.initialize_pltrel, (state, scn)) - - /* Finalize the .plt section the what belongs to them. */ - void (*finalize_plt) (struct ld_state *, size_t, size_t); -#define FINALIZE_PLT(state, nsym, nsym_dyn) \ - DL_CALL_FCT ((state)->callbacks.finalize_plt, (state, nsym, nsym_dyn)) - - /* Create the data structures for the .got section and initialize it. */ - void (*initialize_got) (struct ld_state *, Elf_Scn *scn); -#define INITIALIZE_GOT(state, scn) \ - DL_CALL_FCT ((state)->callbacks.initialize_got, (state, scn)) - - /* Return the tag corresponding to the native relocation type for - the platform. */ - int (*rel_type) (struct ld_state *); -#define REL_TYPE(state) \ - DL_CALL_FCT ((state)->callbacks.rel_type, (state)) -}; - - -/* Structure for symbol representation. This data structure is used a - lot, so size is important. */ -struct symbol -{ - /* Symbol name. */ - const char *name; - /* Size of the object. */ - XElf_Xword size; - /* Index of the symbol in the symbol table of the object. */ - size_t symidx; - /* Index of the symbol in the symbol table of the output file. */ - size_t outsymidx; - - /* Description where the symbol is found/needed. */ - size_t scndx; - struct usedfiles *file; - /* Index of the symbol table. */ - Elf32_Word symscndx; - - /* Index of the symbol in the dynamic symbol table of the output - file. Note that the value only needs to be 16 bit wide since - there cannot be more sections in an executable or DSO. */ - unsigned int outdynsymidx:16; - - /* Type of the symbol. */ - unsigned int type:4; - /* Various flags. */ - unsigned int defined:1; - unsigned int common:1; - unsigned int weak:1; - unsigned int added:1; - unsigned int merged:1; - /* Nonzero if the symbol is on the from_dso list. */ - unsigned int on_dsolist:1; - /* Nonzero if symbol needs copy relocation, reset when the - relocation has been created. */ - unsigned int need_copy:1; - unsigned int in_dso:1; - - union - { - /* Pointer to the handle created by the functions which create - merged section contents. We use 'void *' because there are - different implementations used. */ - void *handle; - XElf_Addr value; - } merge; - - /* Pointer to next/previous symbol on whatever list the symbol is. */ - struct symbol *next; - struct symbol *previous; - /* Pointer to next symbol of the same section (only set for merge-able - sections). */ - struct symbol *next_in_scn; -}; - - -/* Get the definition for the symbol table. */ -#include <symbolhash.h> - -/* Simple single linked list of file names. */ -struct filename_list -{ - const char *name; - struct usedfiles *real; - struct filename_list *next; - bool group_start; - bool group_end; -}; - - -/* Data structure to describe expression in linker script. */ -struct expression -{ - enum expression_tag - { - exp_num, - exp_sizeof_headers, - exp_pagesize, - exp_id, - exp_mult, - exp_div, - exp_mod, - exp_plus, - exp_minus, - exp_and, - exp_or, - exp_align - } tag; - - union - { - uintmax_t num; - struct expression *child; - struct - { - struct expression *left; - struct expression *right; - } binary; - const char *str; - } val; -}; - - -/* Data structure for section name with flags. */ -struct input_section_name -{ - const char *name; - bool sort_flag; -}; - -/* File name mask with section name. */ -struct filemask_section_name -{ - const char *filemask; - const char *excludemask; - struct input_section_name *section_name; - bool keep_flag; -}; - -/* Data structure for assignments. */ -struct assignment -{ - const char *variable; - struct expression *expression; - struct symbol *sym; - bool provide_flag; -}; - - -/* Data structure describing input for an output section. */ -struct input_rule -{ - enum - { - input_section, - input_assignment - } tag; - - union - { - struct assignment *assignment; - struct filemask_section_name *section; - } val; - - struct input_rule *next; -}; - - -/* Data structure to describe output section. */ -struct output_section -{ - const char *name; - struct input_rule *input; - XElf_Addr max_alignment; - bool ignored; -}; - - -/* Data structure to describe output file format. */ -struct output_rule -{ - enum - { - output_section, - output_assignment - } tag; - - union - { - struct assignment *assignment; - struct output_section section; - } val; - - struct output_rule *next; -}; - - -/* List of all the segments the linker script describes. */ -struct output_segment -{ - int mode; - struct output_rule *output_rules; - struct output_segment *next; - - XElf_Off offset; - XElf_Addr addr; - XElf_Xword align; -}; - - -/* List of identifiers. */ -struct id_list -{ - union - { - enum id_type - { - id_str, /* Normal string. */ - id_all, /* "*", matches all. */ - id_wild /* Globbing wildcard string. */ - } id_type; - struct - { - bool local; - const char *versionname; - } s; - } u; - const char *id; - struct id_list *next; -}; - - -/* Version information. */ -struct version -{ - struct version *next; - struct id_list *local_names; - struct id_list *global_names; - const char *versionname; - const char *parentname; -}; - - -/* Head for list of sections. */ -struct scnhead -{ - /* Name of the sections. */ - const char *name; - - /* Accumulated flags for the sections. */ - XElf_Xword flags; - - /* Type of the sections. */ - XElf_Word type; - - /* Entry size. If there are differencs between the sections with - the same name this field contains 1. */ - XElf_Word entsize; - - /* If non-NULL pointer to group signature. */ - const char *grp_signature; - - /* Maximum alignment for all sections. */ - XElf_Word align; - - /* Distinguish between normal sections coming from the input file - and sections generated by the linker. */ - enum scn_kind - { - scn_normal, /* Section from the input file(s). */ - scn_dot_interp, /* Generated .interp section. */ - scn_dot_got, /* Generated .got section. */ - scn_dot_dynrel, /* Generated .rel.dyn section. */ - scn_dot_dynamic, /* Generated .dynamic section. */ - scn_dot_dynsym, /* Generated .dynsym section. */ - scn_dot_dynstr, /* Generated .dynstr section. */ - scn_dot_hash, /* Generated .hash section. */ - scn_dot_plt, /* Generated .plt section. */ - scn_dot_pltrel, /* Generated .rel.plt section. */ - scn_dot_version, /* Generated .gnu.version section. */ - scn_dot_version_r /* Generated .gnu.version_r section. */ - } kind; - - /* True is the section is used in the output. */ - bool used; - - /* Total size (only determined this way for relocation sections). */ - size_t relsize; - - /* Filled in by the section sorting to indicate which segment the - section goes in. */ - int segment_nr; - - /* Index of the output section. We cannot store the section handle - directly here since the handle is a pointer in a dynamically - allocated table which might move if it becomes too small for all - the sections. Using the index the correct value can be found at - all times. */ - XElf_Word scnidx; - - /* Index of the STT_SECTION entry for this section in the symbol - table. */ - XElf_Word scnsymidx; - - /* Address of the section in the output file. */ - XElf_Addr addr; - - /* Handle for the section name in the output file's section header - string table. */ - struct Ebl_Strent *nameent; - - /* Tail of list of symbols for this section. Only set if the - section is merge-able. */ - struct symbol *symbols; - - /* Pointer to last section. */ - struct scninfo *last; -}; - - -/* Define hash table for sections. */ -#include <sectionhash.h> - -/* Define hash table for version symbols. */ -#include <versionhash.h> - - -/* State of the linker. */ -struct ld_state -{ - /* ELF backend library handle. */ - Ebl *ebl; - - /* List of all archives participating, in this order. */ - struct usedfiles *archives; - /* End of the list. */ - struct usedfiles *tailarchives; - /* If nonzero we are looking for the beginning of a group. */ - bool group_start_requested; - /* Pointer to the archive starting the group. */ - struct usedfiles *group_start_archive; - - /* List of the DSOs we found. */ - struct usedfiles *dsofiles; - /* Number of DSO files. */ - size_t ndsofiles; - /* Ultimate list of object files which are linked in. */ - struct usedfiles *relfiles; - - /* List the DT_NEEDED DSOs. */ - struct usedfiles *needed; - - /* Temporary storage for the parser. */ - struct filename_list *srcfiles; - - /* List of all the paths to look at. */ - struct pathelement *paths; - /* Tail of the list. */ - struct pathelement *tailpaths; - - /* User provided paths for lookup of DSOs. */ - struct pathelement *rpath; - struct pathelement *rpath_link; - struct pathelement *runpath; - struct pathelement *runpath_link; - struct Ebl_Strent *rxxpath_strent; - int rxxpath_tag; - - /* From the environment variable LD_LIBRARY_PATH. */ - struct pathelement *ld_library_path1; - struct pathelement *ld_library_path2; - - /* Name of the output file. */ - const char *outfname; - /* Name of the temporary file we initially create. */ - const char *tempfname; - /* File descriptor opened for the output file. */ - int outfd; - /* The ELF descriptor for the output file. */ - Elf *outelf; - - /* Type of output file. */ - enum file_type file_type; - - /* Is this a system library or not. */ - bool is_system_library; - - /* Page size to be assumed for the binary. */ - size_t pagesize; - - /* Name of the interpreter for dynamically linked objects. */ - const char *interp; - /* Index of the .interp section. */ - Elf32_Word interpscnidx; - - /* Optimization level. */ - unsigned long int optlevel; - - /* If true static linking is requested. */ - bool statically; - - /* How to extract elements from archives. */ - enum extract_rule extract_rule; - - /* Sequence number of the last archive we used. */ - int last_archive_used; - - /* If true print to stdout information about the files we are - trying to open. */ - bool trace_files; - - /* If true multiple definitions are not considered an error; the - first is used. */ - bool muldefs; - - /* If true undefined symbols when building DSOs are not fatal. */ - bool nodefs; - - /* If true add line indentifying link-editor to .comment section. */ - bool add_ld_comment; - - /* Stripping while linking. */ - enum - { - strip_none, - strip_debug, - strip_all, - strip_everything - } strip; - - /* The callback function vector. */ - struct callbacks callbacks; - - /* Name of the entry symbol. Can also be a numeric value. */ - const char *entry; - - /* The description of the segments in the output file. */ - struct output_segment *output_segments; - - /* List of the symbols we created from linker script definitions. */ - struct symbol *lscript_syms; - size_t nlscript_syms; - - /* Table with known symbols. */ - ld_symbol_tab symbol_tab; - - /* Table with used sections. */ - ld_section_tab section_tab; - - /* The list of sections once we collected them. */ - struct scnhead **allsections; - size_t nallsections; - size_t nusedsections; - size_t nnotesections; - - /* Beginning of the list of symbols which are still unresolved. */ - struct symbol *unresolved; - /* Number of truely unresolved entries in the list. */ - size_t nunresolved; - /* Number of truely unresolved, non-weak entries in the list. */ - size_t nunresolved_nonweak; - - /* List of common symbols. */ - struct symbol *common_syms; - /* Section for the common symbols. */ - struct scninfo *common_section; - - /* List of symbols defined in DSOs and used in a relocatable file. - DSO symbols not referenced in the relocatable files are not on - the list. If a symbol is on the list the on_dsolist field in the - 'struct symbol' is nonzero. */ - struct symbol *from_dso; - /* Number of entries in from_dso. */ - size_t nfrom_dso; - /* Number of entries in the dynamic symbol table. */ - size_t ndynsym; - /* Number of PLT entries from DSO references. */ - size_t nplt; - /* Number of PLT entries from DSO references. */ - size_t ngot; - /* Number of copy relocations. */ - size_t ncopy; - /* Section for copy relocations. */ - struct scninfo *copy_section; - - /* Keeping track of the number of symbols in the output file. */ - size_t nsymtab; - size_t nlocalsymbols; - - /* Special symbols. */ - struct symbol *init_symbol; - struct symbol *fini_symbol; - - /* The description of the segments in the output file as described - in the default linker script. This information will be used in - addition to the user-provided information. */ - struct output_segment *default_output_segments; - /* Search paths added by the default linker script. */ - struct pathelement *default_paths; - -#ifndef BASE_ELF_NAME - /* The handle of the ld backend library. */ - void *ldlib; -#endif - - /* String table for the section headers. */ - struct Ebl_Strtab *shstrtab; - - /* True if output file should contain symbol table. */ - bool need_symtab; - /* Symbol table section. */ - Elf32_Word symscnidx; - /* Extended section table section. */ - Elf32_Word xndxscnidx; - /* Symbol string table section. */ - Elf32_Word strscnidx; - - /* True if output file should contain dynamic symbol table. */ - bool need_dynsym; - /* Dynamic symbol table section. */ - Elf32_Word dynsymscnidx; - /* Dynamic symbol string table section. */ - Elf32_Word dynstrscnidx; - /* Dynamic symbol hash table. */ - size_t hashscnidx; - - /* Procedure linkage table section. */ - Elf32_Word pltscnidx; - /* Number of entries already in the PLT section. */ - size_t nplt_used; - /* Relocation for procedure linkage table section. */ - Elf32_Word pltrelscnidx; - - /* Global offset table section. */ - Elf32_Word gotscnidx; - - /* This section will hole all non-PLT relocations. */ - Elf32_Word reldynscnidx; - - /* Index of the sections to handle versioning. */ - Elf32_Word versymscnidx; - Elf32_Word verneedscnidx; - /* XXX Should the following names be verneed...? */ - /* Number of version definitions in input DSOs used. */ - int nverdefused; - /* Number of input DSOs using versioning. */ - int nverdeffile; - /* Index of next version. */ - int nextveridx; - - /* Hash table for version symbol strings. Only strings without - special characters are hashed here. */ - ld_version_str_tab version_str_tab; - /* At most one of the following two variables is set to true if either - global or local symbol binding is selected as the default. */ - bool default_bind_local; - bool default_bind_global; - - /* True if only used sections are used. */ - bool gc_sections; - - /* Array to determine final index of symbol. */ - Elf32_Word *dblindirect; - - /* Section group handling. */ - struct scngroup - { - Elf32_Word outscnidx; - int nscns; - struct member - { - struct scnhead *scn; - struct member *next; - } *member; - struct Ebl_Strent *nameent; - struct symbol *symbol; - struct scngroup *next; - } *groups; - - /* True if the output file needs a .got section. */ - bool need_got; - /* Number of relocations for GOT section caused. */ - size_t nrel_got; - - /* Number of entries needed in the .dynamic section. */ - int ndynamic; - /* To keep track of added entries. */ - int ndynamic_filled; - /* Index for the dynamic section. */ - Elf32_Word dynamicscnidx; - - /* Flags set in the DT_FLAGS word. */ - Elf32_Word dt_flags; - /* Flags set in the DT_FLAGS_1 word. */ - Elf32_Word dt_flags_1; - /* Flags set in the DT_FEATURE_1 word. */ - Elf32_Word dt_feature_1; - - /* Lazy-loading state for dependencies. */ - bool lazyload; - - /* True is DSOs which are not used in the linking process are not - recorded. */ - bool ignore_unused_dsos; - - - /* True if in executables all global symbols should be exported in - the dynamic symbol table. */ - bool export_all_dynamic; - - /* If DSO is generated, this is the SONAME. */ - const char *soname; - - /* List of all relocation sections. */ - struct scninfo *rellist; - /* Total size of non-PLT relocations. */ - size_t relsize_total; - - /* Record for the GOT symbol, if known. */ - struct symbol *got_symbol; - /* Record for the dynamic section symbol, if known. */ - struct symbol *dyn_symbol; - - /* Obstack used for small objects which will not be deleted. */ - struct obstack smem; -}; - - -/* The interface to the scanner. */ - -/* Parser entry point. */ -extern int ldparse (void); - -/* The input file. */ -extern FILE *ldin; - -/* Name of the input file. */ -extern const char *ldin_fname; - -/* Current line number. Must be reset for a new file. */ -extern int ldlineno; - -/* If nonzero we are currently parsing a version script. */ -extern int ld_scan_version_script; - -/* Flags defined in ld.c. */ -extern int verbose; -extern int conserve_memory; - - -/* Linker state. This contains all global information. */ -extern struct ld_state ld_state; - - -/* Generic ld helper functions. */ - -/* Append a new directory to search libraries in. */ -extern void ld_new_searchdir (const char *dir); - -/* Append a new file to the list of input files. */ -extern struct usedfiles *ld_new_inputfile (const char *fname, - enum file_type type); - - -/* These are the generic implementations for the callbacks used by ld. */ - -/* Initialize state object. This callback function is called after the - parameters are parsed but before any file is searched for. */ -extern int ld_prepare_state (const char *emulation); - - -/* Function to determine whether an object will be dynamically linked. */ -extern bool dynamically_linked_p (void); - -/* Helper functions for the architecture specific code. */ - -/* Checked whether the symbol is undefined and referenced from a DSO. */ -extern bool linked_from_dso_p (struct scninfo *scninfo, int symidx); -extern inline bool -linked_from_dso_p (struct scninfo *scninfo, int symidx) -{ - struct usedfiles *file = scninfo->fileinfo; - - /* If this symbol is not undefined in this file it cannot come from - a DSO. */ - if (symidx < file->nlocalsymbols) - return false; - - struct symbol *sym = file->symref[symidx]; - - return sym->defined && sym->in_dso; -} - -#endif /* ld.h */ diff --git a/src/ldgeneric.c b/src/ldgeneric.c deleted file mode 100644 index a33e9fcc..00000000 --- a/src/ldgeneric.c +++ /dev/null @@ -1,6376 +0,0 @@ -/* Copyright (C) 2001, 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <dlfcn.h> -#include <errno.h> -#include <error.h> -#include <fcntl.h> -#include <fnmatch.h> -#include <gelf.h> -#include <inttypes.h> -#include <libintl.h> -#include <stdbool.h> -#include <stdio_ext.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <sys/param.h> -#include <sys/stat.h> - -#include <system.h> -#include "ld.h" -#include "list.h" - - -/* Prototypes for local functions. */ -static const char **ld_generic_lib_extensions (struct ld_state *) - __attribute__ ((__const__)); -static int ld_generic_file_close (struct usedfiles *fileinfo, - struct ld_state *statep); -static int ld_generic_file_process (int fd, struct usedfiles *fileinfo, - struct ld_state *statep, - struct usedfiles **nextp); -static void ld_generic_generate_sections (struct ld_state *statep); -static void ld_generic_create_sections (struct ld_state *statep); -static int ld_generic_flag_unresolved (struct ld_state *statep); -static int ld_generic_open_outfile (struct ld_state *statep, int machine, - int class, int data); -static int ld_generic_create_outfile (struct ld_state *statep); -static void ld_generic_relocate_section (struct ld_state *statep, - Elf_Scn *outscn, - struct scninfo *firstp, - const Elf32_Word *dblindirect); -static int ld_generic_finalize (struct ld_state *statep); -static bool ld_generic_special_section_number_p (struct ld_state *statep, - size_t number); -static bool ld_generic_section_type_p (struct ld_state *statep, - XElf_Word type); -static XElf_Xword ld_generic_dynamic_section_flags (struct ld_state *statep); -static void ld_generic_initialize_plt (struct ld_state *statep, Elf_Scn *scn); -static void ld_generic_initialize_pltrel (struct ld_state *statep, - Elf_Scn *scn); -static void ld_generic_initialize_got (struct ld_state *statep, Elf_Scn *scn); -static void ld_generic_finalize_plt (struct ld_state *statep, size_t nsym, - size_t nsym_dyn); -static int ld_generic_rel_type (struct ld_state *statep); -static void ld_generic_count_relocations (struct ld_state *statep, - struct scninfo *scninfo); -static void ld_generic_create_relocations (struct ld_state *statep, - const Elf32_Word *dblindirect); - -static int file_process2 (struct usedfiles *fileinfo); -static void mark_section_used (struct scninfo *scninfo, Elf32_Word shndx, - struct scninfo **grpscnp); - - -/* Map symbol index to struct symbol record. */ -static struct symbol **ndxtosym; - -/* String table reference to all symbols in the symbol table. */ -static struct Ebl_Strent **symstrent; - - -/* Check whether file associated with FD is a DSO. */ -static bool -is_dso_p (int fd) -{ - /* We have to read the 'e_type' field. It has the same size (16 - bits) in 32- and 64-bit ELF. */ - XElf_Half e_type; - - return (pread (fd, &e_type, sizeof (e_type), offsetof (XElf_Ehdr, e_type)) - == sizeof (e_type) - && e_type == ET_DYN); -} - - -/* Print the complete name of a file, including the archive it is - contained in. */ -static int -print_file_name (FILE *s, struct usedfiles *fileinfo, int first_level, - int newline) -{ - int npar = 0; - - if (fileinfo->archive_file != NULL) - { - npar = print_file_name (s, fileinfo->archive_file, 0, 0) + 1; - fputc_unlocked ('(', s); - fputs_unlocked (fileinfo->rfname, s); - - if (first_level) - while (npar-- > 0) - fputc_unlocked (')', s); - } - else - fputs_unlocked (fileinfo->rfname, s); - - if (first_level && newline) - fputc_unlocked ('\n', s); - - return npar; -} - - -/* Function to determine whether an object will be dynamically linked. */ -bool -dynamically_linked_p (void) -{ - return (ld_state.file_type == dso_file_type || ld_state.nplt > 0 - || ld_state.ngot > 0); -} - - -bool -linked_from_dso_p (struct scninfo *scninfo, int symidx) -{ - struct usedfiles *file = scninfo->fileinfo; - - /* If this symbol is not undefined in this file it cannot come from - a DSO. */ - if (symidx < file->nlocalsymbols) - return false; - - struct symbol *sym = file->symref[symidx]; - - return sym->defined && sym->in_dso; -} - - -/* Initialize state object. This callback function is called after the - parameters are parsed but before any file is searched for. */ -int -ld_prepare_state (const char *emulation) -{ - /* When generating DSO we normally allow undefined symbols. */ - ld_state.nodefs = true; - - /* To be able to detect problems we add a .comment section entry by - default. */ - ld_state.add_ld_comment = true; - - /* XXX We probably should find a better place for this. The index - of the first user-defined version is 2. */ - ld_state.nextveridx = 2; - - /* Pick an not too small number for the initial size of the tables. */ - ld_symbol_tab_init (&ld_state.symbol_tab, 1027); - ld_section_tab_init (&ld_state.section_tab, 67); - ld_version_str_tab_init (&ld_state.version_str_tab, 67); - - /* Initialize the section header string table. */ - ld_state.shstrtab = ebl_strtabinit (true); - if (ld_state.shstrtab == NULL) - error (EXIT_FAILURE, errno, gettext ("cannot create string table")); - - /* Initialize the callbacks. These are the defaults, the appropriate - backend can later install its own callbacks. */ - ld_state.callbacks.lib_extensions = ld_generic_lib_extensions; - ld_state.callbacks.file_process = ld_generic_file_process; - ld_state.callbacks.file_close = ld_generic_file_close; - ld_state.callbacks.generate_sections = ld_generic_generate_sections; - ld_state.callbacks.create_sections = ld_generic_create_sections; - ld_state.callbacks.flag_unresolved = ld_generic_flag_unresolved; - ld_state.callbacks.open_outfile = ld_generic_open_outfile; - ld_state.callbacks.create_outfile = ld_generic_create_outfile; - ld_state.callbacks.relocate_section = ld_generic_relocate_section; - ld_state.callbacks.finalize = ld_generic_finalize; - ld_state.callbacks.special_section_number_p = - ld_generic_special_section_number_p; - ld_state.callbacks.section_type_p = ld_generic_section_type_p; - ld_state.callbacks.dynamic_section_flags = ld_generic_dynamic_section_flags; - ld_state.callbacks.initialize_plt = ld_generic_initialize_plt; - ld_state.callbacks.initialize_pltrel = ld_generic_initialize_pltrel; - ld_state.callbacks.initialize_got = ld_generic_initialize_got; - ld_state.callbacks.finalize_plt = ld_generic_finalize_plt; - ld_state.callbacks.rel_type = ld_generic_rel_type; - ld_state.callbacks.count_relocations = ld_generic_count_relocations; - ld_state.callbacks.create_relocations = ld_generic_create_relocations; - -#ifndef BASE_ELF_NAME - /* Find the ld backend library. Use EBL to determine the name if - the user hasn't provided one on the command line. */ - if (emulation == NULL) - { - emulation = ebl_backend_name (ld_state.ebl); - assert (emulation != NULL); - } - size_t emulation_len = strlen (emulation); - - /* Construct the file name. */ - char *fname = (char *) alloca (sizeof "libld_" - 1 + emulation_len - + sizeof ".so"); - strcpy (mempcpy (stpcpy (fname, "libld_"), emulation, emulation_len), ".so"); - - /* Try loading. */ - void *h = dlopen (fname, RTLD_LAZY); - if (h == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot load ld backend library '%s': %s"), - fname, dlerror ()); - - /* Find the initializer. It must be present. */ - char *initname = (char *) alloca (emulation_len + sizeof "_ld_init"); - strcpy (mempcpy (initname, emulation, emulation_len), "_ld_init"); - int (*initfct) (struct ld_state *) - = (int (*) (struct ld_state *)) dlsym (h, initname); - - if (initfct == NULL) - error (EXIT_FAILURE, 0, gettext ("\ -cannot find init function in ld backend library '%s': %s"), - fname, dlerror ()); - - /* Store the handle. */ - ld_state.ldlib = h; - - /* Call the init function. */ - return initfct (&ld_state); -#else -# define INIT_FCT_NAME(base) _INIT_FCT_NAME(base) -# define _INIT_FCT_NAME(base) base##_ld_init - /* Declare and call the initialization function. */ - extern int INIT_FCT_NAME(BASE_ELF_NAME) (struct ld_state *); - return INIT_FCT_NAME(BASE_ELF_NAME) (&ld_state); -#endif -} - - -static int -check_for_duplicate2 (struct usedfiles *newp, struct usedfiles *list) -{ - struct usedfiles *first; - struct usedfiles *prevp; - - if (list == NULL) - return 0; - - prevp = list; - list = first = list->next; - do - { - /* When searching the needed list we might come across entries - for files which are not yet opened. Stop then, there is - nothing more to test. */ - if (likely (list->status == not_opened)) - break; - - if (unlikely (list->ino == newp->ino) - && unlikely (list->dev == newp->dev)) - { - close (newp->fd); - newp->fd = -1; - newp->status = closed; - if (newp->file_type == relocatable_file_type) - error (0, 0, gettext ("%s listed more than once as input"), - newp->rfname); - - return 1; - } - list = list->next; - } - while (likely (list != first)); - - return 0; -} - - -static int -check_for_duplicate (struct usedfiles *newp) -{ - struct stat st; - - if (unlikely (fstat (newp->fd, &st) < 0)) - { - close (newp->fd); - return errno; - } - - newp->dev = st.st_dev; - newp->ino = st.st_ino; - - return (check_for_duplicate2 (newp, ld_state.relfiles) - || check_for_duplicate2 (newp, ld_state.dsofiles) - || check_for_duplicate2 (newp, ld_state.needed)); -} - - -/* Find a file along the path described in the state. */ -static int -open_along_path2 (struct usedfiles *fileinfo, struct pathelement *path) -{ - const char *fname = fileinfo->fname; - size_t fnamelen = strlen (fname); - int err = ENOENT; - struct pathelement *firstp = path; - - if (path == NULL) - /* Cannot find anything since we have no path. */ - return ENOENT; - - do - { - if (likely (path->exist >= 0)) - { - /* Create the file name. */ - char *rfname = NULL; - size_t dirlen = strlen (path->pname); - int fd = -1; - - if (fileinfo->file_type == archive_file_type) - { - const char **exts = (ld_state.statically - ? (const char *[2]) { ".a", NULL } - : LIB_EXTENSION (&ld_state)); - - /* We have to create the actual file name. We prepend "lib" - and add one of the extensions the platform has. */ - while (*exts != NULL) - { - size_t extlen = strlen (*exts); - rfname = (char *) alloca (dirlen + 5 + fnamelen + extlen); - memcpy (mempcpy (stpcpy (mempcpy (rfname, path->pname, - dirlen), - "/lib"), - fname, fnamelen), - *exts, extlen + 1); - - fd = open (rfname, O_RDONLY); - if (likely (fd != -1) || errno != ENOENT) - { - err = fd == -1 ? errno : 0; - break; - } - - /* Next extension. */ - ++exts; - } - } - else - { - assert (fileinfo->file_type == dso_file_type - || fileinfo->file_type == dso_needed_file_type); - - rfname = (char *) alloca (dirlen + 1 + fnamelen + 1); - memcpy (stpcpy (mempcpy (rfname, path->pname, dirlen), "/"), - fname, fnamelen + 1); - - fd = open (rfname, O_RDONLY); - if (unlikely (fd == -1)) - err = errno; - } - - if (likely (fd != -1)) - { - /* We found the file. This also means the directory - exists. */ - fileinfo->fd = fd; - path->exist = 1; - - /* Check whether we have this file already loaded. */ - if (unlikely (check_for_duplicate (fileinfo) != 0)) - return EAGAIN; - - /* Make a copy of the name. */ - fileinfo->rfname = obstack_strdup (&ld_state.smem, rfname); - - if (unlikely (ld_state.trace_files)) - printf (fileinfo->file_type == archive_file_type - ? gettext ("%s (for -l%s)\n") - : gettext ("%s (for DT_NEEDED %s)\n"), - rfname, fname); - - return 0; - } - - /* The file does not exist. Maybe the whole directory doesn't. - Check it unless we know it exists. */ - if (unlikely (path->exist == 0)) - { - struct stat st; - - /* Keep only the directory name. Note that the path - might be relative. This doesn't matter here. We do - the test in any case even if there is the chance that - somebody wants to change the programs working - directory at some point which would make the result - of this test void. Since changing the working - directory is completely wrong we are not taking this - case into account. */ - rfname[dirlen] = '\0'; - if (unlikely (stat (rfname, &st) < 0) || ! S_ISDIR (st.st_mode)) - /* The directory does not exist or the named file is no - directory. */ - path->exist = -1; - else - path->exist = 1; - } - } - - /* Next path element. */ - path = path->next; - } - while (likely (err == ENOENT && path != firstp)); - - return err; -} - - -static int -open_along_path (struct usedfiles *fileinfo) -{ - const char *fname = fileinfo->fname; - int err = ENOENT; - - if (fileinfo->file_type == relocatable_file_type) - { - /* Only libraries are searched along the path. */ - fileinfo->fd = open (fname, O_RDONLY); - - if (likely (fileinfo->fd != -1)) - { - /* We found the file. */ - if (unlikely (ld_state.trace_files)) - print_file_name (stdout, fileinfo, 1, 1); - - return check_for_duplicate (fileinfo); - } - - /* If the name is an absolute path we are done. */ - err = errno; - } - else - { - /* If the user specified two parts to the LD_LIBRARY_PATH variable - try the first part now. */ - err = open_along_path2 (fileinfo, ld_state.ld_library_path1); - - /* Try the user-specified path next. */ - if (err == ENOENT) - err = open_along_path2 (fileinfo, - fileinfo->file_type == archive_file_type - ? ld_state.paths : ld_state.rpath_link); - - /* Then the second part of the LD_LIBRARY_PATH value. */ - if (unlikely (err == ENOENT)) - { - err = open_along_path2 (fileinfo, ld_state.ld_library_path2); - - /* In case we look for a DSO handle now the RUNPATH. */ - if (err == ENOENT) - { - if (fileinfo->file_type == dso_file_type) - err = open_along_path2 (fileinfo, ld_state.runpath_link); - - /* Finally the path from the default linker script. */ - if (err == ENOENT) - err = open_along_path2 (fileinfo, ld_state.default_paths); - } - } - } - - if (unlikely (err != 0) - && (err != EAGAIN || fileinfo->file_type == relocatable_file_type)) - error (0, err, gettext ("cannot open %s"), fileinfo->fname); - - return err; -} - - -static void -check_type_and_size (const XElf_Sym *sym, struct usedfiles *fileinfo, - struct symbol *oldp) -{ - /* We check the type and size of the symbols. In both cases the - information can be missing (size is zero, type is STT_NOTYPE) in - which case we issue no warnings. Otherwise everything must - match. If the type does not match there is no point in checking - the size. */ - - if (XELF_ST_TYPE (sym->st_info) != STT_NOTYPE && oldp->type != STT_NOTYPE - && unlikely (oldp->type != XELF_ST_TYPE (sym->st_info))) - { - char buf1[64]; - char buf2[64]; - - error (0, 0, gettext ("\ -Warning: type of `%s' changed from %s in %s to %s in %s"), - oldp->name, - ebl_symbol_type_name (ld_state.ebl, oldp->type, - buf1, sizeof (buf1)), - oldp->file->rfname, - ebl_symbol_type_name (ld_state.ebl, XELF_ST_TYPE (sym->st_info), - buf2, sizeof (buf2)), - fileinfo->rfname); - } - else if (XELF_ST_TYPE (sym->st_info) == STT_OBJECT - && oldp->size != 0 - && unlikely (oldp->size != sym->st_size)) - error (0, 0, gettext ("\ -Warning: size of `%s' changed from %" PRIu64 " in %s to %" PRIu64 " in %s"), - oldp->name, (uint64_t) oldp->size, oldp->file->rfname, - (uint64_t) sym->st_size, fileinfo->rfname); -} - - -static int -check_definition (const XElf_Sym *sym, size_t symidx, - struct usedfiles *fileinfo, struct symbol *oldp) -{ - int result = 0; - bool old_in_dso = FILEINFO_EHDR (oldp->file->ehdr).e_type == ET_DYN; - bool new_in_dso = FILEINFO_EHDR (fileinfo->ehdr).e_type == ET_DYN; - bool use_new_def = false; - - if (sym->st_shndx != SHN_UNDEF - && (! oldp->defined - || (sym->st_shndx != SHN_COMMON && oldp->common && ! new_in_dso) - || (old_in_dso && ! new_in_dso))) - { - /* We found a definition for a previously undefined symbol or a - real definition for a previous common-only definition or a - redefinition of a symbol definition in an object file - previously defined in a DSO. First perform some tests which - will show whether the common is really matching the - definition. */ - check_type_and_size (sym, fileinfo, oldp); - - /* We leave the next element intact to not interrupt the list - with the unresolved symbols. Whoever walks the list will - have to check the `defined' flag. But we remember that this - list element is not unresolved anymore. */ - if (! oldp->defined) - { - /* Remove from the list. */ - --ld_state.nunresolved; - if (! oldp->weak) - --ld_state.nunresolved_nonweak; - CDBL_LIST_DEL (ld_state.unresolved, oldp); - } - else if (oldp->common) - /* Remove from the list. */ - CDBL_LIST_DEL (ld_state.common_syms, oldp); - - /* Use the values of the definition from now on. */ - use_new_def = true; - } - else if (sym->st_shndx != SHN_UNDEF - && unlikely (! oldp->common) - && oldp->defined - && sym->st_shndx != SHN_COMMON - /* Multiple definitions are no fatal errors if the -z muldefs flag - is used. We don't warn about the multiple definition unless we - are told to be verbose. */ - && (!ld_state.muldefs || verbose) - && ! old_in_dso && fileinfo->file_type == relocatable_file_type) - { - /* We have a double definition. This is a problem. */ - char buf[64]; - XElf_Sym_vardef (oldsym); - struct usedfiles *oldfile; - const char *scnname; - Elf32_Word xndx; - size_t shndx; - size_t shnum; - - if (elf_getshnum (fileinfo->elf, &shnum) < 0) - error (EXIT_FAILURE, 0, - gettext ("cannot determine number of sections: %s"), - elf_errmsg (-1)); - - /* XXX Use only ebl_section_name. */ - if (sym->st_shndx < SHN_LORESERVE // || sym->st_shndx > SHN_HIRESERVE - && sym->st_shndx < shnum) - scnname = elf_strptr (fileinfo->elf, - fileinfo->shstrndx, - SCNINFO_SHDR (fileinfo->scninfo[sym->st_shndx].shdr).sh_name); - else - // XXX extended section - scnname = ebl_section_name (ld_state.ebl, sym->st_shndx, 0, - buf, sizeof (buf), NULL, shnum); - - /* XXX Print source file and line number. */ - print_file_name (stderr, fileinfo, 1, 0); - fprintf (stderr, - gettext ("(%s+%#" PRIx64 "): multiple definition of %s `%s'\n"), - scnname, - (uint64_t) sym->st_value, - ebl_symbol_type_name (ld_state.ebl, XELF_ST_TYPE (sym->st_info), - buf, sizeof (buf)), - oldp->name); - - oldfile = oldp->file; - xelf_getsymshndx (oldfile->symtabdata, oldfile->xndxdata, oldp->symidx, - oldsym, xndx); - if (oldsym == NULL) - /* This should never happen since the same call - succeeded before. */ - abort (); - - shndx = oldsym->st_shndx; - if (unlikely (oldsym->st_shndx == SHN_XINDEX)) - shndx = xndx; - - /* XXX Use only ebl_section_name. */ - if (shndx < SHN_LORESERVE || shndx > SHN_HIRESERVE) - scnname = elf_strptr (oldfile->elf, - oldfile->shstrndx, - SCNINFO_SHDR (oldfile->scninfo[shndx].shdr).sh_name); - else - scnname = ebl_section_name (ld_state.ebl, oldsym->st_shndx, shndx, buf, - sizeof (buf), NULL, shnum); - - /* XXX Print source file and line number. */ - print_file_name (stderr, oldfile, 1, 0); - fprintf (stderr, gettext ("(%s+%#" PRIx64 "): first defined here\n"), - scnname, (uint64_t) oldsym->st_value); - - if (likely (!ld_state.muldefs)) - result = 1; - } - else if (old_in_dso && fileinfo->file_type == relocatable_file_type - && sym->st_shndx != SHN_UNDEF) - /* We use the definition from a normal relocatable file over the - definition in a DSO. This is what the dynamic linker would - do, too. */ - use_new_def = true; - else if (old_in_dso && !new_in_dso && oldp->defined && !oldp->on_dsolist) - { - CDBL_LIST_ADD_REAR (ld_state.from_dso, oldp); - ++ld_state.nfrom_dso; - - /* If the object is a function we allocate a PLT entry, - otherwise only a GOT entry. */ - if (oldp->type == STT_FUNC) - ++ld_state.nplt; - else - ++ld_state.ngot; - - oldp->on_dsolist = 1; - } - else if (oldp->common && sym->st_shndx == SHN_COMMON) - { - /* The symbol size is the largest of all common definitions. */ - oldp->size = MAX (oldp->size, sym->st_size); - /* Similarly for the alignment. */ - oldp->merge.value = MAX (oldp->merge.value, sym->st_value); - } - - if (unlikely (use_new_def)) - { - /* Adjust the symbol record appropriately and remove - the symbol from the list of symbols which are taken from DSOs. */ - if (old_in_dso && fileinfo->file_type == relocatable_file_type) - { - CDBL_LIST_DEL (ld_state.from_dso, oldp); - --ld_state.nfrom_dso; - - if (likely (oldp->type == STT_FUNC)) - --ld_state.nplt; - else - --ld_state.ngot; - - oldp->on_dsolist = 0; - } - - /* Use the values of the definition from now on. */ - oldp->size = sym->st_size; - oldp->type = XELF_ST_TYPE (sym->st_info); - oldp->symidx = symidx; - oldp->scndx = sym->st_shndx; - //oldp->symscndx = THESYMSCNDX must be passed; - oldp->file = fileinfo; - oldp->defined = 1; - oldp->in_dso = new_in_dso; - oldp->common = sym->st_shndx == SHN_COMMON; - if (likely (fileinfo->file_type == relocatable_file_type)) - { - /* If the definition comes from a DSO we pertain the weak flag - and it's indicating whether the reference is weak or not. */ - oldp->weak = XELF_ST_BIND (sym->st_info) == STB_WEAK; - - if (sym->st_shndx != SHN_COMMON) - { - struct scninfo *ignore; - mark_section_used (&fileinfo->scninfo[sym->st_shndx], - sym->st_shndx, &ignore); - } - } - - /* Add to the list of symbols used from DSOs if necessary. */ - if (new_in_dso && !old_in_dso) - { - CDBL_LIST_ADD_REAR (ld_state.from_dso, oldp); - ++ld_state.nfrom_dso; - - /* If the object is a function we allocate a PLT entry, - otherwise only a GOT entry. */ - if (oldp->type == STT_FUNC) - ++ld_state.nplt; - else - ++ld_state.ngot; - - oldp->on_dsolist = 1; - } - else if (sym->st_shndx == SHN_COMMON) - { - /* Store the alignment. */ - oldp->merge.value = sym->st_value; - - CDBL_LIST_ADD_REAR (ld_state.common_syms, oldp); - } - } - - return result; -} - - -static struct scninfo * -find_section_group (struct usedfiles *fileinfo, Elf32_Word shndx, - Elf_Data **datap) -{ - struct scninfo *runp; - - for (runp = fileinfo->groups; runp != NULL; runp = runp->next) - if (!runp->used) - { - Elf32_Word *grpref; - size_t cnt; - Elf_Data *data; - - data = elf_getdata (runp->scn, NULL); - if (data == NULL) - error (EXIT_FAILURE, 0, - gettext ("%s: cannot get section group data: %s"), - fileinfo->fname, elf_errmsg (-1)); - - /* There cannot be another data block. */ - assert (elf_getdata (runp->scn, data) == NULL); - - grpref = (Elf32_Word *) data->d_buf; - cnt = data->d_size / sizeof (Elf32_Word); - /* Note that we stop after looking at index 1 since index 0 - contains the flags for the section group. */ - while (cnt > 1) - if (grpref[--cnt] == shndx) - { - *datap = data; - return runp; - } - } - - /* If we come here no section group contained the given section - despite the SHF_GROUP flag. This is an error in the input - file. */ - error (EXIT_FAILURE, 0, gettext ("\ -%s: section '%s' with group flag set does not belong to any group"), - fileinfo->fname, - elf_strptr (fileinfo->elf, fileinfo->shstrndx, - SCNINFO_SHDR (fileinfo->scninfo[shndx].shdr).sh_name)); - return NULL; -} - - -/* Mark all sections which belong to the same group as section SHNDX - as used. */ -static void -mark_section_group (struct usedfiles *fileinfo, Elf32_Word shndx, - struct scninfo **grpscnp) -{ - /* First locate the section group. There can be several (many) of - them. */ - size_t cnt; - Elf32_Word *grpref; - Elf_Data *data; - struct scninfo *grpscn = find_section_group (fileinfo, shndx, &data); - *grpscnp = grpscn; - - /* Mark all the sections as used. - - XXX Two possible problems here: - - - the gABI says "The section must be referenced by a section of type - SHT_GROUP". I hope everybody reads this as "exactly one section". - - - section groups are also useful to mark the debugging section which - belongs to a text section. Unconditionally adding debugging sections - is therefore probably not what is wanted if stripping is required. */ - - /* Mark the section group as handled. */ - grpscn->used = true; - - grpref = (Elf32_Word *) data->d_buf; - cnt = data->d_size / sizeof (Elf32_Word); - while (cnt > 1) - { - Elf32_Word idx = grpref[--cnt]; - XElf_Shdr *shdr = &SCNINFO_SHDR (fileinfo->scninfo[idx].shdr); - - if (fileinfo->scninfo[idx].grpid != 0) - error (EXIT_FAILURE, 0, gettext ("\ -%s: section [%2d] '%s' is in more than one section group"), - fileinfo->fname, (int) idx, - elf_strptr (fileinfo->elf, fileinfo->shstrndx, shdr->sh_name)); - - fileinfo->scninfo[idx].grpid = grpscn->grpid; - - if (ld_state.strip == strip_none - /* If we are stripping, remove debug sections. */ - || (!ebl_debugscn_p (ld_state.ebl, - elf_strptr (fileinfo->elf, fileinfo->shstrndx, - shdr->sh_name)) - /* And the relocation sections for the debug sections. */ - && ((shdr->sh_type != SHT_RELA && shdr->sh_type != SHT_REL) - || !ebl_debugscn_p (ld_state.ebl, - elf_strptr (fileinfo->elf, - fileinfo->shstrndx, - SCNINFO_SHDR (fileinfo->scninfo[shdr->sh_info].shdr).sh_name))))) - { - struct scninfo *ignore; - - mark_section_used (&fileinfo->scninfo[idx], idx, &ignore); - } - } -} - - -static void -mark_section_used (struct scninfo *scninfo, Elf32_Word shndx, - struct scninfo **grpscnp) -{ - if (likely (scninfo->used)) - /* Nothing to be done. */ - return; - - /* We need this section. */ - scninfo->used = true; - - /* Make sure the section header has been read from the file. */ - XElf_Shdr *shdr = &SCNINFO_SHDR (scninfo->shdr); -#if NATIVE_ELF - if (unlikely (scninfo->shdr == NULL)) -#else - if (unlikely (scninfo->shdr.sh_type == SHT_NULL)) -#endif - { -#if NATIVE_ELF != 0 - shdr = xelf_getshdr (scninfo->scn, scninfo->shdr); -#else - xelf_getshdr_copy (scninfo->scn, shdr, scninfo->shdr); -#endif - if (unlikely (shdr == NULL)) - /* Something is very wrong. The calling code will notice it - soon and print a message. */ - return; - } - - /* Handle section linked by 'sh_link'. */ - if (unlikely (shdr->sh_link != 0)) - { - struct scninfo *ignore; - mark_section_used (&scninfo->fileinfo->scninfo[shdr->sh_link], - shdr->sh_link, &ignore); - } - - /* Handle section linked by 'sh_info'. */ - if (unlikely (shdr->sh_info != 0) && (shdr->sh_flags & SHF_INFO_LINK)) - { - struct scninfo *ignore; - mark_section_used (&scninfo->fileinfo->scninfo[shdr->sh_info], - shdr->sh_info, &ignore); - } - - if (unlikely (shdr->sh_flags & SHF_GROUP) && ld_state.gc_sections) - /* Find the section group which contains this section. */ - mark_section_group (scninfo->fileinfo, shndx, grpscnp); -} - - -/* We collect all sections in a hashing table. All sections with the - same name are collected in a list. Note that we do not determine - which sections are finally collected in the same output section - here. This would be terribly inefficient. It will be done later. */ -static void -add_section (struct usedfiles *fileinfo, struct scninfo *scninfo) -{ - struct scnhead *queued; - struct scnhead search; - unsigned long int hval; - XElf_Shdr *shdr = &SCNINFO_SHDR (scninfo->shdr); - struct scninfo *grpscn = NULL; - Elf_Data *grpscndata = NULL; - - /* See whether we can determine right away whether we need this - section in the output. - - XXX I assume here that --gc-sections only affects extraction - from an archive. If it also affects objects files given on - the command line then somebody must explain to me how the - dependency analysis should work. Should the entry point be - the root? What if it is a numeric value? */ - if (!scninfo->used - && (ld_state.strip == strip_none - || (shdr->sh_flags & SHF_ALLOC) != 0 - || shdr->sh_type == SHT_NOTE - || (shdr->sh_type == SHT_PROGBITS - && strcmp (elf_strptr (fileinfo->elf, - fileinfo->shstrndx, - shdr->sh_name), ".comment") == 0)) - && (fileinfo->status != in_archive || !ld_state.gc_sections)) - /* Mark as used and handle reference recursively if necessary. */ - mark_section_used (scninfo, elf_ndxscn (scninfo->scn), &grpscn); - - if ((shdr->sh_flags & SHF_GROUP) && grpscn == NULL) - /* Determine the symbol which name constitutes the signature - for the section group. */ - grpscn = find_section_group (fileinfo, elf_ndxscn (scninfo->scn), - &grpscndata); - assert (grpscn == NULL || grpscn->symbols->name != NULL); - - /* Determine the section name. */ - search.name = elf_strptr (fileinfo->elf, fileinfo->shstrndx, shdr->sh_name); - search.type = shdr->sh_type; - search.flags = shdr->sh_flags; - search.entsize = shdr->sh_entsize; - search.grp_signature = grpscn != NULL ? grpscn->symbols->name : NULL; - search.kind = scn_normal; - hval = elf_hash (search.name); - - /* Find already queued sections. */ - queued = ld_section_tab_find (&ld_state.section_tab, hval, &search); - if (queued != NULL) - { - bool is_comdat = false; - - /* If this section is part of a COMDAT section group we simply - ignore it since we already have a copy. */ - if (unlikely (shdr->sh_flags & SHF_GROUP)) - { - /* Get the data of the section group section. */ - if (grpscndata == NULL) - { - grpscndata = elf_getdata (grpscn->scn, NULL); - assert (grpscndata != NULL); - } - - /* XXX Possibly unaligned memory access. */ - is_comdat = ((Elf32_Word *) grpscndata->d_buf)[0] & GRP_COMDAT; - } - - if (!is_comdat) - { - /* No COMDAT section, we use the data. */ - scninfo->next = queued->last->next; - queued->last = queued->last->next = scninfo; - - queued->flags = SH_FLAGS_COMBINE (queued->flags, shdr->sh_flags); - queued->align = MAX (queued->align, shdr->sh_addralign); - } - } - else - { - /* We do not use obstacks here since the memory might be - deallocated. */ - queued = (struct scnhead *) xcalloc (sizeof (struct scnhead), 1); - queued->kind = scn_normal; - queued->name = search.name; - queued->type = shdr->sh_type; - queued->flags = shdr->sh_flags; - queued->align = shdr->sh_addralign; - queued->entsize = shdr->sh_entsize; - queued->grp_signature = grpscn != NULL ? grpscn->symbols->name : NULL; - queued->segment_nr = ~0; - queued->last = scninfo->next = scninfo; - - /* Add to the hash table and possibly overwrite existing value. */ - ld_section_tab_insert (&ld_state.section_tab, hval, queued); - } -} - - -static int -add_relocatable_file (struct usedfiles *fileinfo, int secttype) -{ - size_t scncnt; - size_t cnt; - Elf_Data *symtabdata = NULL; - Elf_Data *xndxdata = NULL; - Elf_Data *versymdata = NULL; - Elf_Data *verdefdata = NULL; - Elf_Data *verneeddata = NULL; - size_t symstridx = 0; - size_t nsymbols = 0; - size_t nlocalsymbols = 0; - bool has_merge_sections = false; - - /* Prerequisites. */ - assert (fileinfo->elf != NULL); - - /* Allocate memory for the sections. */ - if (unlikely (elf_getshnum (fileinfo->elf, &scncnt) < 0)) - error (EXIT_FAILURE, 0, - gettext ("cannot determine number of sections: %s"), - elf_errmsg (-1)); - - fileinfo->scninfo = (struct scninfo *) - obstack_calloc (&ld_state.smem, scncnt * sizeof (struct scninfo)); - - /* Read all the section headers and find the symbol table. Note - that we don't skip the section with index zero. Even though the - section itself is always empty the section header contains - informaton for the case when the section index for the section - header string table is too large to fit in the ELF header. */ - for (cnt = 0; cnt < scncnt; ++cnt) - { - /* Store the handle for the section. */ - fileinfo->scninfo[cnt].scn = elf_getscn (fileinfo->elf, cnt); - - /* Get the ELF section header and data. */ - XElf_Shdr *shdr; -#if NATIVE_ELF != 0 - if (fileinfo->scninfo[cnt].shdr == NULL) -#else - if (fileinfo->scninfo[cnt].shdr.sh_type == SHT_NULL) -#endif - { -#if NATIVE_ELF != 0 - shdr = xelf_getshdr (fileinfo->scninfo[cnt].scn, - fileinfo->scninfo[cnt].shdr); -#else - xelf_getshdr_copy (fileinfo->scninfo[cnt].scn, shdr, - fileinfo->scninfo[cnt].shdr); -#endif - if (shdr == NULL) - { - /* This should never happen. */ - fprintf (stderr, gettext ("%s: invalid ELF file (%s:%d)\n"), - fileinfo->rfname, __FILE__, __LINE__); - return 1; - } - } - else - shdr = &SCNINFO_SHDR (fileinfo->scninfo[cnt].shdr); - - Elf_Data *data = elf_getdata (fileinfo->scninfo[cnt].scn, NULL); - - /* Check whether this section is marked as merge-able. */ - has_merge_sections |= (shdr->sh_flags & SHF_MERGE) != 0; - - /* Get the ELF section header and data. */ - /* Make the file structure available. */ - fileinfo->scninfo[cnt].fileinfo = fileinfo; - - if (unlikely (shdr->sh_type == SHT_SYMTAB) - || unlikely (shdr->sh_type == SHT_DYNSYM)) - { - if (shdr->sh_type == SHT_SYMTAB) - { - assert (fileinfo->symtabdata == NULL); - fileinfo->symtabdata = data; - fileinfo->nsymtab = shdr->sh_size / shdr->sh_entsize; - fileinfo->nlocalsymbols = shdr->sh_info; - fileinfo->symstridx = shdr->sh_link; - } - else - { - assert (fileinfo->dynsymtabdata == NULL); - fileinfo->dynsymtabdata = data; - fileinfo->ndynsymtab = shdr->sh_size / shdr->sh_entsize; - fileinfo->dynsymstridx = shdr->sh_link; - } - - /* If we are looking for the normal symbol table we just - found it. */ - if (secttype == shdr->sh_type) - { - assert (symtabdata == NULL); - symtabdata = data; - symstridx = shdr->sh_link; - nsymbols = shdr->sh_size / shdr->sh_entsize; - nlocalsymbols = shdr->sh_info; - } - } - else if (unlikely (shdr->sh_type == SHT_SYMTAB_SHNDX)) - { - assert (xndxdata == NULL); - fileinfo->xndxdata = xndxdata = data; - } - else if (unlikely (shdr->sh_type == SHT_GNU_versym)) - { - assert (versymdata == 0); - fileinfo->versymdata = versymdata = data; - } - else if (unlikely (shdr->sh_type == SHT_GNU_verdef)) - { - size_t nversions; - - assert (verdefdata == 0); - fileinfo->verdefdata = verdefdata = data; - - /* Allocate the arrays flagging the use of the version and - to track of allocated names. */ - fileinfo->nverdef = nversions = shdr->sh_info; - /* We have NVERSIONS + 1 because the indeces used to access the - sectino start with one; zero represents local binding. */ - fileinfo->verdefused = (XElf_Versym *) - obstack_calloc (&ld_state.smem, - sizeof (XElf_Versym) * (nversions + 1)); - fileinfo->verdefent = (struct Ebl_Strent **) - obstack_alloc (&ld_state.smem, - sizeof (struct Ebl_Strent *) * (nversions + 1)); - } - else if (unlikely (shdr->sh_type == SHT_GNU_verneed)) - { - assert (verneeddata == 0); - fileinfo->verneeddata = verneeddata = data; - } - else if (unlikely (shdr->sh_type == SHT_DYNAMIC)) - { - assert (fileinfo->dynscn == NULL); - fileinfo->dynscn = fileinfo->scninfo[cnt].scn; - } - else if (unlikely (shdr->sh_type == SHT_GROUP)) - { - Elf_Scn *symscn; - XElf_Shdr_vardef (symshdr); - Elf_Data *symdata; - - if (FILEINFO_EHDR (fileinfo->ehdr).e_type != ET_REL) - error (EXIT_FAILURE, 0, gettext ("\ -%s: only files of type ET_REL might contain section groups"), - fileinfo->fname); - - fileinfo->scninfo[cnt].next = fileinfo->groups; - fileinfo->scninfo[cnt].grpid = cnt; - fileinfo->groups = &fileinfo->scninfo[cnt]; - - /* Determine the signature. We create a symbol record for - it. Only the name element is important. */ - fileinfo->scninfo[cnt].symbols = (struct symbol *) - obstack_calloc (&ld_state.smem, sizeof (struct symbol)); - - symscn = elf_getscn (fileinfo->elf, shdr->sh_link); - xelf_getshdr (symscn, symshdr); - symdata = elf_getdata (symscn, NULL); - if (symshdr != NULL) - { - XElf_Sym_vardef (sym); - - /* We don't need the section index and therefore we don't - have to use 'xelf_getsymshndx'. */ - xelf_getsym (symdata, shdr->sh_info, sym); - if (sym != NULL) - { - struct symbol *symbol = fileinfo->scninfo[cnt].symbols; - - symbol->name = elf_strptr (fileinfo->elf, symshdr->sh_link, - sym->st_name); - symbol->symidx = shdr->sh_info; - symbol->file = fileinfo; - } - } - if (fileinfo->scninfo[cnt].symbols->name == NULL) - error (EXIT_FAILURE, 0, gettext ("\ -%s: cannot determine signature of section group [%2zd] '%s': %s"), - fileinfo->fname, - elf_ndxscn (fileinfo->scninfo[cnt].scn), - elf_strptr (fileinfo->elf, fileinfo->shstrndx, - shdr->sh_name), - elf_errmsg (-1)); - - /* The 'used' flag is used to indicate when the information - in the section group is used to mark all other sections - as used. So it must not be true yet. */ - assert (fileinfo->scninfo[cnt].used == false); - } - else if (! SECTION_TYPE_P (&ld_state, shdr->sh_type) - && unlikely ((shdr->sh_flags & SHF_OS_NONCONFORMING) != 0)) - /* According to the gABI it is a fatal error if the file contains - a section with unknown type and the SHF_OS_NONCONFORMING flag - set. */ - error (EXIT_FAILURE, 0, - gettext ("%s: section '%s' has unknown type: %d"), - fileinfo->fname, - elf_strptr (fileinfo->elf, fileinfo->shstrndx, - shdr->sh_name), - (int) shdr->sh_type); - /* We don't have to add a few section types here. These will be - generated from scratch for the new output file. We also - don't add the sections of DSOs here since these sections are - not used in the resulting object file. */ - else if (likely (fileinfo->file_type == relocatable_file_type) - && likely (cnt > 0) - && likely (shdr->sh_type == SHT_PROGBITS - || shdr->sh_type == SHT_RELA - || shdr->sh_type == SHT_REL - || shdr->sh_type == SHT_NOTE - || shdr->sh_type == SHT_NOBITS - || shdr->sh_type == SHT_INIT_ARRAY - || shdr->sh_type == SHT_FINI_ARRAY - || shdr->sh_type == SHT_PREINIT_ARRAY)) - add_section (fileinfo, &fileinfo->scninfo[cnt]); - } - - /* Handle the symbols. Record defined and undefined symbols in the - hash table. In theory there can be a file without any symbol - table. */ - if (likely (symtabdata != NULL)) - { - /* In case this file contains merge-able sections we have to - locate the symbols which are in these sections. */ - fileinfo->has_merge_sections = has_merge_sections; - if (likely (has_merge_sections)) - { - fileinfo->symref = (struct symbol **) - obstack_calloc (&ld_state.smem, - nsymbols * sizeof (struct symbol *)); - - /* Only handle the local symbols here. */ - for (cnt = 0; cnt < nlocalsymbols; ++cnt) - { - Elf32_Word shndx; - XElf_Sym_vardef (sym); - - xelf_getsymshndx (symtabdata, xndxdata, cnt, sym, shndx); - if (sym == NULL) - { - /* This should never happen. */ - fprintf (stderr, gettext ("%s: invalid ELF file (%s:%d)\n"), - fileinfo->rfname, __FILE__, __LINE__); - return 1; - } - - if (likely (shndx != SHN_XINDEX)) - shndx = sym->st_shndx; - else if (unlikely (shndx == 0)) - { - fprintf (stderr, gettext ("%s: invalid ELF file (%s:%d)\n"), - fileinfo->rfname, __FILE__, __LINE__); - return 1; - } - - if (XELF_ST_TYPE (sym->st_info) != STT_SECTION - && (shndx < SHN_LORESERVE || shndx > SHN_HIRESERVE) - && (SCNINFO_SHDR (fileinfo->scninfo[shndx].shdr).sh_flags - & SHF_MERGE)) - { - /* Create a symbol record for this symbol and add it - to the list for this section. */ - struct symbol *newp; - - newp = (struct symbol *) - obstack_calloc (&ld_state.smem, sizeof (struct symbol)); - - newp->symidx = cnt; - newp->scndx = shndx; - newp->file = fileinfo; - fileinfo->symref[cnt] = newp; - - if (fileinfo->scninfo[shndx].symbols == NULL) - fileinfo->scninfo[shndx].symbols = newp->next_in_scn - = newp; - else - { - newp->next_in_scn - = fileinfo->scninfo[shndx].symbols->next_in_scn; - fileinfo->scninfo[shndx].symbols - = fileinfo->scninfo[shndx].symbols->next_in_scn = newp; - } - } - } - } - else - /* Create array with pointers to the symbol definitions. Note - that we only allocate memory for the non-local symbols - since we have no merge-able sections. But we store the - pointer as if it was for the whole symbol table. This - saves some memory. */ - fileinfo->symref = (struct symbol **) - obstack_calloc (&ld_state.smem, ((nsymbols - nlocalsymbols) - * sizeof (struct symbol *))) - - nlocalsymbols; - - /* Don't handle local symbols here. It's either not necessary - at all or has already happened. */ - for (cnt = nlocalsymbols; cnt < nsymbols; ++cnt) - { - XElf_Sym_vardef (sym); - Elf32_Word shndx; - xelf_getsymshndx (symtabdata, xndxdata, cnt, sym, shndx); - - if (sym == NULL) - { - /* This should never happen. */ - fprintf (stderr, gettext ("%s: invalid ELF file (%s:%d)\n"), - fileinfo->rfname, __FILE__, __LINE__); - return 1; - } - - if (likely (shndx != SHN_XINDEX)) - shndx = sym->st_shndx; - else if (unlikely (shndx == 0)) - { - fprintf (stderr, gettext ("%s: invalid ELF file (%s:%d)\n"), - fileinfo->rfname, __FILE__, __LINE__); - return 1; - } - - /* We ignore ABS symbols from DSOs. */ - // XXX Is this correct? - if (unlikely (shndx == SHN_ABS) && secttype == SHT_DYNSYM) - continue; - - /* If the DSO uses symbols determine whether this is the default - version. Otherwise we'll ignore the symbol. */ - if (versymdata != NULL) - { - XElf_Versym versym; - - if (xelf_getversym_copy (versymdata, cnt, versym) == NULL) - /* XXX Should we handle faulty input files more graceful? */ - assert (! "xelf_getversym failed"); - - if ((versym & 0x8000) != 0) - /* Ignore the symbol, it's not the default version. */ - continue; - } - - /* See whether we know anything about this symbol. */ - struct symbol search; - search.name = elf_strptr (fileinfo->elf, symstridx, sym->st_name); - unsigned long int hval = elf_hash (search.name); - - /* We ignore the symbols the linker generates. This are - _GLOBAL_OFFSET_TABLE_, _DYNAMIC. */ - // XXX This loop is hot and the following tests hardly ever match. - // XXX Maybe move the tests somewhere they are executed less often. - if (((unlikely (hval == 165832675) - && strcmp (search.name, "_DYNAMIC") == 0) - || (unlikely (hval == 102264335) - && strcmp (search.name, "_GLOBAL_OFFSET_TABLE_") == 0)) - && sym->st_shndx != SHN_UNDEF - /* If somebody defines such a variable in a relocatable we - don't ignore it. Let the user get what s/he deserves. */ - && fileinfo->file_type != relocatable_file_type) - continue; - - struct symbol *oldp = ld_symbol_tab_find (&ld_state.symbol_tab, - hval, &search); - struct symbol *newp; - if (likely (oldp == NULL)) - { - /* No symbol of this name know. Add it. */ - newp = (struct symbol *) obstack_alloc (&ld_state.smem, - sizeof (*newp)); - newp->name = search.name; - newp->size = sym->st_size; - newp->type = XELF_ST_TYPE (sym->st_info); - newp->symidx = cnt; - newp->outsymidx = 0; - newp->outdynsymidx = 0; - newp->scndx = shndx; - newp->file = fileinfo; - newp->defined = newp->scndx != SHN_UNDEF; - newp->common = newp->scndx == SHN_COMMON; - newp->weak = XELF_ST_BIND (sym->st_info) == STB_WEAK; - newp->added = 0; - newp->merged = 0; - newp->need_copy = 0; - newp->on_dsolist = 0; - newp->in_dso = secttype == SHT_DYNSYM; - newp->next_in_scn = NULL; -#ifndef NDEBUG - newp->next = NULL; - newp->previous = NULL; -#endif - - if (newp->scndx == SHN_UNDEF) - { - CDBL_LIST_ADD_REAR (ld_state.unresolved, newp); - ++ld_state.nunresolved; - if (! newp->weak) - ++ld_state.nunresolved_nonweak; - } - else if (newp->scndx == SHN_COMMON) - { - /* Store the alignment requirement. */ - newp->merge.value = sym->st_value; - - CDBL_LIST_ADD_REAR (ld_state.common_syms, newp); - } - - /* Insert the new symbol. */ - if (unlikely (ld_symbol_tab_insert (&ld_state.symbol_tab, - hval, newp) != 0)) - /* This cannot happen. */ - abort (); - - fileinfo->symref[cnt] = newp; - - /* We have a few special symbols to recognize. The symbols - _init and _fini are the initialization and finalization - functions respectively. They have to be made known in - the dynamic section and therefore we have to find out - now whether these functions exist or not. */ - if (hval == 6685956 && strcmp (newp->name, "_init") == 0) - ld_state.init_symbol = newp; - else if (hval == 6672457 && strcmp (newp->name, "_fini") == 0) - ld_state.fini_symbol = newp; - } - else if (unlikely (check_definition (sym, cnt, fileinfo, oldp) != 0)) - /* A fatal error (multiple definition of a symbol) - occurred, no need to continue. */ - return 1; - else - /* Use the previously allocated symbol record. It has - been updated in check_definition(), if necessary. */ - newp = fileinfo->symref[cnt] = oldp; - - /* Mark the section the symbol we need comes from as used. */ - if (shndx != SHN_UNDEF - && (shndx < SHN_LORESERVE || shndx > SHN_HIRESERVE)) - { - struct scninfo *ignore; - -#ifndef NDEBUG - size_t shnum; - assert (elf_getshnum (fileinfo->elf, &shnum) == 0); - assert (shndx < shnum); -#endif - - /* Mark section (and all dependencies) as used. */ - mark_section_used (&fileinfo->scninfo[shndx], shndx, &ignore); - - /* Check whether the section is merge-able. In this case we - have to record the symbol. */ - if (SCNINFO_SHDR (fileinfo->scninfo[shndx].shdr).sh_flags - & SHF_MERGE) - { - if (fileinfo->scninfo[shndx].symbols == NULL) - fileinfo->scninfo[shndx].symbols = newp->next_in_scn - = newp; - else - { - newp->next_in_scn - = fileinfo->scninfo[shndx].symbols->next_in_scn; - fileinfo->scninfo[shndx].symbols - = fileinfo->scninfo[shndx].symbols->next_in_scn = newp; - } - } - } - } - - /* This file is used. */ - if (likely (fileinfo->file_type == relocatable_file_type)) - { - if (unlikely (ld_state.relfiles == NULL)) - ld_state.relfiles = fileinfo->next = fileinfo; - else - { - fileinfo->next = ld_state.relfiles->next; - ld_state.relfiles = ld_state.relfiles->next = fileinfo; - } - - /* Update some summary information in the state structure. */ - ld_state.nsymtab += fileinfo->nsymtab; - ld_state.nlocalsymbols += fileinfo->nlocalsymbols; - } - else if (likely (fileinfo->file_type == dso_file_type)) - { - CSNGL_LIST_ADD_REAR (ld_state.dsofiles, fileinfo); - ++ld_state.ndsofiles; - - if (fileinfo->lazyload) - /* We have to create another dynamic section entry for the - DT_POSFLAG_1 entry. - - XXX Once more functionality than the lazyloading flag - are suppported the test must be extended. */ - ++ld_state.ndsofiles; - } - } - - return 0; -} - - -int -ld_handle_filename_list (struct filename_list *fnames) -{ - struct filename_list *runp; - int res = 0; - - for (runp = fnames; runp != NULL; runp = runp->next) - { - struct usedfiles *curp; - - /* Create a record for the new file. */ - curp = runp->real = ld_new_inputfile (runp->name, relocatable_file_type); - - /* Set flags for group handling. */ - runp->real->group_start = runp->group_start; - runp->real->group_end = runp->group_end; - - /* Read the file and everything else which comes up, including - handling groups. */ - do - res |= FILE_PROCESS (-1, curp, &ld_state, &curp); - while (curp != NULL); - } - - /* Free the list. */ - while (fnames != NULL) - { - runp = fnames; - fnames = fnames->next; - free (runp); - } - - return res; -} - - -/* Handle opening of the given file with ELF descriptor. */ -static int -open_elf (struct usedfiles *fileinfo, Elf *elf) -{ - int res = 0; - - if (elf == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot get descriptor for ELF file (%s:%d): %s\n"), - __FILE__, __LINE__, elf_errmsg (-1)); - - if (unlikely (elf_kind (elf) == ELF_K_NONE)) - { - struct filename_list *fnames; - - /* We don't have to look at this file again. */ - fileinfo->status = closed; - - /* Let's see whether this is a linker script. */ - if (fileinfo->fd != -1) - /* Create a stream from the file handle we know. */ - ldin = fdopen (fileinfo->fd, "r"); - else - { - /* Get the memory for the archive member. */ - char *content; - size_t contentsize; - - /* Get the content of the file. */ - content = elf_rawfile (elf, &contentsize); - if (content == NULL) - { - fprintf (stderr, gettext ("%s: invalid ELF file (%s:%d)\n"), - fileinfo->rfname, __FILE__, __LINE__); - return 1; - } - - /* The content of the file is available in memory. Read the - memory region as a stream. */ - ldin = fmemopen (content, contentsize, "r"); - } - - /* No need for locking. */ - __fsetlocking (ldin, FSETLOCKING_BYCALLER); - - if (ldin == NULL) - error (EXIT_FAILURE, errno, gettext ("cannot open \"%s\""), - fileinfo->rfname); - - /* Parse the file. If it is a linker script no problems will be - reported. */ - ld_state.srcfiles = NULL; - ldlineno = 1; - ld_scan_version_script = 0; - ldin_fname = fileinfo->rfname; - res = ldparse (); - - fclose (ldin); - if (fileinfo->fd != -1 && !fileinfo->fd_passed) - { - /* We won't need the file descriptor again. */ - close (fileinfo->fd); - fileinfo->fd = -1; - } - - elf_end (elf); - - if (unlikely (res != 0)) - /* Something went wrong during parsing. */ - return 1; - - /* This is no ELF file. */ - fileinfo->elf = NULL; - - /* Now we have to handle eventual INPUT and GROUP statements in - the script. Read the files mentioned. */ - fnames = ld_state.srcfiles; - if (fnames != NULL) - { - struct filename_list *oldp; - - /* Convert the list into a normal single-linked list. */ - oldp = fnames; - fnames = fnames->next; - oldp->next = NULL; - - /* Remove the list from the state structure. */ - ld_state.srcfiles = NULL; - - if (unlikely (ld_handle_filename_list (fnames) != 0)) - return 1; - } - - return 0; - } - - /* Store the file info. */ - fileinfo->elf = elf; - - /* The file is ready for action. */ - fileinfo->status = opened; - - return 0; -} - - -static int -add_whole_archive (struct usedfiles *fileinfo) -{ - Elf *arelf; - Elf_Cmd cmd = ELF_C_READ_MMAP_PRIVATE; - int res = 0; - - while ((arelf = elf_begin (fileinfo->fd, cmd, fileinfo->elf)) != NULL) - { - Elf_Arhdr *arhdr = elf_getarhdr (arelf); - struct usedfiles *newp; - - if (arhdr == NULL) - abort (); - - /* Just to be sure; since these are no files in the archive - these names should never be returned. */ - assert (strcmp (arhdr->ar_name, "/") != 0); - assert (strcmp (arhdr->ar_name, "//") != 0); - - newp = ld_new_inputfile (arhdr->ar_name, relocatable_file_type); - newp->archive_file = fileinfo; - - if (unlikely (ld_state.trace_files)) - print_file_name (stdout, newp, 1, 1); - - /* This shows that this file is contained in an archive. */ - newp->fd = -1; - /* Store the ELF descriptor. */ - newp->elf = arelf; - /* Show that we are open for business. */ - newp->status = opened; - - /* Proces the file, add all the symbols etc. */ - res = file_process2 (newp); - if (unlikely (res != 0)) - break; - - /* Advance to the next archive element. */ - cmd = elf_next (arelf); - } - - return res; -} - - -static int -extract_from_archive (struct usedfiles *fileinfo) -{ - static int archive_seq; - int res = 0; - - /* This is an archive we are not using completely. Give it a - unique number. */ - fileinfo->archive_seq = ++archive_seq; - - /* If there are no unresolved symbols don't do anything. */ - if ((likely (ld_state.extract_rule == defaultextract) - && ld_state.nunresolved_nonweak == 0) - || (unlikely (ld_state.extract_rule == weakextract) - && ld_state.nunresolved == 0)) - return 0; - - Elf_Arsym *syms; - size_t nsyms; - - /* Get all the symbols. */ - syms = elf_getarsym (fileinfo->elf, &nsyms); - if (syms == NULL) - { - cannot_read_archive: - error (0, 0, gettext ("cannot read archive `%s': %s"), - fileinfo->rfname, elf_errmsg (-1)); - - /* We cannot use this archive anymore. */ - fileinfo->status = closed; - - return 1; - } - - /* Now add all the symbols to the hash table. Note that there - can potentially be duplicate definitions. We'll always use - the first definition. */ - // XXX Is this a compatible behavior? - bool any_used; - int nround = 0; - do - { - any_used = false; - - size_t cnt; - for (cnt = 0; cnt < nsyms; ++cnt) - { - struct symbol search = { .name = syms[cnt].as_name }; - struct symbol *sym = ld_symbol_tab_find (&ld_state.symbol_tab, - syms[cnt].as_hash, &search); - if (sym != NULL && ! sym->defined) - { - /* The symbol is referenced and not defined. */ - Elf *arelf; - Elf_Arhdr *arhdr; - struct usedfiles *newp; - - /* Find the archive member for this symbol. */ - if (unlikely (elf_rand (fileinfo->elf, syms[cnt].as_off) - != syms[cnt].as_off)) - goto cannot_read_archive; - - /* Note: no test of a failing 'elf_begin' call. That's fine - since 'elf'getarhdr' will report the problem. */ - arelf = elf_begin (fileinfo->fd, ELF_C_READ_MMAP_PRIVATE, - fileinfo->elf); - arhdr = elf_getarhdr (arelf); - if (arhdr == NULL) - goto cannot_read_archive; - - /* We have all the information and an ELF handle for the - archive member. Create the normal data structure for - a file now. */ - newp = ld_new_inputfile (obstack_strdup (&ld_state.smem, - arhdr->ar_name), - relocatable_file_type); - newp->archive_file = fileinfo; - - if (unlikely (ld_state.trace_files)) - print_file_name (stdout, newp, 1, 1); - - /* This shows that this file is contained in an archive. */ - newp->fd = -1; - /* Store the ELF descriptor. */ - newp->elf = arelf; - /* Show that we are open for business. */ - newp->status = in_archive; - - /* Now read the file and add all the symbols. */ - res = file_process2 (newp); - if (unlikely (res != 0)) - return res; - - any_used = true; - } - } - - if (++nround == 1) - { - /* This is an archive therefore it must have a number. */ - assert (fileinfo->archive_seq != 0); - ld_state.last_archive_used = fileinfo->archive_seq; - } - } - while (any_used); - - return res; -} - - -static int -file_process2 (struct usedfiles *fileinfo) -{ - int res; - - if (likely (elf_kind (fileinfo->elf) == ELF_K_ELF)) - { - /* The first time we get here we read the ELF header. */ -#if NATIVE_ELF != 0 - if (likely (fileinfo->ehdr == NULL)) -#else - if (likely (FILEINFO_EHDR (fileinfo->ehdr).e_type == ET_NONE)) -#endif - { - XElf_Ehdr *ehdr; -#if NATIVE_ELF != 0 - ehdr = xelf_getehdr (fileinfo->elf, fileinfo->ehdr); -#else - xelf_getehdr_copy (fileinfo->elf, ehdr, fileinfo->ehdr); -#endif - if (ehdr == NULL) - { - fprintf (stderr, gettext ("%s: invalid ELF file (%s:%d)\n"), - fileinfo->rfname, __FILE__, __LINE__); - fileinfo->status = closed; - return 1; - } - - if (FILEINFO_EHDR (fileinfo->ehdr).e_type != ET_REL - && unlikely (FILEINFO_EHDR (fileinfo->ehdr).e_type != ET_DYN)) - /* XXX Add ebl* function to query types which are allowed - to link in. */ - { - char buf[64]; - - print_file_name (stderr, fileinfo, 1, 0); - fprintf (stderr, - gettext ("file of type %s cannot be linked in\n"), - ebl_object_type_name (ld_state.ebl, - FILEINFO_EHDR (fileinfo->ehdr).e_type, - buf, sizeof (buf))); - fileinfo->status = closed; - return 1; - } - - /* Determine the section header string table section index. */ - if (unlikely (elf_getshstrndx (fileinfo->elf, &fileinfo->shstrndx) - < 0)) - { - fprintf (stderr, gettext ("\ -%s: cannot get section header string table index: %s\n"), - fileinfo->rfname, elf_errmsg (-1)); - fileinfo->status = closed; - return 1; - } - } - - /* Now handle the different types of files. */ - if (FILEINFO_EHDR (fileinfo->ehdr).e_type == ET_REL) - { - /* Add all the symbol. Relocatable files have symbol - tables. */ - res = add_relocatable_file (fileinfo, SHT_SYMTAB); - } - else - { - bool has_l_name = fileinfo->file_type == archive_file_type; - - assert (FILEINFO_EHDR (fileinfo->ehdr).e_type == ET_DYN); - - /* If the file is a DT_NEEDED dependency then the type is - already correctly specified. */ - if (fileinfo->file_type != dso_needed_file_type) - fileinfo->file_type = dso_file_type; - - /* We cannot use DSOs when generating relocatable objects. */ - if (ld_state.file_type == relocatable_file_type) - { - error (0, 0, gettext ("\ -cannot use DSO '%s' when generating relocatable object file"), - fileinfo->fname); - return 1; - } - - /* Add all the symbols. For DSOs we are looking at the - dynamic symbol table. */ - res = add_relocatable_file (fileinfo, SHT_DYNSYM); - - /* We always have to have a dynamic section. */ - assert (fileinfo->dynscn != NULL); - - /* We have to remember the dependencies for this object. It - is necessary to look them up. */ - XElf_Shdr_vardef (dynshdr); - xelf_getshdr (fileinfo->dynscn, dynshdr); - - Elf_Data *dyndata = elf_getdata (fileinfo->dynscn, NULL); - /* XXX Should we flag the failure to get the dynamic section? */ - if (dynshdr != NULL) - { - int cnt = dynshdr->sh_size / dynshdr->sh_entsize; - XElf_Dyn_vardef (dyn); - - while (--cnt >= 0) - { - xelf_getdyn (dyndata, cnt, dyn); - if (dyn != NULL) - { - if(dyn->d_tag == DT_NEEDED) - { - struct usedfiles *newp; - - newp = ld_new_inputfile (elf_strptr (fileinfo->elf, - dynshdr->sh_link, - dyn->d_un.d_val), - dso_needed_file_type); - - /* Enqueue the newly found dependencies. */ - // XXX Check that there not already a file with the - // same name. - CSNGL_LIST_ADD_REAR (ld_state.needed, newp); - } - else if (dyn->d_tag == DT_SONAME) - { - /* We use the DT_SONAME (this is what's there - for). */ - fileinfo->soname = elf_strptr (fileinfo->elf, - dynshdr->sh_link, - dyn->d_un.d_val); - has_l_name = false; - } - } - } - } - - /* Construct the file name if the DSO has no SONAME and the - file name comes from a -lXX parameter on the comment - line. */ - if (unlikely (has_l_name)) - { - /* The FNAME is the parameter the user specified on the - command line. We prepend "lib" and append ".so". */ - size_t len = strlen (fileinfo->fname) + 7; - char *newp; - - newp = (char *) obstack_alloc (&ld_state.smem, len); - strcpy (stpcpy (stpcpy (newp, "lib"), fileinfo->fname), ".so"); - - fileinfo->soname = newp; - } - } - } - else if (likely (elf_kind (fileinfo->elf) == ELF_K_AR)) - { - if (unlikely (ld_state.extract_rule == allextract)) - /* Which this option enabled we have to add all the object - files in the archive. */ - res = add_whole_archive (fileinfo); - else if (ld_state.file_type == relocatable_file_type) - { - /* When generating a relocatable object we don't find files - in archives. */ - if (verbose) - error (0, 0, gettext ("input file '%s' ignored"), fileinfo->fname); - - res = 0; - } - else - /* Extract only the members from the archive which are - currently referenced by unresolved symbols. */ - res = extract_from_archive (fileinfo); - } - else - /* This should never happen, we know about no other types. */ - abort (); - - return res; -} - - -/* Process a given file. The first parameter is a file descriptor for - the file which can be -1 to indicate the file has not yet been - found. The second parameter describes the file to be opened, the - last one is the state of the linker which among other information - contain the paths we look at. */ -static int -ld_generic_file_process (int fd, struct usedfiles *fileinfo, - struct ld_state *statep, struct usedfiles **nextp) -{ - int res = 0; - - /* By default we go to the next file in the list. */ - *nextp = fileinfo->next; - - /* Set the flag to signal we are looking for a group start. */ - if (unlikely (fileinfo->group_start)) - { - ld_state.group_start_requested = true; - fileinfo->group_start = false; - } - - /* If the file isn't open yet, open it now. */ - if (likely (fileinfo->status == not_opened)) - { - bool fd_passed = true; - - if (likely (fd == -1)) - { - /* Find the file ourselves. */ - int err = open_along_path (fileinfo); - if (unlikely (err != 0)) - /* We allow libraries and DSOs to be named more than once. - Don't report an error to the caller. */ - return err == EAGAIN ? 0 : err; - - fd_passed = false; - } - else - fileinfo->fd = fd; - - /* Remember where we got the descriptor from. */ - fileinfo->fd_passed = fd_passed; - - /* We found the file. Now test whether it is a file type we can - handle. - - XXX Do we have to have the ability to start from a given - position in the search path again to look for another file if - the one found has not the right type? */ - res = open_elf (fileinfo, elf_begin (fileinfo->fd, - is_dso_p (fileinfo->fd) - ? ELF_C_READ_MMAP - : ELF_C_READ_MMAP_PRIVATE, NULL)); - if (unlikely (res != 0)) - return res; - } - - /* Now that we have opened the file start processing it. */ - if (likely (fileinfo->status != closed)) - res = file_process2 (fileinfo); - - /* Determine which file to look at next. */ - if (unlikely (fileinfo->group_backref != NULL)) - { - /* We only go back if an archive other than the one we would go - back to has been used in the last round. */ - if (ld_state.last_archive_used > fileinfo->group_backref->archive_seq) - { - *nextp = fileinfo->group_backref; - ld_state.last_archive_used = 0; - } - else - { - /* If we come here this means that the archives we read so - far are not needed anymore. We can free some of the data - now. */ - struct usedfiles *runp = ld_state.archives; - - do - { - /* We don't need the ELF descriptor anymore. Unless there - are no files from the archive used this will not free - the whole file but only some data structures. */ - elf_end (runp->elf); - runp->elf = NULL; - - runp = runp->next; - } - while (runp != fileinfo->next); - } - } - else if (unlikely (fileinfo->group_end)) - { - /* This is the end of a group. We possibly of to go back. - Determine which file we would go back to and see whether it - makes sense. If there has not been an archive we don't have - to do anything. */ - if (!ld_state.group_start_requested) - { - if (ld_state.group_start_archive != ld_state.tailarchives) - /* The loop would include more than one archive, add the - pointer. */ - { - *nextp = ld_state.tailarchives->group_backref = - ld_state.group_start_archive; - ld_state.last_archive_used = 0; - } - else - /* We might still have to go back to the beginning of the - group if since the last archive other files have been - added. But we go back exactly once. */ - if (ld_state.tailarchives != fileinfo) - { - *nextp = ld_state.group_start_archive; - ld_state.last_archive_used = 0; - } - } - - /* Clear the flags. */ - ld_state.group_start_requested = false; - fileinfo->group_end = false; - } - - return res; -} - - -/* Library names passed to the linker as -lXX represent files named - libXX.YY. The YY part can have different forms, depending on the - platform. The generic set is .so and .a (in this order). */ -static const char ** -ld_generic_lib_extensions (struct ld_state *statep __attribute__ ((__unused__))) -{ - static const char *exts[] = - { - ".so", ".a", NULL - }; - - return exts; -} - - -/* Flag unresolved symbols. */ -static int -ld_generic_flag_unresolved (struct ld_state *statep) -{ - int retval = 0; - - if (ld_state.nunresolved_nonweak > 0) - { - /* Go through the list and determine the unresolved symbols. */ - struct symbol *first; - struct symbol *s; - - s = first = ld_state.unresolved->next; - do - { - if (! s->defined && ! s->weak) - { - /* Two special symbol we recognize: the symbol for the - GOT and the dynamic section. */ - if (strcmp (s->name, "_GLOBAL_OFFSET_TABLE_") == 0 - || strcmp (s->name, "_DYNAMIC") == 0) - { - /* We will have to fill in more information later. */ - ld_state.need_got = true; - - /* Remember that we found it. */ - if (s->name[1] == 'G') - ld_state.got_symbol = s; - else - ld_state.dyn_symbol = s; - } - else if (ld_state.file_type != dso_file_type || !ld_state.nodefs) - { - /* XXX The error message should get better. It should use - the debugging information if present to tell where in the - sources the undefined reference is. */ - error (0, 0, gettext ("undefined symbol `%s' in %s"), - s->name, s->file->fname); - - retval = 1; - } - } - - /* We cannot decide here what to do with undefined - references which will come from DSO since we do not know - what kind of symbol we expect. Only when looking at the - relocations we can see whether we need a PLT entry or - only a GOT entry. */ - - s = s->next; - } - while (s != first); - } - - return retval; -} - - -/* Close the given file. */ -static int -ld_generic_file_close (struct usedfiles *fileinfo, struct ld_state *statep) -{ - /* Close the ELF descriptor. */ - elf_end (fileinfo->elf); - - /* If we have opened the file descriptor close it. But we might - have done this already in which case FD is -1. */ - if (!fileinfo->fd_passed && fileinfo->fd != -1) - close (fileinfo->fd); - - /* We allocated the resolved file name. */ - if (fileinfo->fname != fileinfo->rfname) - free ((char *) fileinfo->rfname); - - return 0; -} - - -static void -new_generated_scn (enum scn_kind kind, const char *name, int type, int flags, - int entsize, int align) -{ - struct scnhead *newp; - - newp = (struct scnhead *) obstack_calloc (&ld_state.smem, - sizeof (struct scnhead)); - newp->kind = kind; - newp->name = name; - newp->nameent = ebl_strtabadd (ld_state.shstrtab, name, 0); - newp->type = type; - newp->flags = flags; - newp->entsize = entsize; - newp->align = align; - newp->grp_signature = NULL; - newp->used = true; - - /* All is well. Create now the data for the section and insert it - into the section table. */ - ld_section_tab_insert (&ld_state.section_tab, elf_hash (name), newp); -} - - -/* Create the sections which are generated by the linker and are not - present in the input file. */ -static void -ld_generic_generate_sections (struct ld_state *statep) -{ - /* The relocation section type. */ - int rel_type = REL_TYPE (&ld_state) == DT_REL ? SHT_REL : SHT_RELA; - - /* When building dynamically linked object we have to include a - section containing a string describing the interpreter. This - should be at the very beginning of the file together with the - other information the ELF loader (kernel or wherever) has to look - at. We put it as the first section in the file. - - We also have to create the dynamic segment which is a special - section the dynamic linker locates through an entry in the - program header. */ - if (dynamically_linked_p ()) - { - int ndt_needed; - /* Use any versioning (defined or required)? */ - bool use_versioning = false; - /* Use version requirements? */ - bool need_version = false; - - /* First the .interp section. */ - new_generated_scn (scn_dot_interp, ".interp", SHT_PROGBITS, SHF_ALLOC, - 0, 1); - - /* Now the .dynamic section. */ - new_generated_scn (scn_dot_dynamic, ".dynamic", SHT_DYNAMIC, - DYNAMIC_SECTION_FLAGS (&ld_state), - xelf_fsize (ld_state.outelf, ELF_T_DYN, 1), - xelf_fsize (ld_state.outelf, ELF_T_ADDR, 1)); - - /* We will need in any case the dynamic symbol table (even in - the unlikely case that no symbol is exported or referenced - from a DSO). */ - ld_state.need_dynsym = true; - new_generated_scn (scn_dot_dynsym, ".dynsym", SHT_DYNSYM, SHF_ALLOC, - xelf_fsize (ld_state.outelf, ELF_T_SYM, 1), - xelf_fsize (ld_state.outelf, ELF_T_ADDR, 1)); - /* It comes with a string table. */ - new_generated_scn (scn_dot_dynstr, ".dynstr", SHT_STRTAB, SHF_ALLOC, - 0, 1); - /* And a hashing table. */ - // XXX For Linux/Alpha we need other sizes unless they change... - new_generated_scn (scn_dot_hash, ".hash", SHT_HASH, SHF_ALLOC, - sizeof (Elf32_Word), sizeof (Elf32_Word)); - - /* By default we add all DSOs provided on the command line. If - the user added '-z ignore' to the command line we only add - those which are actually used. */ - ndt_needed = ld_state.ignore_unused_dsos ? 0 : ld_state.ndsofiles; - - /* Create the section associated with the PLT if necessary. */ - if (ld_state.nplt > 0) - { - /* Create the .plt section. */ - /* XXX We might need a function which returns the section flags. */ - new_generated_scn (scn_dot_plt, ".plt", SHT_PROGBITS, - SHF_ALLOC | SHF_EXECINSTR, - /* XXX Is the size correct? */ - xelf_fsize (ld_state.outelf, ELF_T_ADDR, 1), - xelf_fsize (ld_state.outelf, ELF_T_ADDR, 1)); - - /* Create the relocation section for the .plt. This is always - separate even if the other relocation sections are combined. */ - new_generated_scn (scn_dot_pltrel, ".rel.plt", rel_type, SHF_ALLOC, - rel_type == SHT_REL - ? xelf_fsize (ld_state.outelf, ELF_T_REL, 1) - : xelf_fsize (ld_state.outelf, ELF_T_RELA, 1), - xelf_fsize (ld_state.outelf, ELF_T_ADDR, 1)); - - /* This means we will also need the .got section. */ - ld_state.need_got = true; - - /* Mark all used DSOs as used. Determine whether any referenced - object uses symbol versioning. */ - if (ld_state.from_dso != NULL) - { - struct symbol *srunp = ld_state.from_dso; - - do - { - srunp->file->used = true; - - if (srunp->file->verdefdata != NULL) - { - XElf_Versym versym; - - /* The input DSO uses versioning. */ - use_versioning = true; - /* We reference versions. */ - need_version = true; - - if (xelf_getversym_copy (srunp->file->versymdata, - srunp->symidx, versym) == NULL) - assert (! "xelf_getversym failed"); - - /* We cannot link explicitly with an older - version of a symbol. */ - assert ((versym & 0x8000) == 0); - /* We cannot reference local (index 0) or plain - global (index 1) versions. */ - assert (versym > 1); - - /* Check whether we have already seen the - version and if not add it to the referenced - versions in the output file. */ - if (! srunp->file->verdefused[versym]) - { - srunp->file->verdefused[versym] = 1; - - if (++srunp->file->nverdefused == 1) - /* Count the file if it is using versioning. */ - ++ld_state.nverdeffile; - ++ld_state.nverdefused; - } - } - } - while ((srunp = srunp->next) != ld_state.from_dso); - } - - /* Create the sections used to record version dependencies. */ - if (need_version) - new_generated_scn (scn_dot_version_r, ".gnu.version_r", - SHT_GNU_verneed, SHF_ALLOC, 0, - xelf_fsize (ld_state.outelf, ELF_T_WORD, 1)); - - /* Now count the used DSOs since this is what the user - wants. */ - ndt_needed = 0; - if (ld_state.ndsofiles > 0) - { - struct usedfiles *frunp = ld_state.dsofiles; - - do - if (! ld_state.ignore_unused_dsos || frunp->used) - { - ++ndt_needed; - if (frunp->lazyload) - /* We have to create another dynamic section - entry for the DT_POSFLAG_1 entry. - - XXX Once more functionality than the - lazyloading flag are suppported the test - must be extended. */ - ++ndt_needed; - } - while ((frunp = frunp->next) != ld_state.dsofiles); - } - } - - if (use_versioning) - new_generated_scn (scn_dot_version, ".gnu.version", SHT_GNU_versym, - SHF_ALLOC, - xelf_fsize (ld_state.outelf, ELF_T_HALF, 1), - xelf_fsize (ld_state.outelf, ELF_T_HALF, 1)); - - /* We need some entries all the time. */ - ld_state.ndynamic = (7 + (ld_state.runpath != NULL - || ld_state.rpath != NULL) - + ndt_needed - + (ld_state.init_symbol != NULL ? 1 : 0) - + (ld_state.fini_symbol != NULL ? 1 : 0) - + (use_versioning ? 1 : 0) - + (need_version ? 2 : 0) - + (ld_state.nplt > 0 ? 4 : 0) - + (ld_state.relsize_total > 0 ? 3 : 0)); - } - - /* When creating a relocatable file or when we are not stripping the - output file we create a symbol table. */ - ld_state.need_symtab = (ld_state.file_type == relocatable_file_type - || ld_state.strip == strip_none); - - /* Add the .got section if needed. */ - if (ld_state.need_got) - /* XXX We might need a function which returns the section flags. */ - new_generated_scn (scn_dot_got, ".got", SHT_PROGBITS, - SHF_ALLOC | SHF_WRITE, - xelf_fsize (ld_state.outelf, ELF_T_ADDR, 1), - xelf_fsize (ld_state.outelf, ELF_T_ADDR, 1)); - - /* Add the .rel.dyn section. */ - if (ld_state.relsize_total > 0) - new_generated_scn (scn_dot_dynrel, ".rel.dyn", rel_type, SHF_ALLOC, - rel_type == SHT_REL - ? xelf_fsize (ld_state.outelf, ELF_T_REL, 1) - : xelf_fsize (ld_state.outelf, ELF_T_RELA, 1), - xelf_fsize (ld_state.outelf, ELF_T_ADDR, 1)); -} - - -/* Callback function registered with on_exit to make sure the temporary - files gets removed if something goes wrong. */ -static void -remove_tempfile (int status, void *arg) -{ - if (status != 0 && ld_state.tempfname != NULL) - unlink (ld_state.tempfname); -} - - -/* Create the output file. The file name is given or "a.out". We - create as much of the ELF structure as possible. */ -static int -ld_generic_open_outfile (struct ld_state *statep, int machine, int klass, - int data) -{ - /* We do not create the new file right away with the final name. - This would destroy an existing file with this name before a - replacement is finalized. We create instead a temporary file in - the same directory. */ - if (ld_state.outfname == NULL) - ld_state.outfname = "a.out"; - - size_t outfname_len = strlen (ld_state.outfname); - char *tempfname = (char *) obstack_alloc (&ld_state.smem, - outfname_len + sizeof (".XXXXXX")); - ld_state.tempfname = tempfname; - - int fd; - int try = 0; - while (1) - { - strcpy (mempcpy (tempfname, ld_state.outfname, outfname_len), ".XXXXXX"); - - /* The useof mktemp() here is fine. We do not want to use - mkstemp() since then the umask isn't used. And the output - file will have these permissions anyhow. Any intruder could - change the file later if it would be possible now. */ - if (mktemp (tempfname) != NULL - && (fd = open (tempfname, O_RDWR | O_EXCL | O_CREAT | O_NOFOLLOW, - ld_state.file_type == relocatable_file_type - ? DEFFILEMODE : ACCESSPERMS)) != -1) - break; - - /* Failed this round. We keep trying a number of times. */ - if (++try >= 10) - error (EXIT_FAILURE, errno, gettext ("cannot create output file")); - } - ld_state.outfd = fd; - - /* Make sure we remove the temporary file in case something goes - wrong. */ - on_exit (remove_tempfile, NULL); - - /* Create the ELF file data for the output file. */ - Elf *elf = ld_state.outelf = elf_begin (fd, - conserve_memory - ? ELF_C_WRITE : ELF_C_WRITE_MMAP, - NULL); - if (elf == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot create ELF descriptor for output file: %s"), - elf_errmsg (-1)); - - /* Create the basic data structures. */ - if (! xelf_newehdr (elf, klass)) - /* Couldn't create the ELF header. Very bad. */ - error (EXIT_FAILURE, 0, - gettext ("could not create ELF header for output file: %s"), - elf_errmsg (-1)); - - /* And get the current header so that we can modify it. */ - XElf_Ehdr_vardef (ehdr); - xelf_getehdr (elf, ehdr); - assert (ehdr != NULL); - - /* Set the machine type. */ - ehdr->e_machine = machine; - - /* Modify it according to the info we have here and now. */ - if (ld_state.file_type == executable_file_type) - ehdr->e_type = ET_EXEC; - else if (ld_state.file_type == dso_file_type) - ehdr->e_type = ET_DYN; - else - { - assert (ld_state.file_type == relocatable_file_type); - ehdr->e_type = ET_REL; - } - - /* Set the ELF version. */ - ehdr->e_version = EV_CURRENT; - - /* Set the endianness. */ - ehdr->e_ident[EI_DATA] = data; - - /* Write the ELF header information back. */ - (void) xelf_update_ehdr (elf, ehdr); - - return 0; -} - - -/* We compute the offsets of the various copied objects and the total - size of the memory needed. */ -// XXX The method used here is simple: go from front to back and pack -// the objects in this order. A more space efficient way would -// actually trying to pack the objects as dense as possible. But this -// is more expensive. -static void -compute_copy_reloc_offset (XElf_Shdr *shdr) -{ - struct symbol *runp = ld_state.from_dso; - assert (runp != NULL); - - XElf_Off maxalign = 1; - XElf_Off offset = 0; - - do - if (runp->need_copy) - { - /* Determine alignment for the symbol. */ - // XXX The question is how? The symbol record itself does not - // have the information. So we have to be conservative and - // assume the alignment of the section the symbol is in. - - // XXX We can be more precise. Use the offset from the beginning - // of the section and determine the largest power of two with - // module zero. - XElf_Off symalign = MAX (SCNINFO_SHDR (runp->file->scninfo[runp->scndx].shdr).sh_addralign, 1); - /* Keep track of the maximum alignment requirement. */ - maxalign = MAX (maxalign, symalign); - - /* Align current position. */ - offset = (offset + symalign - 1) & ~(symalign - 1); - - runp->merge.value = offset; - - offset += runp->size; - } - while ((runp = runp->next) != ld_state.from_dso); - - shdr->sh_type = SHT_NOBITS; - shdr->sh_size = offset; - shdr->sh_addralign = maxalign; -} - - -static void -compute_common_symbol_offset (XElf_Shdr *shdr) -{ - struct symbol *runp = ld_state.common_syms; - assert (runp != NULL); - - XElf_Off maxalign = 1; - XElf_Off offset = 0; - - do - { - /* Determine alignment for the symbol. */ - XElf_Off symalign = runp->merge.value; - - /* Keep track of the maximum alignment requirement. */ - maxalign = MAX (maxalign, symalign); - - /* Align current position. */ - offset = (offset + symalign - 1) & ~(symalign - 1); - - runp->merge.value = offset; - - offset += runp->size; - } - while ((runp = runp->next) != ld_state.common_syms); - - shdr->sh_type = SHT_NOBITS; - shdr->sh_size = offset; - shdr->sh_addralign = maxalign; -} - - -static void -sort_sections_generic (void) -{ - /* XXX TBI */ - abort (); -} - - -static int -match_section (const char *osectname, struct filemask_section_name *sectmask, - struct scnhead **scnhead, bool new_section, size_t segment_nr) -{ - struct scninfo *prevp; - struct scninfo *runp; - struct scninfo *notused; - - if (fnmatch (sectmask->section_name->name, (*scnhead)->name, 0) != 0) - /* The section name does not match. */ - return new_section; - - /* If this is a section generated by the linker it doesn't contain - the regular information (i.e., input section data etc) and must - be handle special. */ - if ((*scnhead)->kind != scn_normal) - { - (*scnhead)->name = osectname; - (*scnhead)->segment_nr = segment_nr; - - /* We have to count note section since they get their own - program header entry. */ - if ((*scnhead)->type == SHT_NOTE) - ++ld_state.nnotesections; - - ld_state.allsections[ld_state.nallsections++] = (*scnhead); - return true; - } - - /* Now we have to match the file names of the input files. Some of - the sections here might not match. */ - runp = (*scnhead)->last->next; - prevp = (*scnhead)->last; - notused = NULL; - - do - { - /* Base of the file name the section comes from. */ - const char *brfname = basename (runp->fileinfo->rfname); - - /* If the section isn't used, the name doesn't match the positive - inclusion list or the name does match the negative inclusion - list, ignore the section. */ - if (!runp->used - || (sectmask->filemask != NULL - && fnmatch (sectmask->filemask, brfname, 0) != 0) - || (sectmask->excludemask != NULL - && fnmatch (sectmask->excludemask, brfname, 0) == 0)) - { - /* This file does not match the file name masks. */ - if (notused == NULL) - notused = runp; - - prevp = runp; - runp = runp->next; - if (runp == notused) - runp = NULL; - } - /* The section fulfills all requirements, add it to the output - file with the correct section name etc. */ - else - { - struct scninfo *found = runp; - - /* Remove this input section data buffer from the list. */ - if (prevp != runp) - runp = prevp->next = runp->next; - else - { - free (*scnhead); - *scnhead = NULL; - runp = NULL; - } - - /* Create a new section for the output file if the 'new_section' - flag says so. Otherwise append the buffer to the last - section which we created in one of the last calls. */ - if (new_section) - { - struct scnhead *newp; - - newp = (struct scnhead *) obstack_calloc (&ld_state.smem, - sizeof (*newp)); - newp->kind = scn_normal; - newp->name = osectname; - newp->type = SCNINFO_SHDR (found->shdr).sh_type; - newp->flags = SCNINFO_SHDR (found->shdr).sh_flags; - newp->segment_nr = segment_nr; - newp->last = found->next = found; - newp->used = true; - newp->relsize = found->relsize; - newp->entsize = SCNINFO_SHDR (found->shdr).sh_entsize; - - /* We have to count note section since they get their own - program header entry. */ - if (newp->type == SHT_NOTE) - ++ld_state.nnotesections; - - ld_state.allsections[ld_state.nallsections++] = newp; - new_section = false; - } - else - { - struct scnhead *queued; - - queued = ld_state.allsections[ld_state.nallsections - 1]; - - found->next = queued->last->next; - queued->last = queued->last->next = found; - - /* If the linker script forces us to add incompatible - sections together do so. But reflect this in the - type and flags of the resulting file. */ - if (queued->type != SCNINFO_SHDR (found->shdr).sh_type) - /* XXX Any better choice? */ - queued->type = SHT_PROGBITS; - if (queued->flags != SCNINFO_SHDR (found->shdr).sh_flags) - queued->flags = ebl_sh_flags_combine (ld_state.ebl, - queued->flags, - SCNINFO_SHDR (found->shdr).sh_flags); - - /* Accumulate the relocation section size. */ - queued->relsize += found->relsize; - } - } - } - while (runp != NULL); - - return new_section; -} - - -static void -sort_sections_lscript (void) -{ - struct scnhead *temp[ld_state.nallsections]; - - /* Make a copy of the section head pointer array. */ - memcpy (temp, ld_state.allsections, - ld_state.nallsections * sizeof (temp[0])); - size_t nallsections = ld_state.nallsections; - - /* Convert the output segment list in a single-linked list. */ - struct output_segment *segment = ld_state.output_segments->next; - ld_state.output_segments->next = NULL; - ld_state.output_segments = segment; - - /* Put the sections in the correct order in the array in the state - structure. This might involve merging of sections and also - renaming the containing section in the output file. */ - ld_state.nallsections = 0; - size_t segment_nr; - size_t last_writable = ~0; - for (segment_nr = 0; segment != NULL; segment = segment->next, ++segment_nr) - { - struct output_rule *orule; - - for (orule = segment->output_rules; orule != NULL; orule = orule->next) - if (orule->tag == output_section) - { - struct input_rule *irule; - bool new_section = true; - - for (irule = orule->val.section.input; irule != NULL; - irule = irule->next) - if (irule->tag == input_section) - { - size_t cnt; - - for (cnt = 0; cnt < nallsections; ++cnt) - if (temp[cnt] != NULL) - new_section = - match_section (orule->val.section.name, - irule->val.section, &temp[cnt], - new_section, segment_nr); - } - } - - if ((segment->mode & PF_W) != 0) - last_writable = ld_state.nallsections - 1; - } - - /* In case we have to create copy relocations or we have common - symbols, find the last writable segment and add one more data - block. It will be a NOBITS block and take up no disk space. - This is why it is important to get the last block. */ - if (ld_state.ncopy > 0 || ld_state.common_syms != NULL) - { - if (last_writable == ~0) - error (EXIT_FAILURE, 0, "no writable segment"); - - if (ld_state.allsections[last_writable]->type != SHT_NOBITS) - { - /* Make room in the ALLSECTIONS array for a new section. - There is guaranteed room in the array. We add the new - entry after the last writable section. */ - ++last_writable; - memmove (&ld_state.allsections[last_writable + 1], - &ld_state.allsections[last_writable], - (ld_state.nallsections - last_writable) - * sizeof (ld_state.allsections[0])); - - ld_state.allsections[last_writable] = (struct scnhead *) - obstack_calloc (&ld_state.smem, sizeof (struct scnhead)); - - /* Name for the new section. */ - ld_state.allsections[last_writable]->name = ".bss"; - /* Type: NOBITS. */ - ld_state.allsections[last_writable]->type = SHT_NOBITS; - /* Same segment as the last writable section. */ - ld_state.allsections[last_writable]->segment_nr - = ld_state.allsections[last_writable - 1]->segment_nr; - } - } - - /* Create common symbol data block. */ - if (ld_state.ncopy > 0) - { -#if NATIVE_ELF - struct scninfo *si = (struct scninfo *) - obstack_calloc (&ld_state.smem, sizeof (*si) + sizeof (XElf_Shdr)); - si->shdr = (XElf_Shdr *) (si + 1); -#else - struct scninfo *si = (struct scninfo *) obstack_calloc (&ld_state.smem, - sizeof (*si)); -#endif - - /* Get the information regarding the symbols with copy relocations. */ - compute_copy_reloc_offset (&SCNINFO_SHDR (si->shdr)); - - /* This section is needed. */ - si->used = true; - /* Remember for later the section data structure. */ - ld_state.copy_section = si; - - if (likely (ld_state.allsections[last_writable]->last != NULL)) - { - si->next = ld_state.allsections[last_writable]->last->next; - ld_state.allsections[last_writable]->last->next = si; - ld_state.allsections[last_writable]->last = si; - } - else - ld_state.allsections[last_writable]->last = si->next = si; - } - - /* Create common symbol data block. */ - if (ld_state.common_syms != NULL) - { -#if NATIVE_ELF - struct scninfo *si = (struct scninfo *) - obstack_calloc (&ld_state.smem, sizeof (*si) + sizeof (XElf_Shdr)); - si->shdr = (XElf_Shdr *) (si + 1); -#else - struct scninfo *si = (struct scninfo *) obstack_calloc (&ld_state.smem, - sizeof (*si)); -#endif - - /* Get the information regarding the symbols with copy relocations. */ - compute_common_symbol_offset (&SCNINFO_SHDR (si->shdr)); - - /* This section is needed. */ - si->used = true; - /* Remember for later the section data structure. */ - ld_state.common_section = si; - - if (likely (ld_state.allsections[last_writable]->last != NULL)) - { - si->next = ld_state.allsections[last_writable]->last->next; - ld_state.allsections[last_writable]->last->next = si; - ld_state.allsections[last_writable]->last = si; - } - else - ld_state.allsections[last_writable]->last = si->next = si; - } -} - - -/* Create the output sections now. This requires knowledge about all - the sections we will need. It may be necessary to sort sections in - the order they are supposed to appear in the executable. The - sorting use many different kinds of information to optimize the - resulting binary. Important is to respect segment boundaries and - the needed alignment. The mode of the segments will be determined - afterwards automatically by the output routines. - - The generic sorting routines work in one of two possible ways: - - - if a linker script specifies the sections to be used in the - output and assigns them to a segment this information is used; - - - otherwise the linker will order the sections based on permissions - and some special knowledge about section names.*/ -static void -ld_generic_create_sections (struct ld_state *statep) -{ - struct scngroup *groups; - size_t cnt; - - /* For relocatable object we don't have to bother sorting the - sections and we do want to preserve the relocation sections as - they appear in the input files. */ - if (ld_state.file_type != relocatable_file_type) - { - /* Collect all the relocation sections. They are handled - separately. */ - struct scninfo *list = NULL; - for (cnt = 0; cnt < ld_state.nallsections; ++cnt) - if ((ld_state.allsections[cnt]->type == SHT_REL - || ld_state.allsections[cnt]->type == SHT_RELA) - /* The generated relocation sections are not of any - interest here. */ - && ld_state.allsections[cnt]->last != NULL) - { - if (list == NULL) - list = ld_state.allsections[cnt]->last; - else - { - /* Merge the sections list. */ - struct scninfo *first = list->next; - list->next = ld_state.allsections[cnt]->last->next; - ld_state.allsections[cnt]->last->next = first; - list = ld_state.allsections[cnt]->last; - } - - /* Remove the entry from the section list. */ - ld_state.allsections[cnt] = NULL; - } - ld_state.rellist = list; - - if (ld_state.output_segments == NULL) - /* Sort using builtin rules. */ - sort_sections_generic (); - else - sort_sections_lscript (); - } - - /* Now iterate over the input sections and create the sections in the - order they are required in the output file. */ - for (cnt = 0; cnt < ld_state.nallsections; ++cnt) - { - struct scnhead *head = ld_state.allsections[cnt]; - Elf_Scn *scn; - XElf_Shdr_vardef (shdr); - - /* Don't handle unused sections. */ - if (!head->used) - continue; - - /* We first have to create the section group if necessary. - Section group sections must come (in section index order) - before any of the section contained. This all is necessary - only for relocatable object as other object types are not - allowed to contain section groups. */ - if (ld_state.file_type == relocatable_file_type - && unlikely (head->flags & SHF_GROUP)) - { - /* There is at least one section which is contained in a - section group in the input file. This means we must - create a section group here as well. The only problem is - that not all input files have to have to same kind of - partitioning of the sections. I.e., sections A and B in - one input file and sections B and C in another input file - can be in one group. That will result in a group - containing the sections A, B, and C in the output - file. */ - struct scninfo *runp; - Elf32_Word here_groupidx = 0; - struct scngroup *here_group; - struct member *newp; - - /* First check whether any section is already in a group. - In this case we have to add this output section, too. */ - runp = head->last; - do - { - assert (runp->grpid != 0); - - here_groupidx = runp->fileinfo->scninfo[runp->grpid].outscnndx; - if (here_groupidx != 0) - break; - } - while ((runp = runp->next) != head->last); - - if (here_groupidx == 0) - { - /* We need a new section group section. */ - scn = elf_newscn (ld_state.outelf); - xelf_getshdr (scn, shdr); - if (shdr == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot create section for output file: %s"), - elf_errmsg (-1)); - - here_group = (struct scngroup *) xmalloc (sizeof (*here_group)); - here_group->outscnidx = here_groupidx = elf_ndxscn (scn); - here_group->nscns = 0; - here_group->member = NULL; - here_group->next = ld_state.groups; - /* Pick a name for the section. To keep it meaningful - we use a name used in the input files. If the - section group in the output file should contain - section which were in section groups of different - names in the input files this is the users - problem. */ - here_group->nameent - = ebl_strtabadd (ld_state.shstrtab, - elf_strptr (runp->fileinfo->elf, - runp->fileinfo->shstrndx, - SCNINFO_SHDR (runp->shdr).sh_name), - 0); - /* Signature symbol. */ - here_group->symbol - = runp->fileinfo->scninfo[runp->grpid].symbols; - - ld_state.groups = here_group; - } - else - { - /* Search for the group with this index. */ - here_group = ld_state.groups; - while (here_group->outscnidx != here_groupidx) - here_group = here_group->next; - } - - /* Add the new output section. */ - newp = (struct member *) alloca (sizeof (*newp)); - newp->scn = head; -#ifndef NDT_NEEDED - newp->next = NULL; -#endif - CSNGL_LIST_ADD_REAR (here_group->member, newp); - ++here_group->nscns; - - /* Store the section group index in all input files. */ - runp = head->last; - do - { - assert (runp->grpid != 0); - - if (runp->fileinfo->scninfo[runp->grpid].outscnndx == 0) - runp->fileinfo->scninfo[runp->grpid].outscnndx = here_groupidx; - else - assert (runp->fileinfo->scninfo[runp->grpid].outscnndx - == here_groupidx); - } - while ((runp = runp->next) != head->last); - } - - /* We'll use this section so get it's name in the section header - string table. */ - if (head->kind == scn_normal) - head->nameent = ebl_strtabadd (ld_state.shstrtab, head->name, 0); - - /* Create a new section in the output file and add all data - from all the sections we read. */ - scn = elf_newscn (ld_state.outelf); - head->scnidx = elf_ndxscn (scn); - xelf_getshdr (scn, shdr); - if (shdr == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot create section for output file: %s"), - elf_errmsg (-1)); - - assert (head->type != SHT_NULL); - assert (head->type != SHT_SYMTAB); - assert (head->type != SHT_DYNSYM || head->kind != scn_normal); - assert (head->type != SHT_STRTAB || head->kind != scn_normal); - assert (head->type != SHT_GROUP); - shdr->sh_type = head->type; - shdr->sh_flags = head->flags; - shdr->sh_addralign = head->align; - shdr->sh_entsize = head->entsize; - assert (shdr->sh_entsize != 0 || (shdr->sh_flags & SHF_MERGE) == 0); - (void) xelf_update_shdr (scn, shdr); - - /* We have to know the section index of the dynamic symbol table - right away. */ - if (head->kind == scn_dot_dynsym) - ld_state.dynsymscnidx = elf_ndxscn (scn); - } - - /* Actually create the section group sections. */ - groups = ld_state.groups; - while (groups != NULL) - { - Elf_Scn *scn; - Elf_Data *data; - Elf32_Word *grpdata; - struct member *runp; - - scn = elf_getscn (ld_state.outelf, groups->outscnidx); - assert (scn != NULL); - - data = elf_newdata (scn); - if (data == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot create section for output file: %s"), - elf_errmsg (-1)); - - data->d_size = (groups->nscns + 1) * sizeof (Elf32_Word); - data->d_buf = grpdata = (Elf32_Word *) xmalloc (data->d_size); - data->d_type = ELF_T_WORD; - data->d_version = EV_CURRENT; - data->d_off = 0; - /* XXX What better to use? */ - data->d_align = sizeof (Elf32_Word); - - /* The first word in the section is the flag word. */ - /* XXX Set COMDATA flag is necessary. */ - grpdata[0] = 0; - - runp = groups->member->next; - cnt = 1; - do - /* Fill in the index of the section. */ - grpdata[cnt++] = runp->scn->scnidx; - while ((runp = runp->next) != groups->member->next); - - groups = groups->next; - } -} - - -static bool -reduce_symbol_p (XElf_Sym *sym, struct Ebl_Strent *strent) -{ - const char *str; - const char *version; - struct id_list search; - struct id_list *verp; - bool result = ld_state.default_bind_local; - - if (XELF_ST_BIND (sym->st_info) == STB_LOCAL || sym->st_shndx == SHN_UNDEF) - /* We don't have to do anything to local symbols here. */ - /* XXX Any section value in [SHN_LORESERVER,SHN_XINDEX) need - special treatment? */ - return false; - - /* XXX Handle other symbol bindings. */ - assert (XELF_ST_BIND (sym->st_info) == STB_GLOBAL - || XELF_ST_BIND (sym->st_info) == STB_WEAK); - - str = ebl_string (strent); - version = strchr (str, VER_CHR); - if (version != NULL) - { - search.id = strndupa (str, version - str); - if (*++version == VER_CHR) - /* Skip the second '@' signalling a default definition. */ - ++version; - } - else - { - search.id = str; - version = ""; - } - - verp = ld_version_str_tab_find (&ld_state.version_str_tab, - elf_hash (search.id), &search); - while (verp != NULL) - { - /* We have this symbol in the version hash table. Now match the - version name. */ - if (strcmp (verp->u.s.versionname, version) == 0) - /* Match! */ - return verp->u.s.local; - - verp = verp->next; - } - - /* XXX Add test for wildcard version symbols. */ - - return result; -} - - -static XElf_Addr -eval_expression (struct expression *expr, XElf_Addr addr) -{ - XElf_Addr val = ~((XElf_Addr) 0); - - switch (expr->tag) - { - case exp_num: - val = expr->val.num; - break; - - case exp_sizeof_headers: - { - /* The 'elf_update' call determine the offset of the first - section. The the size of the header. */ - XElf_Shdr_vardef (shdr); - - xelf_getshdr (elf_getscn (ld_state.outelf, 1), shdr); - assert (shdr != NULL); - - val = shdr->sh_offset; - } - break; - - case exp_pagesize: - val = ld_state.pagesize; - break; - - case exp_id: - /* We are here computing only address expressions. It seems not - to be necessary to handle any variable but ".". Let's avoid - the complication. If it turns up to be needed we can add - it. */ - if (strcmp (expr->val.str, ".") != 0) - error (EXIT_FAILURE, 0, gettext ("\ -address computation expression contains variable '%s'"), - expr->val.str); - - val = addr; - break; - - case exp_mult: - val = (eval_expression (expr->val.binary.left, addr) - * eval_expression (expr->val.binary.right, addr)); - break; - - case exp_div: - val = (eval_expression (expr->val.binary.left, addr) - / eval_expression (expr->val.binary.right, addr)); - break; - - case exp_mod: - val = (eval_expression (expr->val.binary.left, addr) - % eval_expression (expr->val.binary.right, addr)); - break; - - case exp_plus: - val = (eval_expression (expr->val.binary.left, addr) - + eval_expression (expr->val.binary.right, addr)); - break; - - case exp_minus: - val = (eval_expression (expr->val.binary.left, addr) - - eval_expression (expr->val.binary.right, addr)); - break; - - case exp_and: - val = (eval_expression (expr->val.binary.left, addr) - & eval_expression (expr->val.binary.right, addr)); - break; - - case exp_or: - val = (eval_expression (expr->val.binary.left, addr) - | eval_expression (expr->val.binary.right, addr)); - break; - - case exp_align: - val = eval_expression (expr->val.child, addr); - if ((val & (val - 1)) != 0) - error (EXIT_FAILURE, 0, gettext ("argument '%" PRIuMAX "' of ALIGN in address computation expression is no power of two"), - (uintmax_t) val); - val = (addr + val - 1) & ~(val - 1); - break; - } - - return val; -} - - -/* Find a good as possible size for the hash table so that all the - non-zero entries in HASHCODES don't collide too much and the table - isn't too large. There is no exact formular for this so we use a - heuristic. Depending on the optimization level the search is - longer or shorter. */ -static size_t -optimal_bucket_size (Elf32_Word *hashcodes, size_t maxcnt, int optlevel) -{ - size_t minsize; - size_t maxsize; - size_t bestsize; - uint64_t bestcost; - size_t size; - uint32_t *counts; - uint32_t *lengths; - - if (maxcnt == 0) - return 0; - - /* When we are not optimizing we run only very few tests. */ - if (optlevel <= 0) - { - minsize = maxcnt; - maxsize = maxcnt + 10000 / maxcnt; - } - else - { - /* Does not make much sense to start with a smaller table than - one which has at least four collisions. */ - minsize = MAX (1, maxcnt / 4); - /* We look for a best fit in the range of up to eigth times the - number of elements. */ - maxsize = 2 * maxcnt + (6 * MIN (optlevel, 100) * maxcnt) / 100; - } - bestsize = maxcnt; - bestcost = UINT_MAX; - - /* Array for counting the collisions and chain lengths. */ - counts = (uint32_t *) xmalloc ((maxcnt + 1 + maxsize) * sizeof (uint32_t)); - lengths = &counts[maxcnt + 1]; - - for (size = minsize; size <= maxsize; ++size) - { - size_t inner; - uint64_t cost; - uint32_t maxlength; - uint64_t success; - uint32_t acc; - double factor; - - memset (lengths, '\0', size * sizeof (uint32_t)); - memset (counts, '\0', (maxcnt + 1) * sizeof (uint32_t)); - - /* Determine how often each hash bucket is used. */ - for (inner = 0; inner < maxcnt; ++inner) - ++lengths[hashcodes[inner] % size]; - - /* Determine the lengths. */ - maxlength = 0; - for (inner = 0; inner < size; ++inner) - { - ++counts[lengths[inner]]; - - if (lengths[inner] > maxlength) - maxlength = lengths[inner]; - } - - /* Determine successful lookup length. */ - acc = 0; - success = 0; - for (inner = 0; inner <= maxlength; ++inner) - { - acc += inner; - success += counts[inner] * acc; - } - - /* We can compute two factors now: the average length of a - positive search and the average length of a negative search. - We count the number of comparisons which have to look at the - names themselves. Recognizing that the chain ended is not - accounted for since it's almost for free. - - Which lookup is more important depends on the kind of DSO. - If it is a system DSO like libc it is expected that most - lookups succeed. Otherwise most lookups fail. */ - if (ld_state.is_system_library) - factor = (1.0 * (double) success / (double) maxcnt - + 0.3 * (double) maxcnt / (double) size); - else - factor = (0.3 * (double) success / (double) maxcnt - + 1.0 * (double) maxcnt / (double) size); - - /* Combine the lookup cost factor. The 1/16th addend adds - penalties for too large table sizes. */ - cost = (2 + maxcnt + size) * (factor + 1.0 / 16.0); - -#if 0 - printf ("maxcnt = %d, size = %d, cost = %Ld, success = %g, fail = %g, factor = %g\n", - maxcnt, size, cost, (double) success / (double) maxcnt, (double) maxcnt / (double) size, factor); -#endif - - /* Compare with current best results. */ - if (cost < bestcost) - { - bestcost = cost; - bestsize = size; - } - } - - free (counts); - - return bestsize; -} - - -static XElf_Addr -find_entry_point (void) -{ - XElf_Addr result; - - if (ld_state.entry != NULL) - { - struct symbol search = { .name = ld_state.entry }; - struct symbol *syment; - - syment = ld_symbol_tab_find (&ld_state.symbol_tab, - elf_hash (ld_state.entry), &search); - if (syment != NULL && syment->defined) - { - /* We found the symbol. */ - Elf_Data *data = elf_getdata (elf_getscn (ld_state.outelf, - ld_state.symscnidx), NULL); - - XElf_Sym_vardef (sym); - - sym = NULL; - if (data != NULL) - xelf_getsym (data, ld_state.dblindirect[syment->outsymidx], sym); - - if (sym == NULL && ld_state.need_dynsym && syment->outdynsymidx != 0) - { - /* Use the dynamic symbol table if available. */ - data = elf_getdata (elf_getscn (ld_state.outelf, - ld_state.dynsymscnidx), NULL); - - sym = NULL; - if (data != NULL) - xelf_getsym (data, syment->outdynsymidx, sym); - } - - if (sym != NULL) - return sym->st_value; - - /* XXX What to do if the output has no non-dynamic symbol - table and the dynamic symbol table does not contain the - symbol? */ - assert (ld_state.need_symtab); - assert (ld_state.symscnidx != 0); - } - } - - /* We couldn't find the symbol or none was given. Use the first - address of the ".text" section then. */ - - - result = 0; - - /* In DSOs this is no fatal error. They usually have no entry - points. In this case we set the entry point to zero, which makes - sure it will always fail. */ - if (ld_state.file_type == executable_file_type) - { - if (ld_state.entry != NULL) - error (0, 0, gettext ("\ -cannot find entry symbol \"%s\": defaulting to %#0*" PRIx64), - ld_state.entry, - xelf_getclass (ld_state.outelf) == ELFCLASS32 ? 10 : 18, - (uint64_t) result); - else - error (0, 0, gettext ("\ -no entry symbol specified: defaulting to %#0*" PRIx64), - xelf_getclass (ld_state.outelf) == ELFCLASS32 ? 10 : 18, - (uint64_t) result); - } - - return result; -} - - -static void -fillin_special_symbol (struct symbol *symst, size_t scnidx, size_t nsym, - Elf_Data *symdata, struct Ebl_Strtab *strtab) -{ - assert (ld_state.file_type != relocatable_file_type); - - XElf_Sym_vardef (sym); - xelf_getsym_ptr (symdata, nsym, sym); - - /* The name offset will be filled in later. */ - sym->st_name = 0; - /* Traditionally: globally visible. */ - sym->st_info = XELF_ST_INFO (STB_GLOBAL, symst->type); - /* No special visibility or so. */ - sym->st_other = 0; - /* Reference to the GOT or dynamic section. Since the GOT and - dynamic section are only created for executables and DSOs it - cannot be that the section index is too large. */ - assert (scnidx != 0); - assert (scnidx < SHN_LORESERVE || scnidx == SHN_ABS); - sym->st_shndx = scnidx; - /* We want the beginning of the section. */ - sym->st_value = 0; - - /* Determine the size of the section. */ - if (scnidx != SHN_ABS) - { - Elf_Data *data = elf_getdata (elf_getscn (ld_state.outelf, scnidx), - NULL); - assert (data != NULL); - sym->st_size = data->d_size; - /* Make sure there is no second data block. */ - assert (elf_getdata (elf_getscn (ld_state.outelf, scnidx), data) - == NULL); - } - - /* Insert symbol into the symbol table. Note that we do not have to - use xelf_update_symshdx. */ - (void) xelf_update_sym (symdata, nsym, sym); - - /* Cross-references. */ - ndxtosym[nsym] = symst; - symst->outsymidx = nsym; - - /* Add the name to the string table. */ - symstrent[nsym] = ebl_strtabadd (strtab, symst->name, 0); -} - - -static void -new_dynamic_entry (Elf_Data *data, int idx, XElf_Sxword tag, XElf_Addr val) -{ - XElf_Dyn_vardef (dyn); - xelf_getdyn_ptr (data, idx, dyn); - dyn->d_tag = tag; - dyn->d_un.d_ptr = val; - (void) xelf_update_dyn (data, idx, dyn); -} - - -static void -allocate_version_names (struct usedfiles *runp, struct Ebl_Strtab *dynstrtab) -{ - /* If this DSO has no versions skip it. */ - if (runp->status != opened || runp->verdefdata == NULL) - return; - - /* Add the object name. */ - int offset = 0; - while (1) - { - XElf_Verdef_vardef (def); - XElf_Verdaux_vardef (aux); - - /* Get data at the next offset. */ - xelf_getverdef (runp->verdefdata, offset, def); - assert (def != NULL); - xelf_getverdaux (runp->verdefdata, offset + def->vd_aux, aux); - assert (aux != NULL); - - assert (def->vd_ndx <= runp->nverdef); - if (def->vd_ndx == 1 || runp->verdefused[def->vd_ndx] != 0) - { - runp->verdefent[def->vd_ndx] - = ebl_strtabadd (dynstrtab, elf_strptr (runp->elf, - runp->dynsymstridx, - aux->vda_name), 0); - - if (def->vd_ndx > 1) - runp->verdefused[def->vd_ndx] = ld_state.nextveridx++; - } - - if (def->vd_next == 0) - /* That were all versions. */ - break; - - offset += def->vd_next; - } -} - - -XElf_Off -create_verneed_data (XElf_Off offset, Elf_Data *verneeddata, - struct usedfiles *runp, int *ntotal) -{ - size_t verneed_size = xelf_fsize (ld_state.outelf, ELF_T_VNEED, 1); - size_t vernaux_size = xelf_fsize (ld_state.outelf, ELF_T_VNAUX, 1); - int need_offset; - bool filled = false; - GElf_Verneed verneed; - GElf_Vernaux vernaux; - int ndef = 0; -size_t cnt; - - /* If this DSO has no versions skip it. */ - if (runp->nverdefused == 0) - return offset; - - /* We fill in the Verneed record last. Remember the - offset. */ - need_offset = offset; - offset += verneed_size; - - for (cnt = 2; cnt <= runp->nverdef; ++cnt) - if (runp->verdefused[cnt] != 0) - { - assert (runp->verdefent[cnt] != NULL); - - if (filled) - { - vernaux.vna_next = vernaux_size; - (void) gelf_update_vernaux (verneeddata, offset, - &vernaux); - offset += vernaux_size; - } - - vernaux.vna_hash - = elf_hash (ebl_string (runp->verdefent[cnt])); - vernaux.vna_flags = 0; - vernaux.vna_other = runp->verdefused[cnt]; - vernaux.vna_name = ebl_strtaboffset (runp->verdefent[cnt]); - filled = true; - ++ndef; - } - - assert (filled); - vernaux.vna_next = 0; - (void) gelf_update_vernaux (verneeddata, offset, &vernaux); - offset += vernaux_size; - - verneed.vn_version = VER_NEED_CURRENT; - verneed.vn_cnt = ndef; - verneed.vn_file = ebl_strtaboffset (runp->verdefent[1]); - /* The first auxiliary entry is always found directly - after the verneed entry. */ - verneed.vn_aux = verneed_size; - verneed.vn_next = --*ntotal > 0 ? offset - need_offset : 0; - (void) gelf_update_verneed (verneeddata, need_offset, - &verneed); - - return offset; -} - - -/* Create the output file. - - For relocatable files what basically has to happen is that all - sections from all input files are written into the output file. - Sections with the same name are combined (offsets adjusted - accordingly). The symbol tables are combined in one single table. - When stripping certain symbol table entries are omitted. - - For executables (shared or not) we have to create the program header, - additional sections like the .interp, eventually (in addition) create - a dynamic symbol table and a dynamic section. Also the relocations -have to be processed differently. */ -static int -ld_generic_create_outfile (struct ld_state *statep) -{ - struct scnlist - { - size_t scnidx; - struct scninfo *scninfo; - struct scnlist *next; - }; - struct scnlist *rellist = NULL; - size_t cnt; - Elf_Scn *symscn = NULL; - Elf_Scn *xndxscn = NULL; - Elf_Scn *strscn = NULL; - struct Ebl_Strtab *strtab = NULL; - struct Ebl_Strtab *dynstrtab = NULL; - XElf_Shdr_vardef (shdr); - Elf_Data *data; - Elf_Data *symdata = NULL; - Elf_Data *xndxdata = NULL; - struct usedfiles *file; - size_t nsym; - size_t nsym_local; - size_t nsym_allocated; - size_t nsym_dyn = 0; - Elf32_Word *dblindirect = NULL; -#ifndef NDEBUG - bool need_xndx; -#endif - Elf_Scn *shstrtab_scn; - size_t shstrtab_ndx; - XElf_Ehdr_vardef (ehdr); - struct Ebl_Strent *symtab_ent = NULL; - struct Ebl_Strent *xndx_ent = NULL; - struct Ebl_Strent *strtab_ent = NULL; - struct Ebl_Strent *shstrtab_ent; - struct scngroup *groups; - Elf_Scn *dynsymscn = NULL; - Elf_Data *dynsymdata = NULL; - Elf_Data *dynstrdata = NULL; - Elf32_Word *hashcodes = NULL; - size_t nsym_dyn_allocated = 0; - Elf_Scn *versymscn = NULL; - Elf_Data *versymdata = NULL; - - if (ld_state.need_symtab) - { - /* First create the symbol table. We need the symbol section itself - and the string table for it. */ - symscn = elf_newscn (ld_state.outelf); - ld_state.symscnidx = elf_ndxscn (symscn); - symdata = elf_newdata (symscn); - if (symdata == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot create symbol table for output file: %s"), - elf_errmsg (-1)); - - symdata->d_type = ELF_T_SYM; - /* This is an estimated size, but it will definitely cap the real value. - We might have to adjust the number later. */ - nsym_allocated = (1 + ld_state.nsymtab + ld_state.nplt + ld_state.ngot - + ld_state.nusedsections + ld_state.nlscript_syms); - symdata->d_size = xelf_fsize (ld_state.outelf, ELF_T_SYM, - nsym_allocated); - - /* Optionally the extended section table. */ - /* XXX Is SHN_LORESERVE correct? Do we need some other sections? */ - if (unlikely (ld_state.nusedsections >= SHN_LORESERVE)) - { - xndxscn = elf_newscn (ld_state.outelf); - ld_state.xndxscnidx = elf_ndxscn (xndxscn); - - xndxdata = elf_newdata (xndxscn); - if (xndxdata == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot create symbol table for output file: %s"), - elf_errmsg (-1)); - - /* The following relies on the fact that Elf32_Word and Elf64_Word - have the same size. */ - xndxdata->d_type = ELF_T_WORD; - /* This is an estimated size, but it will definitely cap the - real value. we might have to adjust the number later. */ - xndxdata->d_size = xelf_fsize (ld_state.outelf, ELF_T_WORD, - nsym_allocated); - /* The first entry is left empty, clear it here and now. */ - xndxdata->d_buf = memset (xmalloc (xndxdata->d_size), '\0', - xelf_fsize (ld_state.outelf, ELF_T_WORD, - 1)); - xndxdata->d_off = 0; - /* XXX Should use an ebl function. */ - xndxdata->d_align = sizeof (Elf32_Word); - } - } - else - { - assert (ld_state.need_dynsym); - - /* First create the symbol table. We need the symbol section itself - and the string table for it. */ - symscn = elf_getscn (ld_state.outelf, ld_state.dynsymscnidx); - symdata = elf_newdata (symscn); - if (symdata == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot create symbol table for output file: %s"), - elf_errmsg (-1)); - - symdata->d_version = EV_CURRENT; - symdata->d_type = ELF_T_SYM; - /* This is an estimated size, but it will definitely cap the real value. - We might have to adjust the number later. */ - nsym_allocated = (1 + ld_state.nsymtab + ld_state.nplt + ld_state.ngot - - ld_state.nlocalsymbols + ld_state.nlscript_syms); - symdata->d_size = xelf_fsize (ld_state.outelf, ELF_T_SYM, - nsym_allocated); - } - - /* The first entry is left empty, clear it here and now. */ - symdata->d_buf = memset (xmalloc (symdata->d_size), '\0', - xelf_fsize (ld_state.outelf, ELF_T_SYM, 1)); - symdata->d_off = 0; - /* XXX This is ugly but how else can it be done. */ - symdata->d_align = xelf_fsize (ld_state.outelf, ELF_T_ADDR, 1); - - /* Allocate another array to keep track of the handles for the symbol - names. */ - symstrent = (struct Ebl_Strent **) xcalloc (nsym_allocated, - sizeof (struct Ebl_Strent *)); - - /* By starting at 1 we effectively add a null entry. */ - nsym = 1; - - /* Iteration over all sections. */ - for (cnt = 0; cnt < ld_state.nallsections; ++cnt) - { - struct scnhead *head = ld_state.allsections[cnt]; - Elf_Scn *scn; - struct scninfo *runp; - XElf_Off offset; - Elf32_Word xndx; - - /* Don't handle unused sections at all. */ - if (!head->used) - continue; - - /* Get the section handle. */ - scn = elf_getscn (ld_state.outelf, head->scnidx); - - if (unlikely (head->kind == scn_dot_interp)) - { - Elf_Data *outdata = elf_newdata (scn); - if (outdata == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot create section for output file: %s"), - elf_errmsg (-1)); - - /* This is the string we'll put in the section. */ - const char *interp = ld_state.interp ?: "/lib/ld.so.1"; - - /* Create the section data. */ - outdata->d_buf = (void *) interp; - outdata->d_size = strlen (interp) + 1; - outdata->d_type = ELF_T_BYTE; - outdata->d_off = 0; - outdata->d_align = 1; - outdata->d_version = EV_CURRENT; - - /* Remember the index of this section. */ - ld_state.interpscnidx = head->scnidx; - - continue; - } - - if (unlikely (head->kind == scn_dot_got)) - { - /* Remember the index of this section. */ - ld_state.gotscnidx = elf_ndxscn (scn); - - /* Give the backend the change to initialize the section. */ - INITIALIZE_GOT (&ld_state, scn); - - continue; - } - - if (unlikely (head->kind == scn_dot_dynrel)) - { - Elf_Data *outdata; - - outdata = elf_newdata (scn); - if (outdata == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot create section for output file: %s"), - elf_errmsg (-1)); - - outdata->d_size = ld_state.relsize_total; - outdata->d_buf = xmalloc (outdata->d_size); - outdata->d_type = (REL_TYPE (&ld_state) == DT_REL - ? ELF_T_REL : ELF_T_RELA); - outdata->d_off = 0; - outdata->d_align = xelf_fsize (ld_state.outelf, ELF_T_ADDR, 1); - - /* Remember the index of this section. */ - ld_state.reldynscnidx = elf_ndxscn (scn); - - continue; - } - - if (unlikely (head->kind == scn_dot_dynamic)) - { - /* Only create the data for now. */ - Elf_Data *outdata; - - /* Account for a few more entries we have to add. */ - if (ld_state.dt_flags != 0) - ++ld_state.ndynamic; - if (ld_state.dt_flags_1 != 0) - ++ld_state.ndynamic; - if (ld_state.dt_feature_1 != 0) - ++ld_state.ndynamic; - - outdata = elf_newdata (scn); - if (outdata == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot create section for output file: %s"), - elf_errmsg (-1)); - - /* Create the section data. */ - outdata->d_size = xelf_fsize (ld_state.outelf, ELF_T_DYN, - ld_state.ndynamic); - outdata->d_buf = xcalloc (1, outdata->d_size); - outdata->d_type = ELF_T_DYN; - outdata->d_off = 0; - outdata->d_align = xelf_fsize (ld_state.outelf, ELF_T_ADDR, 1); - - /* Remember the index of this section. */ - ld_state.dynamicscnidx = elf_ndxscn (scn); - - continue; - } - - if (unlikely (head->kind == scn_dot_dynsym)) - { - /* We already know the section index. */ - assert (ld_state.dynsymscnidx == elf_ndxscn (scn)); - - continue; - } - - if (unlikely (head->kind == scn_dot_dynstr)) - { - /* Remember the index of this section. */ - ld_state.dynstrscnidx = elf_ndxscn (scn); - - /* Create the string table. */ - dynstrtab = ebl_strtabinit (true); - - /* XXX TBI - We have to add all the strings which are needed in the - dynamic section here. This means DT_FILTER, - DT_AUXILIARY, ... entries. */ - if (ld_state.ndsofiles > 0) - { - struct usedfiles *frunp = ld_state.dsofiles; - - do - if (! ld_state.ignore_unused_dsos || frunp->used) - frunp->sonameent = ebl_strtabadd (dynstrtab, frunp->soname, - 0); - while ((frunp = frunp->next) != ld_state.dsofiles); - } - - - /* Add the runtime path information. The strings are stored - in the .dynstr section. If both rpath and runpath are defined - the runpath information is used. */ - if (ld_state.runpath != NULL || ld_state.rpath != NULL) - { - struct pathelement *startp; - struct pathelement *prunp; - int tag; - size_t len; - char *str; - char *cp; - - if (ld_state.runpath != NULL) - { - startp = ld_state.runpath; - tag = DT_RUNPATH; - } - else - { - startp = ld_state.rpath; - tag = DT_RPATH; - } - - /* Determine how long the string will be. */ - for (len = 0, prunp = startp; prunp != NULL; prunp = prunp->next) - len += strlen (prunp->pname) + 1; - - cp = str = (char *) obstack_alloc (&ld_state.smem, len); - /* Copy the string. */ - for (prunp = startp; prunp != NULL; prunp = prunp->next) - { - cp = stpcpy (cp, prunp->pname); - *cp++ = ':'; - } - /* Remove the last colon. */ - cp[-1] = '\0'; - - /* Remember the values until we can generate the dynamic - section. */ - ld_state.rxxpath_strent = ebl_strtabadd (dynstrtab, str, len); - ld_state.rxxpath_tag = tag; - } - - continue; - } - - if (unlikely (head->kind == scn_dot_hash)) - { - /* Remember the index of this section. */ - ld_state.hashscnidx = elf_ndxscn (scn); - - continue; - } - - if (unlikely (head->kind == scn_dot_plt)) - { - /* Remember the index of this section. */ - ld_state.pltscnidx = elf_ndxscn (scn); - - /* Give the backend the change to initialize the section. */ - INITIALIZE_PLT (&ld_state, scn); - - continue; - } - - if (unlikely (head->kind == scn_dot_pltrel)) - { - /* Remember the index of this section. */ - ld_state.pltrelscnidx = elf_ndxscn (scn); - - /* Give the backend the change to initialize the section. */ - INITIALIZE_PLTREL (&ld_state, scn); - - continue; - } - - if (unlikely (head->kind == scn_dot_version)) - { - /* Remember the index of this section. */ - ld_state.versymscnidx = elf_ndxscn (scn); - - continue; - } - - if (unlikely (head->kind == scn_dot_version_r)) - { - /* Remember the index of this section. */ - ld_state.verneedscnidx = elf_ndxscn (scn); - - continue; - } - - /* If we come here we must be handling a normal section. */ - assert (head->kind == scn_normal); - - /* Create an STT_SECTION entry in the symbol table. But not for - the symbolic symbol table. */ - if (ld_state.need_symtab) - { - /* XXX Can we be cleverer and do this only if needed? */ - XElf_Sym_vardef (sym); - - /* Optimization ahead: in the native linker we get a pointer - to the final location so that the following code writes - directly in the correct place. Otherwise we write into - the local variable first. */ - xelf_getsym_ptr (symdata, nsym, sym); - - /* Usual section symbol: local, no specific information, - except the section index. The offset here is zero, the - start address will later be added. */ - sym->st_name = 0; - sym->st_info = XELF_ST_INFO (STB_LOCAL, STT_SECTION); - sym->st_other = 0; - sym->st_value = 0; - sym->st_size = 0; - /* In relocatable files the section index can be too big for - the ElfXX_Sym struct. we have to deal with the extended - symbol table. */ - if (likely (head->scnidx < SHN_LORESERVE)) - { - sym->st_shndx = head->scnidx; - xndx = 0; - } - else - { - sym->st_shndx = SHN_XINDEX; - xndx = head->scnidx; - } - /* Commit the change. See the optimization above, this does - not change the symbol table entry. But the extended - section index table entry is always written, if there is - such a table. */ - assert (nsym < nsym_allocated); - xelf_update_symshndx (symdata, xndxdata, nsym, sym, xndx, 0); - - /* Remember the symbol's index in the symbol table. */ - head->scnsymidx = nsym++; - } - - if (head->type == SHT_REL || head->type == SHT_RELA) - { - /* Remember that we have to fill in the symbol table section - index. */ - if (ld_state.file_type == relocatable_file_type) - { - struct scnlist *newp; - - newp = (struct scnlist *) alloca (sizeof (*newp)); - newp->scnidx = head->scnidx; - newp->scninfo = head->last->next; -#ifndef NDEBUG - newp->next = NULL; -#endif - SNGL_LIST_PUSH (rellist, newp); - } - else - { - /* When we create an executable or a DSO we don't simply - copy the existing relocations. Instead many will be - resolved, others will be converted. Create a data buffer - large enough to contain the contents which we will fill - in later. */ - int type = head->type == SHT_REL ? ELF_T_REL : ELF_T_RELA; - - data = elf_newdata (scn); - if (data == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot create section for output file: %s"), - elf_errmsg (-1)); - - data->d_size = xelf_fsize (ld_state.outelf, type, head->relsize); - data->d_buf = xcalloc (data->d_size, 1); - data->d_type = type; - data->d_align = xelf_fsize (ld_state.outelf, ELF_T_ADDR, 1); - data->d_off = 0; - - continue; - } - } - - /* Recognize string and merge flag and handle them. */ - if (head->flags & SHF_MERGE) - { - /* We merge the contents of the sections. For this we do - not look at the contents of section directly. Instead we - look at the symbols of the section. */ - Elf_Data *outdata; - - /* Concatenate the lists of symbols for all sections. - - XXX In case any input section has no symbols associated - (this happens for debug sections) we cannot use this - method. Implement parsing the other debug sections and - find the string pointers. For now we don't merge. */ - runp = head->last->next; - if (runp->symbols == NULL) - { - head->flags &= ~SHF_MERGE; - goto no_merge; - } - head->symbols = runp->symbols; - - while ((runp = runp->next) != head->last->next) - { - if (runp->symbols == NULL) - { - head->flags &= ~SHF_MERGE; - head->symbols = NULL; - goto no_merge; - } - - struct symbol *oldhead = head->symbols->next_in_scn; - - head->symbols->next_in_scn = runp->symbols->next_in_scn; - runp->symbols->next_in_scn = oldhead; - head->symbols = runp->symbols; - } - - /* Create the output section. */ - outdata = elf_newdata (scn); - if (outdata == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot create section for output file: %s"), - elf_errmsg (-1)); - - /* We use different merging algorithms for performance - reasons. We can easily handle single-byte and - wchar_t-wide character strings. All other cases (which - really should happen in real life) are handled by the - generic code. */ - if (SCNINFO_SHDR (head->last->shdr).sh_entsize == 1 - && (head->flags & SHF_STRINGS)) - { - /* Simple, single-byte string matching. */ - struct Ebl_Strtab *mergestrtab; - struct symbol *symrunp; - Elf_Data *locsymdata = NULL; - Elf_Data *locdata = NULL; - - mergestrtab = ebl_strtabinit (false); - - symrunp = head->symbols->next_in_scn; - file = NULL; - do - { - /* Accelarate the loop. We cache the file - information since it might very well be the case - that the previous entry was from the same - file. */ - if (symrunp->file != file) - { - /* Remember the file. */ - file = symrunp->file; - /* Symbol table data from that file. */ - locsymdata = file->symtabdata; - /* String section data. */ - locdata = elf_rawdata (file->scninfo[symrunp->scndx].scn, - NULL); - assert (locdata != NULL); - /* While we are at it, remember the output - section. If we don't access the string data - section the section won't be in the output - file. So it is sufficient to do the work - here. */ - file->scninfo[symrunp->scndx].outscnndx = head->scnidx; - } - - /* Get the symbol information. This provides us the - offset into the string data section. */ - XElf_Sym_vardef (sym); - xelf_getsym (locsymdata, symrunp->symidx, sym); - assert (sym != NULL); - - /* Get the data from the file. Note that we access - the raw section data; no endian-ness issues with - single-byte strings. */ - symrunp->merge.handle - = ebl_strtabadd (mergestrtab, - (char *) locdata->d_buf + sym->st_value, - 0); - } - while ((symrunp = symrunp->next_in_scn) - != head->symbols->next_in_scn); - - /* All strings have been added. Create the final table. */ - ebl_strtabfinalize (mergestrtab, outdata); - - /* Compute the final offsets in the section. */ - symrunp = runp->symbols; - do - { - symrunp->merge.value - = ebl_strtaboffset (symrunp->merge.handle); - symrunp->merged = 1; - } - while ((symrunp = symrunp->next_in_scn) != runp->symbols); - - /* We don't need the string table anymore. */ - ebl_strtabfree (mergestrtab); - } - else if (likely (SCNINFO_SHDR (head->last->shdr).sh_entsize - == sizeof (wchar_t)) - && likely (head->flags & SHF_STRINGS)) - { - /* Simple, wchar_t string merging. */ - struct Ebl_WStrtab *mergestrtab; - struct symbol *symrunp; - Elf_Data *locsymdata = NULL; - Elf_Data *locdata = NULL; - - mergestrtab = ebl_wstrtabinit (false); - - symrunp = runp->symbols; - file = NULL; - do - { - /* Accelarate the loop. We cache the file - information since it might very well be the case - that the previous entry was from the same - file. */ - if (symrunp->file != file) - { - /* Remember the file. */ - file = symrunp->file; - /* Symbol table data from that file. */ - locsymdata = file->symtabdata; - /* String section data. */ - locdata = elf_rawdata (file->scninfo[symrunp->scndx].scn, - NULL); - assert (locdata != NULL); - - /* While we are at it, remember the output - section. If we don't access the string data - section the section won't be in the output - file. So it is sufficient to do the work - here. */ - file->scninfo[symrunp->scndx].outscnndx = head->scnidx; - } - - /* Get the symbol information. This provides us the - offset into the string data section. */ - XElf_Sym_vardef (sym); - xelf_getsym (locsymdata, symrunp->symidx, sym); - assert (sym != NULL); - - /* Get the data from the file. Using the raw - section data here is possible since we don't - interpret the string themselves except for - looking for the wide NUL character. The NUL - character has fortunately the same representation - regardless of the byte order. */ - symrunp->merge.handle - = ebl_wstrtabadd (mergestrtab, - (wchar_t *) ((char *) locdata->d_buf - + sym->st_value), 0); - } - while ((symrunp = symrunp->next_in_scn) != runp->symbols); - - /* All strings have been added. Create the final table. */ - ebl_wstrtabfinalize (mergestrtab, outdata); - - /* Compute the final offsets in the section. */ - symrunp = runp->symbols; - do - { - symrunp->merge.value - = ebl_wstrtaboffset (symrunp->merge.handle); - symrunp->merged = 1; - } - while ((symrunp = symrunp->next_in_scn) != runp->symbols); - - /* We don't need the string table anymore. */ - ebl_wstrtabfree (mergestrtab); - } - else - { - /* Non-standard merging. */ - struct Ebl_GStrtab *mergestrtab; - struct symbol *symrunp; - Elf_Data *locsymdata = NULL; - Elf_Data *locdata = NULL; - /* If this is no string section the length of each "string" - is always one. */ - unsigned int len = (head->flags & SHF_STRINGS) ? 0 : 1; - - /* This is the generic string table functionality. Much - slower than the specialized code. */ - mergestrtab - = ebl_gstrtabinit (SCNINFO_SHDR (head->last->shdr).sh_entsize, - false); - - symrunp = runp->symbols; - file = NULL; - do - { - /* Accelarate the loop. We cache the file - information since it might very well be the case - that the previous entry was from the same - file. */ - if (symrunp->file != file) - { - /* Remember the file. */ - file = symrunp->file; - /* Symbol table data from that file. */ - locsymdata = file->symtabdata; - /* String section data. */ - locdata = elf_rawdata (file->scninfo[symrunp->scndx].scn, - NULL); - assert (locdata != NULL); - - /* While we are at it, remember the output - section. If we don't access the string data - section the section won't be in the output - file. So it is sufficient to do the work - here. */ - file->scninfo[symrunp->scndx].outscnndx = head->scnidx; - } - - /* Get the symbol information. This provides us the - offset into the string data section. */ - XElf_Sym_vardef (sym); - xelf_getsym (locsymdata, symrunp->symidx, sym); - assert (sym != NULL); - - /* Get the data from the file. Using the raw - section data here is possible since we don't - interpret the string themselves except for - looking for the wide NUL character. The NUL - character has fortunately the same representation - regardless of the byte order. */ - symrunp->merge.handle - = ebl_gstrtabadd (mergestrtab, - (char *) locdata->d_buf + sym->st_value, - len); - } - while ((symrunp = symrunp->next_in_scn) != runp->symbols); - - /* Create the final table. */ - ebl_gstrtabfinalize (mergestrtab, outdata); - - /* Compute the final offsets in the section. */ - symrunp = runp->symbols; - do - { - symrunp->merge.value - = ebl_gstrtaboffset (symrunp->merge.handle); - symrunp->merged = 1; - } - while ((symrunp = symrunp->next_in_scn) != runp->symbols); - - /* We don't need the string table anymore. */ - ebl_gstrtabfree (mergestrtab); - } - } - else - { - no_merge: - assert (head->scnidx == elf_ndxscn (scn)); - - /* It is important to start with the first list entry (and - not just any one) to add the sections in the correct - order. */ - runp = head->last->next; - offset = 0; - do - { - Elf_Data *outdata = elf_newdata (scn); - if (outdata == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot create section for output file: %s"), - elf_errmsg (-1)); - - /* Exceptional case: if we synthesize a data block SCN - is NULL and the sectio header info must be for a - SHT_NOBITS block and the size and alignment are - filled in. */ - if (likely (runp->scn != NULL)) - { - data = elf_getdata (runp->scn, NULL); - assert (data != NULL); - - /* We reuse the data buffer in the input file. */ - *outdata = *data; - - /* Given that we read the input file from disk we know there - cannot be another data part. */ - assert (elf_getdata (runp->scn, data) == NULL); - } - else - { - /* Must be a NOBITS section. */ - assert (SCNINFO_SHDR (runp->shdr).sh_type == SHT_NOBITS); - - outdata->d_buf = NULL; /* Not needed. */ - outdata->d_type = ELF_T_BYTE; - outdata->d_version = EV_CURRENT; - outdata->d_size = SCNINFO_SHDR (runp->shdr).sh_size; - outdata->d_align = SCNINFO_SHDR (runp->shdr).sh_addralign; - } - - XElf_Off align = MAX (1, outdata->d_align); - assert (powerof2 (align)); - offset = ((offset + align - 1) & ~(align - 1)); - - runp->offset = offset; - runp->outscnndx = head->scnidx; - runp->allsectionsidx = cnt; - - outdata->d_off = offset; - - offset += outdata->d_size; - } - while ((runp = runp->next) != head->last->next); - - /* If necessary add the additional line to the .comment section. */ - if (ld_state.add_ld_comment - && head->flags == 0 - && head->type == SHT_PROGBITS - && strcmp (head->name, ".comment") == 0 - && head->entsize == 0) - { - Elf_Data *outdata = elf_newdata (scn); - - if (outdata == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot create section for output file: %s"), - elf_errmsg (-1)); - - outdata->d_buf = (void *) "\0ld (Red Hat " PACKAGE ") " VERSION; - outdata->d_size = strlen ((char *) outdata->d_buf + 1) + 2; - outdata->d_off = offset; - outdata->d_type = ELF_T_BYTE; - outdata->d_align = 1; - } - /* XXX We should create a .comment section if none exists. - This requires that we early on detect that no such - section exists. This should probably be implemented - together with some merging of the section contents. - Currently identical entries are not merged. */ - } - } - - /* The table we collect the strings in. */ - strtab = ebl_strtabinit (true); - if (strtab == NULL) - error (EXIT_FAILURE, errno, gettext ("cannot create string table")); - - -#ifndef NDEBUG - /* Keep track of the use of the XINDEX. */ - need_xndx = false; -#endif - - /* We we generate a normal symbol table for an executable and the - --export-dynamic option is not given, we need an extra table - which keeps track of the symbol entry belonging to the symbol - table entry. Note that EXPORT_ALL_DYNAMIC is always set if we - generate a DSO so we do not have to test this separately. */ - ndxtosym = (struct symbol **) xcalloc (nsym_allocated, - sizeof (struct symbol)); - - /* Create the special symbol for the GOT section. */ - if (ld_state.got_symbol != NULL) - { - assert (nsym < nsym_allocated); - fillin_special_symbol (ld_state.got_symbol, ld_state.gotscnidx, - nsym++, symdata, strtab); - } - - /* Similarly for the dynamic section symbol. */ - if (ld_state.dyn_symbol != NULL) - { - assert (nsym < nsym_allocated); - fillin_special_symbol (ld_state.dyn_symbol, ld_state.dynamicscnidx, - nsym++, symdata, strtab); - } - - /* Create symbol table entries for the symbols defined in the linker - script. */ - if (ld_state.lscript_syms != NULL) - { - struct symbol *rsym = ld_state.lscript_syms; - do - { - assert (nsym < nsym_allocated); - fillin_special_symbol (rsym, SHN_ABS, nsym++, symdata, strtab); - } - while ((rsym = rsym->next) != NULL); - } - - /* Iterate over all input files to collect the symbols. */ - file = ld_state.relfiles->next; - symdata = elf_getdata (elf_getscn (ld_state.outelf, ld_state.symscnidx), - NULL); - do - { - size_t maxcnt; - Elf_Data *insymdata; - Elf_Data *inxndxdata; - - /* There must be no dynamic symbol table when creating - relocatable files. */ - assert (ld_state.file_type != relocatable_file_type - || file->dynsymtabdata == NULL); - - insymdata = file->symtabdata; - assert (insymdata != NULL); - inxndxdata = file->xndxdata; - - maxcnt = file->nsymtab; - - file->symindirect = (Elf32_Word *) xcalloc (maxcnt, sizeof (Elf32_Word)); - - /* The dynamic symbol table does not contain local symbols. So - we skip those entries. */ - for (cnt = ld_state.need_symtab ? 1 : file->nlocalsymbols; cnt < maxcnt; - ++cnt) - { - XElf_Sym_vardef (sym); - Elf32_Word xndx; - struct symbol *defp = NULL; - - xelf_getsymshndx (insymdata, inxndxdata, cnt, sym, xndx); - assert (sym != NULL); - - if (unlikely (XELF_ST_TYPE (sym->st_info) == STT_SECTION)) - { - /* Section symbols should always be local but who knows... */ - if (ld_state.need_symtab) - { - /* Determine the real section index in the source file. - Use the XINDEX section content if necessary. We don't - add this information to the dynamic symbol table. */ - if (sym->st_shndx != SHN_XINDEX) - xndx = sym->st_shndx; - - assert (file->scninfo[xndx].allsectionsidx - < ld_state.nallsections); - file->symindirect[cnt] = ld_state.allsections[file->scninfo[xndx].allsectionsidx]->scnsymidx; - /* Note that the resulting index can be zero here. There is - no guarantee that the output file will contain all the - sections the input file did. */ - } - continue; - } - - if ((ld_state.strip >= strip_all || !ld_state.need_symtab) - /* XXX Do we need these entries? */ - && XELF_ST_TYPE (sym->st_info) == STT_FILE) - continue; - -#if NATIVE_ELF != 0 - /* Copy old data. */ - XElf_Sym *sym2 = sym; - assert (nsym < nsym_allocated); - xelf_getsym (symdata, nsym, sym); - *sym = *sym2; -#endif - - if (sym->st_shndx != SHN_UNDEF - && (sym->st_shndx < SHN_LORESERVE - || sym->st_shndx == SHN_XINDEX)) - { - /* If we are creating an executable with no normal - symbol table and we do not export all symbols and - this symbol is not defined in a DSO as well, ignore - it. */ - if (!ld_state.export_all_dynamic && !ld_state.need_symtab) - { - assert (cnt >= file->nlocalsymbols); - defp = file->symref[cnt]; - assert (defp != NULL); - - if (!defp->in_dso) - /* Ignore it. */ - continue; - } - - /* Determine the real section index in the source file. Use - the XINDEX section content if necessary. */ - if (sym->st_shndx != SHN_XINDEX) - xndx = sym->st_shndx; - - sym->st_value += file->scninfo[xndx].offset; - - assert (file->scninfo[xndx].outscnndx < SHN_LORESERVE - || file->scninfo[xndx].outscnndx > SHN_HIRESERVE); - if (unlikely (file->scninfo[xndx].outscnndx > SHN_LORESERVE)) - { - /* It is not possible to have an extended section index - table for the dynamic symbol table. */ - if (!ld_state.need_symtab) - error (EXIT_FAILURE, 0, gettext ("\ -section index too large in dynamic symbol table")); - - assert (xndxdata != NULL); - sym->st_shndx = SHN_XINDEX; - xndx = file->scninfo[xndx].outscnndx; -#ifndef NDEBUG - need_xndx = true; -#endif - } - else - { - sym->st_shndx = file->scninfo[xndx].outscnndx; - xndx = 0; - } - } - else if (sym->st_shndx == SHN_COMMON || sym->st_shndx == SHN_UNDEF) - { - /* Check whether we have a (real) definition for this - symbol. If this is the case we skip this symbol - table entry. */ - assert (cnt >= file->nlocalsymbols); - defp = file->symref[cnt]; - assert (defp != NULL); - - assert (sym->st_shndx != SHN_COMMON || defp->defined); - - if ((sym->st_shndx == SHN_COMMON && !defp->common) - || (sym->st_shndx == SHN_UNDEF && defp->defined) - || defp->added) - /* Ignore this symbol table entry, there is a - "better" one or we already added it. */ - continue; - - /* Remember that we already added this symbol. */ - defp->added = 1; - - /* Adjust the section number for common symbols. */ - if (sym->st_shndx == SHN_COMMON) - { - sym->st_value = (ld_state.common_section->offset - + file->symref[cnt]->merge.value); - assert (ld_state.common_section->outscnndx < SHN_LORESERVE); - sym->st_shndx = ld_state.common_section->outscnndx; - xndx = 0; - } - } - else if (unlikely (sym->st_shndx != SHN_ABS)) - { - if (SPECIAL_SECTION_NUMBER_P (&ld_state, sym->st_shndx)) - /* XXX Add code to handle machine specific special - sections. */ - abort (); - } - - /* Add the symbol name to the string table. If the user - chooses the highest level of stripping avoid adding names - for local symbols in the string table. */ - if (sym->st_name != 0 - && (ld_state.strip < strip_everything - || XELF_ST_BIND (sym->st_info) != STB_LOCAL)) - symstrent[nsym] = ebl_strtabadd (strtab, - elf_strptr (file->elf, - file->symstridx, - sym->st_name), 0); - - /* Once we know the name this field will get the correct - offset. For now set it to zero which means no name - associated. */ - sym->st_name = 0; - - /* If we had to merge sections we have a completely new - offset for the symbol. */ - if (file->has_merge_sections && file->symref[cnt] != NULL - && file->symref[cnt]->merged) - sym->st_value = file->symref[cnt]->merge.value; - - /* Create the record in the output sections. */ - assert (nsym < nsym_allocated); - xelf_update_symshndx (symdata, xndxdata, nsym, sym, xndx, 0); - - /* Add the reference to the symbol record in case we need it. - Find the symbol if this has not happened yet. We do - not need the information for local symbols. */ - if (defp == NULL && cnt >= file->nlocalsymbols) - { - defp = file->symref[cnt]; - assert (defp != NULL); - } - - /* Store the reference to the symbol record. The - sorting code will have to keep this array in the - correct order, too. */ - ndxtosym[nsym] = defp; - - /* One more entry finished. */ - if (cnt >= file->nlocalsymbols) - { - assert (file->symref[cnt]->outsymidx == 0); - file->symref[cnt]->outsymidx = nsym; - } - file->symindirect[cnt] = nsym++; - } - } - while ((file = file->next) != ld_state.relfiles->next); - /* Make sure we didn't create the extended section index table for - nothing. */ - assert (xndxdata == NULL || need_xndx); - - - /* Create the version related sections. */ - if (ld_state.verneedscnidx != 0) - { - /* We know the number of input files and total number of - referenced versions. This allows us to allocate the memory - and then we iterate over the DSOs to get the version - information. */ - struct usedfiles *runp; - - runp = ld_state.dsofiles->next; - do - allocate_version_names (runp, dynstrtab); - while ((runp = runp->next) != ld_state.dsofiles->next); - - if (ld_state.needed != NULL) - { - runp = ld_state.needed->next; - do - allocate_version_names (runp, dynstrtab); - while ((runp = runp->next) != ld_state.needed->next); - } - } - - /* At this point we should hide symbols and so on. */ - if (ld_state.default_bind_local || ld_state.version_str_tab.filled > 0) - /* XXX Add one more test when handling of wildcard symbol names - is supported. */ - { - /* Check all non-local symbols whether they are on the export list. */ - bool any_reduced = false; - - for (cnt = 1; cnt < nsym; ++cnt) - { - XElf_Sym_vardef (sym); - - /* Note that we don't have to use 'xelf_getsymshndx' since we - only need the binding and the symbol name. */ - xelf_getsym (symdata, cnt, sym); - assert (sym != NULL); - - if (reduce_symbol_p (sym, symstrent[cnt])) - { - sym->st_info = XELF_ST_INFO (STB_LOCAL, - XELF_ST_TYPE (sym->st_info)); - (void) xelf_update_sym (symdata, cnt, sym); - - /* Show that we don't need this string anymore. */ - if (ld_state.strip == strip_everything) - { - symstrent[cnt] = NULL; - any_reduced = true; - } - } - } - - if (unlikely (any_reduced)) - { - /* Since we will not write names of local symbols in the - output file and we have reduced the binding of some - symbols the string table previously constructed contains - too many string. Correct it. */ - struct Ebl_Strtab *newp = ebl_strtabinit (true); - - for (cnt = 1; cnt < nsym; ++cnt) - if (symstrent[cnt] != NULL) - symstrent[cnt] = ebl_strtabadd (newp, - ebl_string (symstrent[cnt]), 0); - - ebl_strtabfree (strtab); - strtab = newp; - } - } - - /* Add the references to DSOs. We can add these entries this late - (after sorting out versioning) because references to DSOs are not - effected. */ - if (ld_state.from_dso != NULL) - { - struct symbol *runp; - size_t plt_base = nsym + ld_state.nfrom_dso - ld_state.nplt; - size_t plt_idx = 0; - size_t obj_idx = 0; - - assert (ld_state.nfrom_dso >= ld_state.nplt); - runp = ld_state.from_dso; - do - { - // XXX What about functions which are only referenced via - // pointers and not PLT entries? Can we distinguish such uses? - size_t idx; - if (runp->type == STT_FUNC) - { - /* Store the PLT entry number. */ - runp->merge.value = plt_idx + 1; - idx = plt_base + plt_idx++; - } - else - idx = nsym + obj_idx++; - - XElf_Sym_vardef (sym); - xelf_getsym_ptr (symdata, idx, sym); - - sym->st_value = 0; - sym->st_size = runp->size; - sym->st_info = XELF_ST_INFO (runp->weak ? STB_WEAK : STB_GLOBAL, - runp->type); - sym->st_other = STV_DEFAULT; - sym->st_shndx = SHN_UNDEF; - - /* Create the record in the output sections. */ - xelf_update_symshndx (symdata, xndxdata, idx, sym, 0, 0); - - const char *name = runp->name; - size_t namelen = 0; - - if (runp->file->verdefdata != NULL) - { - // XXX Is it useful to add the versym value to struct symbol? - XElf_Versym versym; - - (void) xelf_getversym_copy (runp->file->versymdata, runp->symidx, - versym); - - /* One can only link with the default version. */ - assert ((versym & 0x8000) == 0); - - const char *versname - = ebl_string (runp->file->verdefent[versym]); - - size_t versname_len = strlen (versname) + 1; - namelen = strlen (name) + versname_len + 2; - char *newp = (char *) obstack_alloc (&ld_state.smem, namelen); - memcpy (stpcpy (stpcpy (newp, name), "@@"), - versname, versname_len); - name = newp; - } - - symstrent[idx] = ebl_strtabadd (strtab, name, namelen); - - /* Record the initial index in the symbol table. */ - runp->outsymidx = idx; - - /* Remember the symbol record this ELF symbol came from. */ - ndxtosym[idx] = runp; - } - while ((runp = runp->next) != ld_state.from_dso); - - assert (nsym + obj_idx == plt_base); - assert (plt_idx == ld_state.nplt); - nsym = plt_base + plt_idx; - } - - /* Now we know how many symbols will be in the output file. Adjust - the count in the section data. */ - symdata->d_size = xelf_fsize (ld_state.outelf, ELF_T_SYM, nsym); - if (unlikely (xndxdata != NULL)) - xndxdata->d_size = xelf_fsize (ld_state.outelf, ELF_T_WORD, nsym); - - /* Create the symbol string table section. */ - strscn = elf_newscn (ld_state.outelf); - ld_state.strscnidx = elf_ndxscn (strscn); - data = elf_newdata (strscn); - xelf_getshdr (strscn, shdr); - if (data == NULL || shdr == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot create section for output file: %s"), - elf_errmsg (-1)); - - /* Create a compact string table, allocate the memory for it, and - fill in the section data information. */ - ebl_strtabfinalize (strtab, data); - - shdr->sh_type = SHT_STRTAB; - assert (shdr->sh_entsize == 0); - - if (unlikely (xelf_update_shdr (strscn, shdr) == 0)) - error (EXIT_FAILURE, 0, - gettext ("cannot create section for output file: %s"), - elf_errmsg (-1)); - - /* Fill in the offsets of the symbol names. */ - for (cnt = 1; cnt < nsym; ++cnt) - if (symstrent[cnt] != NULL) - { - XElf_Sym_vardef (sym); - - /* Note that we don't have to use 'xelf_getsymshndx' since we don't - modify the section index. */ - xelf_getsym (symdata, cnt, sym); - /* This better worked, we did it before. */ - assert (sym != NULL); - sym->st_name = ebl_strtaboffset (symstrent[cnt]); - (void) xelf_update_sym (symdata, cnt, sym); - } - - /* Since we are going to reorder the symbol table but still have to - be able to find the new position based on the old one (since the - latter is stored in 'symindirect' information of the input file - data structure) we have to create yet another indirection - table. */ - ld_state.dblindirect = dblindirect - = (Elf32_Word *) xmalloc (nsym * sizeof (Elf32_Word)); - - /* Sort the symbol table so that the local symbols come first. */ - /* XXX We don't use stable sorting here. It seems not necessary and - would be more expensive. If it turns out to be necessary this can - be fixed easily. */ - nsym_local = 1; - cnt = nsym - 1; - while (nsym_local < cnt) - { - XElf_Sym_vardef (locsym); - Elf32_Word locxndx; - XElf_Sym_vardef (globsym); - Elf32_Word globxndx; - - do - { - xelf_getsymshndx (symdata, xndxdata, nsym_local, locsym, locxndx); - /* This better works. */ - assert (locsym != NULL); - - if (XELF_ST_BIND (locsym->st_info) != STB_LOCAL - && (ld_state.need_symtab || ld_state.export_all_dynamic)) - { - do - { - xelf_getsymshndx (symdata, xndxdata, cnt, globsym, globxndx); - /* This better works. */ - assert (globsym != NULL); - - if (unlikely (XELF_ST_BIND (globsym->st_info) == STB_LOCAL)) - { - /* We swap the two entries. */ -#if NATIVE_ELF != 0 - /* Since we directly modify the data in the ELF - data structure we have to make a copy of one - of the entries. */ - XElf_Sym locsym_copy = *locsym; - locsym = &locsym_copy; -#endif - xelf_update_symshndx (symdata, xndxdata, nsym_local, - globsym, globxndx, 1); - xelf_update_symshndx (symdata, xndxdata, cnt, - locsym, locxndx, 1); - - /* Also swap the cross references. */ - dblindirect[nsym_local] = cnt; - dblindirect[cnt] = nsym_local; - - /* And the entries for the symbol names. */ - struct Ebl_Strent *strtmp = symstrent[nsym_local]; - symstrent[nsym_local] = symstrent[cnt]; - symstrent[cnt] = strtmp; - - /* And the mapping from symbol table entry to - struct symbol record. */ - struct symbol *symtmp = ndxtosym[nsym_local]; - ndxtosym[nsym_local] = ndxtosym[cnt]; - ndxtosym[cnt] = symtmp; - - /* Go to the next entry. */ - ++nsym_local; - --cnt; - - break; - } - - dblindirect[cnt] = cnt; - } - while (nsym_local < --cnt); - - break; - } - - dblindirect[nsym_local] = nsym_local; - } - while (++nsym_local < cnt); - } - - /* The symbol 'nsym_local' is currently pointing to might be local, - too. Check and increment the variable if this is the case. */ - if (likely (nsym_local < nsym)) - { - XElf_Sym_vardef (locsym); - - /* This entry isn't moved. */ - dblindirect[nsym_local] = nsym_local; - - /* Note that it is OK to not use 'xelf_getsymshndx' here. */ - xelf_getsym (symdata, nsym_local, locsym); - /* This better works. */ - assert (locsym != NULL); - - if (XELF_ST_BIND (locsym->st_info) == STB_LOCAL) - ++nsym_local; - } - - - /* We need the versym array right away to keep track of the version - symbols. */ - if (ld_state.versymscnidx != 0) - { - /* We allocate more memory than we need since the array is morroring - the dynamic symbol table and not the normal symbol table. I.e., - no local symbols are present. */ - versymscn = elf_getscn (ld_state.outelf, ld_state.versymscnidx); - versymdata = elf_newdata (versymscn); - if (versymdata == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot create versioning section: %s"), - elf_errmsg (-1)); - - versymdata->d_size = xelf_fsize (ld_state.outelf, ELF_T_HALF, - nsym - nsym_local + 1); - versymdata->d_buf = xcalloc (1, versymdata->d_size); - versymdata->d_align = xelf_fsize (ld_state.outelf, ELF_T_HALF, 1); - versymdata->d_off = 0; - versymdata->d_type = ELF_T_HALF; - } - - - /* If we have to construct the dynamic symbol table we must not include - the local symbols. If the normal symbol has to be emitted as well - we haven't done anything else yet and we can construct it from - scratch now. */ - if (unlikely (!ld_state.need_symtab)) - { - /* Note that the following code works even if there is no entry - to remove since the zeroth entry is always local. */ - size_t reduce = xelf_fsize (ld_state.outelf, ELF_T_SYM, nsym_local - 1); - - XElf_Sym_vardef (nullsym); - xelf_getsym_ptr (symdata, nsym_local - 1, nullsym); - - /* Note that we don't have to use 'xelf_update_symshndx' since - this is the dynamic symbol table we write. */ - (void) xelf_update_sym (symdata, nsym_local - 1, - memset (nullsym, '\0', sizeof (*nullsym))); - - /* Update the buffer pointer and size in the output data. */ - symdata->d_buf = (char *) symdata->d_buf + reduce; - symdata->d_size -= reduce; - - /* Add the version symbol information. */ - if (versymdata != NULL) - { - nsym_dyn = 1; - for (cnt = nsym_local; cnt < nsym; ++cnt, ++nsym_dyn) - { - struct symbol *symp = ndxtosym[cnt]; - - if (symp->file->versymdata != NULL) - { - GElf_Versym versym; - - gelf_getversym (symp->file->versymdata, symp->symidx, - &versym); - - (void) gelf_update_versym (versymdata, nsym_dyn, - &symp->file->verdefused[versym]); - } - } - } - - /* Since we only created the dynamic symbol table the number of - dynamic symbols is the total number of symbols. */ - nsym_dyn = nsym - nsym_local + 1; - - /* XXX TBI. Create whatever data structure is missing. */ - abort (); - } - else if (ld_state.need_dynsym) - { - /* Create the dynamic symbol table section data along with the - string table. We look at all non-local symbols we found for - the normal symbol table and add those. */ - dynsymscn = elf_getscn (ld_state.outelf, ld_state.dynsymscnidx); - dynsymdata = elf_newdata (dynsymscn); - - dynstrdata = elf_newdata (elf_getscn (ld_state.outelf, - ld_state.dynstrscnidx)); - if (dynsymdata == NULL || dynstrdata == NULL) - error (EXIT_FAILURE, 0, gettext ("\ -cannot create dynamic symbol table for output file: %s"), - elf_errmsg (-1)); - - nsym_dyn_allocated = nsym - nsym_local + 1; - dynsymdata->d_size = xelf_fsize (ld_state.outelf, ELF_T_SYM, - nsym_dyn_allocated); - dynsymdata->d_buf = memset (xmalloc (dynsymdata->d_size), '\0', - xelf_fsize (ld_state.outelf, ELF_T_SYM, 1)); - dynsymdata->d_type = ELF_T_SYM; - dynsymdata->d_off = 0; - dynsymdata->d_align = xelf_fsize (ld_state.outelf, ELF_T_ADDR, 1); - - /* We need one more array which contains the hash codes of the - symbol names. */ - hashcodes = (Elf32_Word *) xcalloc (nsym_dyn_allocated, - sizeof (Elf32_Word)); - - /* We have and empty entry at the beginning. */ - nsym_dyn = 1; - - /* We don't mix PLT symbols and others. */ - size_t plt_idx = 1; - size_t obj_idx = 1 + ld_state.nplt; - - /* Populate the table. */ - for (cnt = nsym_local; cnt < nsym; ++cnt) - { - XElf_Sym_vardef (sym); - - xelf_getsym (symdata, cnt, sym); - assert (sym != NULL); - - if (sym->st_shndx == SHN_XINDEX) - error (EXIT_FAILURE, 0, gettext ("\ -section index too large in dynamic symbol table")); - - /* We do not add the symbol to the dynamic symbol table if - - - the symbol is for a file - - it is not externally visible (internal, hidden) - - if export_all_dynamic is not set and is only defined in - the executable (i.e., it is defined, but not (also) in - in DSO) - - Set symstrent[cnt] to NULL in case an entry is ignored. */ - if (XELF_ST_TYPE (sym->st_info) == STT_FILE - || XELF_ST_VISIBILITY (sym->st_other) == STV_INTERNAL - || XELF_ST_VISIBILITY (sym->st_other) == STV_HIDDEN - || (!ndxtosym[cnt]->in_dso && ndxtosym[cnt]->defined)) - { - symstrent[cnt] = NULL; - continue; - } - - size_t idx; - if (ndxtosym[cnt]->in_dso && ndxtosym[cnt]->type == STT_FUNC) - { - idx = plt_idx++; - assert (idx < 1 + ld_state.nplt); - } - else - { - idx = obj_idx++; - assert (idx < nsym_dyn_allocated); - } - - /* Add the version information. */ - if (versymdata != NULL) - { - struct symbol *symp = ndxtosym[cnt]; - - if (symp->file->verdefdata != NULL) - { - GElf_Versym versym; - - gelf_getversym (symp->file->versymdata, symp->symidx, - &versym); - - (void) gelf_update_versym (versymdata, idx, - &symp->file->verdefused[versym]); - } - else - { - /* XXX Add support for version definitions. */ - GElf_Versym global = VER_NDX_GLOBAL; - (void) gelf_update_versym (versymdata, idx, &global); - } - } - - /* Store the index of the symbol in the dynamic symbol table. */ - ndxtosym[cnt]->outdynsymidx = idx; - - /* Create a new string table entry. */ - const char *str = ndxtosym[cnt]->name; - symstrent[cnt] = ebl_strtabadd (dynstrtab, str, 0); - hashcodes[idx] = elf_hash (str); - ++nsym_dyn; - } - assert (nsym_dyn == obj_idx); - assert (ld_state.nplt + 1 == plt_idx); - - /* Update the information about the symbol section. */ - if (versymdata != NULL) - { - /* Correct the size now that we know how many entries the - dynamic symbol table has. */ - versymdata->d_size = xelf_fsize (ld_state.outelf, ELF_T_HALF, - nsym_dyn); - - /* Add the reference to the symbol table. */ - xelf_getshdr (versymscn, shdr); - assert (shdr != NULL); - - shdr->sh_link = ld_state.dynsymscnidx; - - (void) xelf_update_shdr (versymscn, shdr); - } - } - - if (ld_state.file_type != relocatable_file_type) - { - size_t nbucket; - Elf32_Word *bucket; - Elf32_Word *chain; - size_t nchain; - Elf_Scn *hashscn; - Elf_Data *hashdata; - - /* Finalize the dynamic string table. */ - ebl_strtabfinalize (dynstrtab, dynstrdata); - - /* Determine the "optimal" bucket size. */ - nbucket = optimal_bucket_size (hashcodes, nsym_dyn, ld_state.optlevel); - - /* Create the .hash section data structures. */ - assert (ld_state.hashscnidx != 0); - hashscn = elf_getscn (ld_state.outelf, ld_state.hashscnidx); - xelf_getshdr (hashscn, shdr); - hashdata = elf_newdata (hashscn); - if (shdr == NULL || hashdata == NULL) - error (EXIT_FAILURE, 0, gettext ("\ -cannot create hash table section for output file: %s"), - elf_errmsg (-1)); - - shdr->sh_link = ld_state.dynsymscnidx; - (void) xelf_update_shdr (hashscn, shdr); - - hashdata->d_size = (2 + nsym_dyn + nbucket) * sizeof (Elf32_Word); - hashdata->d_buf = xcalloc (1, hashdata->d_size); - hashdata->d_align = sizeof (Elf32_Word); - hashdata->d_type = ELF_T_WORD; - hashdata->d_off = 0; - - ((Elf32_Word *) hashdata->d_buf)[0] = nbucket; - ((Elf32_Word *) hashdata->d_buf)[1] = nsym_dyn; - bucket = &((Elf32_Word *) hashdata->d_buf)[2]; - chain = &((Elf32_Word *) hashdata->d_buf)[2 + nbucket]; - - /* Haven't yet filled in any chain value. */ - nchain = 0; - - /* Now put the names in. */ - for (cnt = nsym_local; cnt < nsym; ++cnt) - if (symstrent[cnt] != NULL) - { - XElf_Sym_vardef (sym); - size_t hashidx; - size_t dynidx = ndxtosym[cnt]->outdynsymidx; - -#if NATIVE_ELF != 0 - XElf_Sym *osym; - memcpy (xelf_getsym (dynsymdata, dynidx, sym), - xelf_getsym (symdata, cnt, osym), - sizeof (XElf_Sym)); -#else - xelf_getsym (symdata, cnt, sym); - assert (sym != NULL); -#endif - - sym->st_name = ebl_strtaboffset (symstrent[cnt]); - - (void) xelf_update_sym (dynsymdata, dynidx, sym); - - /* Add to the hash table. */ - hashidx = hashcodes[dynidx] % nbucket; - if (bucket[hashidx] == 0) - bucket[hashidx] = dynidx; - else - { - hashidx = bucket[hashidx]; - while (chain[hashidx] != 0) - hashidx = chain[hashidx]; - - chain[hashidx] = dynidx; - } - } - - free (hashcodes); - - /* We don't need the map from the symbol table index to the symbol - structure anymore. */ - free (ndxtosym); - - /* Create the required version section. */ - if (ld_state.verneedscnidx != 0) - { - Elf_Scn *verneedscn; - Elf_Data *verneeddata; - struct usedfiles *runp; - size_t verneed_size = xelf_fsize (ld_state.outelf, ELF_T_VNEED, 1); - size_t vernaux_size = xelf_fsize (ld_state.outelf, ELF_T_VNAUX, 1); - size_t offset; - int ntotal; - - verneedscn = elf_getscn (ld_state.outelf, ld_state.verneedscnidx); - xelf_getshdr (verneedscn, shdr); - verneeddata = elf_newdata (verneedscn); - if (shdr == NULL || verneeddata == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot create versioning data: %s"), - elf_errmsg (-1)); - - verneeddata->d_size = (ld_state.nverdeffile * verneed_size - + ld_state.nverdefused * vernaux_size); - verneeddata->d_buf = xmalloc (verneeddata->d_size); - verneeddata->d_type = ELF_T_VNEED; - verneeddata->d_align = xelf_fsize (ld_state.outelf, ELF_T_WORD, 1); - verneeddata->d_off = 0; - - offset = 0; - ntotal = ld_state.nverdeffile; - runp = ld_state.dsofiles->next; - do - { - offset = create_verneed_data (offset, verneeddata, runp, - &ntotal); - runp = runp->next; - } - while (ntotal > 0 && runp != ld_state.dsofiles->next); - - if (ntotal > 0) - { - runp = ld_state.needed->next; - do - { - offset = create_verneed_data (offset, verneeddata, runp, - &ntotal); - runp = runp->next; - } - while (ntotal > 0 && runp != ld_state.needed->next); - } - - assert (offset == verneeddata->d_size); - - /* Add the needed information to the section header. */ - shdr->sh_link = ld_state.dynstrscnidx; - shdr->sh_info = ld_state.nverdeffile; - (void) xelf_update_shdr (verneedscn, shdr); - } - - /* Adjust the section size. */ - dynsymdata->d_size = xelf_fsize (ld_state.outelf, ELF_T_SYM, nsym_dyn); - if (versymdata != NULL) - versymdata->d_size = xelf_fsize (ld_state.outelf, ELF_T_HALF, - nsym_dyn); - - /* Add the remaining information to the section header. */ - xelf_getshdr (dynsymscn, shdr); - /* There is always exactly one local symbol. */ - shdr->sh_info = 1; - /* Reference the string table. */ - shdr->sh_link = ld_state.dynstrscnidx; - /* Write the updated info back. */ - (void) xelf_update_shdr (dynsymscn, shdr); - } - else - /* We don't need the map from the symbol table index to the symbol - structure anymore. */ - free (ndxtosym); - - /* We don't need the string table anymore. */ - free (symstrent); - - /* Remember the total number of symbols in the dynamic symbol table. */ - ld_state.ndynsym = nsym_dyn; - - /* Fill in the section header information. */ - symscn = elf_getscn (ld_state.outelf, ld_state.symscnidx); - xelf_getshdr (symscn, shdr); - if (shdr == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot create symbol table for output file: %s"), - elf_errmsg (-1)); - - shdr->sh_type = SHT_SYMTAB; - shdr->sh_link = ld_state.strscnidx; - shdr->sh_info = nsym_local; - shdr->sh_entsize = xelf_fsize (ld_state.outelf, ELF_T_SYM, 1); - - (void) xelf_update_shdr (symscn, shdr); - - - /* Add names for the generated sections. */ - if (ld_state.symscnidx != 0) - symtab_ent = ebl_strtabadd (ld_state.shstrtab, ".symtab", 8); - if (ld_state.xndxscnidx != 0) - xndx_ent = ebl_strtabadd (ld_state.shstrtab, ".symtab_shndx", 14); - if (ld_state.strscnidx != 0) - strtab_ent = ebl_strtabadd (ld_state.shstrtab, ".strtab", 8); - /* At this point we would have to test for failures in the - allocation. But we skip this. First, the problem will be caught - latter when doing more allocations for the section header table. - Even if this would not be the case all that would happen is that - the section names are empty. The binary would still be usable if - it is an executable or a DSO. Not adding the test here saves - quite a bit of code. */ - - - /* Finally create the section for the section header string table. */ - shstrtab_scn = elf_newscn (ld_state.outelf); - shstrtab_ndx = elf_ndxscn (shstrtab_scn); - if (unlikely (shstrtab_ndx == SHN_UNDEF)) - error (EXIT_FAILURE, 0, - gettext ("cannot create section header string section: %s"), - elf_errmsg (-1)); - - /* Add the name of the section to the string table. */ - shstrtab_ent = ebl_strtabadd (ld_state.shstrtab, ".shstrtab", 10); - if (unlikely (shstrtab_ent == NULL)) - error (EXIT_FAILURE, errno, - gettext ("cannot create section header string section")); - - /* Finalize the section header string table. */ - data = elf_newdata (shstrtab_scn); - if (data == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot create section header string section: %s"), - elf_errmsg (-1)); - ebl_strtabfinalize (ld_state.shstrtab, data); - - /* Now we know the string offsets for all section names. */ - for (cnt = 0; cnt < ld_state.nallsections; ++cnt) - if (ld_state.allsections[cnt]->scnidx != 0) - { - Elf_Scn *scn; - - scn = elf_getscn (ld_state.outelf, ld_state.allsections[cnt]->scnidx); - - xelf_getshdr (scn, shdr); - assert (shdr != NULL); - - shdr->sh_name = ebl_strtaboffset (ld_state.allsections[cnt]->nameent); - - if (xelf_update_shdr (scn, shdr) == 0) - assert (0); - } - - /* Add the names for the generated sections to the respective - section headers. */ - if (symtab_ent != NULL) - { - Elf_Scn *scn = elf_getscn (ld_state.outelf, ld_state.symscnidx); - - xelf_getshdr (scn, shdr); - /* This cannot fail, we already accessed the header before. */ - assert (shdr != NULL); - - shdr->sh_name = ebl_strtaboffset (symtab_ent); - - (void) xelf_update_shdr (scn, shdr); - } - if (xndx_ent != NULL) - { - Elf_Scn *scn = elf_getscn (ld_state.outelf, ld_state.xndxscnidx); - - xelf_getshdr (scn, shdr); - /* This cannot fail, we already accessed the header before. */ - assert (shdr != NULL); - - shdr->sh_name = ebl_strtaboffset (xndx_ent); - - (void) xelf_update_shdr (scn, shdr); - } - if (strtab_ent != NULL) - { - Elf_Scn *scn = elf_getscn (ld_state.outelf, ld_state.strscnidx); - - xelf_getshdr (scn, shdr); - /* This cannot fail, we already accessed the header before. */ - assert (shdr != NULL); - - shdr->sh_name = ebl_strtaboffset (strtab_ent); - - (void) xelf_update_shdr (scn, shdr); - } - - /* And the section header table section itself. */ - xelf_getshdr (shstrtab_scn, shdr); - if (shdr == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot create section header string section: %s"), - elf_errmsg (-1)); - - shdr->sh_name = ebl_strtaboffset (shstrtab_ent); - shdr->sh_type = SHT_STRTAB; - - if (unlikely (xelf_update_shdr (shstrtab_scn, shdr) == 0)) - error (EXIT_FAILURE, 0, - gettext ("cannot create section header string section: %s"), - elf_errmsg (-1)); - - - /* Add the correct section header info to the section group sections. */ - groups = ld_state.groups; - while (groups != NULL) - { - Elf_Scn *scn; - struct scngroup *oldp; - Elf32_Word si; - - scn = elf_getscn (ld_state.outelf, groups->outscnidx); - xelf_getshdr (scn, shdr); - assert (shdr != NULL); - - shdr->sh_name = ebl_strtaboffset (groups->nameent); - shdr->sh_type = SHT_GROUP; - shdr->sh_flags = 0; - shdr->sh_link = ld_state.symscnidx; - shdr->sh_entsize = sizeof (Elf32_Word); - - /* Determine the index for the signature symbol. */ - si = groups->symbol->file->symindirect[groups->symbol->symidx]; - if (si == 0) - { - assert (groups->symbol->file->symref[groups->symbol->symidx] - != NULL); - si = groups->symbol->file->symref[groups->symbol->symidx]->outsymidx; - assert (si != 0); - } - shdr->sh_info = ld_state.dblindirect[si]; - - (void) xelf_update_shdr (scn, shdr); - - oldp = groups; - groups = groups->next; - free (oldp); - } - - - if (ld_state.file_type != relocatable_file_type) - { - size_t nphdr; - XElf_Addr addr; - struct output_segment *segment; - Elf_Scn *scn; - Elf32_Word nsec; - XElf_Phdr_vardef (phdr); - - /* Every executable needs a program header. The number of entries - varies. One exists for each segment. Each SHT_NOTE section gets - one, too. For dynamically linked executables we have to create - one for the program header, the interpreter, and the dynamic - section. First count the number of segments. - - XXX Determine whether the segment is non-empty. */ - nphdr = 0; - segment = ld_state.output_segments; - while (segment != NULL) - { - ++nphdr; - segment = segment->next; - } - - /* Add the number of SHT_NOTE sections. We counted them earlier. */ - nphdr += ld_state.nnotesections; - - /* If we create a DSO or the file is linked against DSOs we have three - more entries: INTERP, PHDR, DYNAMIC. */ - if (dynamically_linked_p ()) - nphdr += 3; - - /* Create the program header structure. */ - if (xelf_newphdr (ld_state.outelf, nphdr) == 0) - error (EXIT_FAILURE, 0, gettext ("cannot create program header: %s"), - elf_errmsg (-1)); - - - /* Determine the section sizes and offsets. We have to do this - to be able to determine the memory layout (which normally - differs from the file layout). */ - if (elf_update (ld_state.outelf, ELF_C_NULL) == -1) - error (EXIT_FAILURE, 0, gettext ("while determining file layout: %s"), - elf_errmsg (-1)); - - - /* Now determine the memory addresses of all the sections and - segments. */ - nsec = 0; - scn = elf_getscn (ld_state.outelf, ld_state.allsections[nsec]->scnidx); - xelf_getshdr (scn, shdr); - assert (shdr != NULL); - - /* The address we start with is the offset of the first (not - zeroth) section. */ - addr = shdr->sh_offset; - - /* The index of the first loadable segment. */ - nphdr = 1 + (dynamically_linked_p () == true) * 2; - - segment = ld_state.output_segments; - while (segment != NULL) - { - struct output_rule *orule; - bool first_section = true; - XElf_Off nobits_size = 0; - XElf_Off memsize = 0; - - /* the minimum alignment is a page size. */ - segment->align = ld_state.pagesize; - - for (orule = segment->output_rules; orule != NULL; - orule = orule->next) - if (orule->tag == output_section) - { - XElf_Off oldoff; - - /* See whether this output rule corresponds to the next - section. Yes, this is a pointer comparison. */ - if (ld_state.allsections[nsec]->name - != orule->val.section.name) - /* No, ignore this output rule. */ - continue; - - /* We assign addresses only in segments which are actually - loaded. */ - if (segment->mode != 0) - { - /* Adjust the offset of the input sections. */ - struct scninfo *isect; - struct scninfo *first; - - isect = first = ld_state.allsections[nsec]->last; - if (isect != NULL) - do - isect->offset += addr; - while ((isect = isect->next) != first); - - /* Set the address of current section. */ - shdr->sh_addr = addr; - - /* Write the result back. */ - (void) xelf_update_shdr (scn, shdr); - - /* Remember the address. */ - ld_state.allsections[nsec]->addr = addr; - } - - if (first_section) - { - /* The first segment starts at offset zero. */ - if (segment == ld_state.output_segments) - { - segment->offset = 0; - segment->addr = addr - shdr->sh_offset; - } - else - { - segment->offset = shdr->sh_offset; - segment->addr = addr; - } - - /* Determine the maximum alignment requirement. */ - segment->align = MAX (segment->align, shdr->sh_addralign); - - first_section = false; - } - - memsize = shdr->sh_offset - segment->offset + shdr->sh_size; - if (nobits_size != 0 && shdr->sh_type != SHT_NOTE) - error (EXIT_FAILURE, 0, gettext ("\ -internal error: nobits section follows nobits section")); - if (shdr->sh_type == SHT_NOBITS) - nobits_size += shdr->sh_size; - - /* Determine the new address which is computed using - the difference of the offsets on the sections. Note - that this assumes that the sections following each - other in the section header table are also - consecutive in the file. This is true here because - libelf constructs files this way. */ - oldoff = shdr->sh_offset; - - if (++nsec >= ld_state.nallsections) - break; - - scn = elf_getscn (ld_state.outelf, - ld_state.allsections[nsec]->scnidx); - xelf_getshdr (scn, shdr); - assert (shdr != NULL); - - /* This is the new address resulting from the offsets - in the file. */ - assert (oldoff <= shdr->sh_offset); - addr += shdr->sh_offset - oldoff; - } - else - { - assert (orule->tag == output_assignment); - - if (strcmp (orule->val.assignment->variable, ".") == 0) - /* This is a change of the address. */ - addr = eval_expression (orule->val.assignment->expression, - addr); - else if (orule->val.assignment->sym != NULL) - { - /* This symbol is used. Update the symbol table - entry. */ - XElf_Sym_vardef (sym); - size_t idx; - - /* Note that we do not have to use - xelf_getsymshndx since we only update the - symbol address, not the section - information. */ - idx = dblindirect[orule->val.assignment->sym->outsymidx]; - xelf_getsym (symdata, idx, sym); - sym->st_value = addr; - (void) xelf_update_sym (symdata, idx, sym); - - idx = orule->val.assignment->sym->outdynsymidx; - if (idx != 0) - { - assert (dynsymdata != NULL); - xelf_getsym (dynsymdata, idx, sym); - sym->st_value = addr; - (void) xelf_update_sym (dynsymdata, idx, sym); - } - } - } - - /* Store the segment parameter for loadable segments. */ - if (segment->mode != 0) - { - xelf_getphdr_ptr (ld_state.outelf, nphdr, phdr); - - phdr->p_type = PT_LOAD; - phdr->p_offset = segment->offset; - phdr->p_vaddr = segment->addr; - phdr->p_paddr = phdr->p_vaddr; - phdr->p_filesz = memsize - nobits_size; - phdr->p_memsz = memsize; - phdr->p_flags = segment->mode; - phdr->p_align = segment->align; - - (void) xelf_update_phdr (ld_state.outelf, nphdr, phdr); - ++nphdr; - } - - segment = segment->next; - } - - /* Create the other program header entries. */ - xelf_getehdr (ld_state.outelf, ehdr); - assert (ehdr != NULL); - - xelf_getphdr_ptr (ld_state.outelf, 1, phdr); - phdr->p_type = PT_PHDR; - phdr->p_offset = ehdr->e_phoff; - phdr->p_vaddr = ld_state.output_segments->addr + phdr->p_offset; - phdr->p_paddr = phdr->p_vaddr; - phdr->p_filesz = ehdr->e_phnum * ehdr->e_phentsize; - phdr->p_memsz = phdr->p_filesz; - phdr->p_flags = 0; /* No need to set PF_R or so. */ - phdr->p_align = xelf_fsize (ld_state.outelf, ELF_T_ADDR, 1); - (void) xelf_update_phdr (ld_state.outelf, 0, phdr); - - - /* Adjust the addresses in the addresses of the symbol according - to the load addresses of the sections. */ - if (ld_state.need_symtab) - for (cnt = 1; cnt < nsym; ++cnt) - { - XElf_Sym_vardef (sym); - Elf32_Word shndx; - - xelf_getsymshndx (symdata, xndxdata, cnt, sym, shndx); - assert (sym != NULL); - - if (sym->st_shndx != SHN_XINDEX) - shndx = sym->st_shndx; - - if ((shndx > SHN_UNDEF && shndx < SHN_LORESERVE) - || shndx > SHN_HIRESERVE) - { - /* Note we subtract 1 from the section index since ALLSECTIONS - does not store the dummy section with offset zero. */ - sym->st_value += ld_state.allsections[shndx - 1]->addr; - - /* We don't have to use 'xelf_update_symshndx' since the - section number doesn't change. */ - (void) xelf_update_sym (symdata, cnt, sym); - } - } - - if (ld_state.need_dynsym) - for (cnt = 1; cnt < nsym_dyn; ++cnt) - { - XElf_Sym_vardef (sym); - - xelf_getsym (dynsymdata, cnt, sym); - assert (sym != NULL); - - if (sym->st_shndx > SHN_UNDEF && sym->st_shndx < SHN_LORESERVE) - { - /* Note we subtract 1 from the section index since ALLSECTIONS - does not store the dummy section with offset zero. */ - sym->st_value += ld_state.allsections[sym->st_shndx - 1]->addr; - - /* We don't have to use 'xelf_update_symshndx' since the - section number doesn't change. */ - (void) xelf_update_sym (dynsymdata, cnt, sym); - } - } - - - /* Now is a good time to determine the values of all the symbols - we encountered. */ - // XXX This loop is very inefficient. The hash tab iterator also - // returns all symbols in DSOs. - struct symbol *se; - void *p = NULL; - while ((se = ld_symbol_tab_iterate (&ld_state.symbol_tab, &p)) != NULL) - if (! se->in_dso) - { - XElf_Sym_vardef (sym); - - addr = 0; - - if (se->outdynsymidx != 0) - { - xelf_getsym (dynsymdata, se->outdynsymidx, sym); - assert (sym != NULL); - addr = sym->st_value; - } - else if (se->outsymidx != 0) - { - assert (dblindirect[se->outsymidx] != 0); - xelf_getsym (symdata, dblindirect[se->outsymidx], sym); - assert (sym != NULL); - addr = sym->st_value; - } - else - abort (); - - se->merge.value = addr; - } - - /* Complete the header of the .rel.dyn/.rela.dyn section. Point - to the symbol table. The sh_info field is left zero since - there is no specific section the contained relocations are - for. */ - if (ld_state.reldynscnidx != 0) - { - assert (ld_state.dynsymscnidx != 0); - scn = elf_getscn (ld_state.outelf, ld_state.reldynscnidx); - xelf_getshdr (scn, shdr); - assert (shdr != NULL); - - shdr->sh_link = ld_state.dynsymscnidx; - - (void) xelf_update_shdr (scn, shdr); - } - - /* Fill in the dynamic segment/section. */ - if (dynamically_linked_p ()) - { - Elf_Scn *outscn; - - assert (ld_state.interpscnidx != 0); - xelf_getshdr (elf_getscn (ld_state.outelf, ld_state.interpscnidx), - shdr); - assert (shdr != NULL); - - /* The interpreter string. */ - // XXX Do we need to support files (DSOs) without interpreters? - xelf_getphdr_ptr (ld_state.outelf, 1, phdr); - phdr->p_type = PT_INTERP; - phdr->p_offset = shdr->sh_offset; - phdr->p_vaddr = shdr->sh_addr; - phdr->p_paddr = phdr->p_vaddr; - phdr->p_filesz = shdr->sh_size; - phdr->p_memsz = phdr->p_filesz; - phdr->p_flags = 0; /* No need to set PF_R or so. */ - phdr->p_align = 1; /* It's a string. */ - - (void) xelf_update_phdr (ld_state.outelf, 1, phdr); - - /* The pointer to the dynamic section. We this we need to - get the information for the dynamic section first. */ - assert (ld_state.dynamicscnidx); - outscn = elf_getscn (ld_state.outelf, ld_state.dynamicscnidx); - xelf_getshdr (outscn, shdr); - assert (shdr != NULL); - - xelf_getphdr_ptr (ld_state.outelf, 2, phdr); - phdr->p_type = PT_DYNAMIC; - phdr->p_offset = shdr->sh_offset; - phdr->p_vaddr = shdr->sh_addr; - phdr->p_paddr = phdr->p_vaddr; - phdr->p_filesz = shdr->sh_size; - phdr->p_memsz = phdr->p_filesz; - phdr->p_flags = 0; /* No need to set PF_R or so. */ - phdr->p_align = shdr->sh_addralign; - - (void) xelf_update_phdr (ld_state.outelf, 2, phdr); - - /* Fill in the reference to the .dynstr section. */ - assert (ld_state.dynstrscnidx != 0); - shdr->sh_link = ld_state.dynstrscnidx; - (void) xelf_update_shdr (outscn, shdr); - - /* And fill the remaining entries. */ - Elf_Data *dyndata = elf_getdata (outscn, NULL); - assert (dyndata != NULL); - - /* Add the DT_NEEDED entries. */ - if (ld_state.ndsofiles > 0) - { - struct usedfiles *runp = ld_state.dsofiles->next; - - do - if (! ld_state.ignore_unused_dsos || runp->used) - { - /* Add the position-dependent flag if necessary. */ - if (runp->lazyload) - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, - DT_POSFLAG_1, DF_P1_LAZYLOAD); - - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, - DT_NEEDED, - ebl_strtaboffset (runp->sonameent)); - } - while ((runp = runp->next) != ld_state.dsofiles->next); - } - - /* We can finish the DT_RUNPATH/DT_RPATH entries now. */ - if (ld_state.rxxpath_strent != NULL) - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, - ld_state.rxxpath_tag, - ebl_strtaboffset (ld_state.rxxpath_strent)); - - /* Reference to initialization and finalization functions. */ - // XXX This code depends on symbol table being relocated. - if (ld_state.init_symbol != NULL) - { - XElf_Sym_vardef (sym); - - if (ld_state.need_symtab) - xelf_getsym (symdata, - dblindirect[ld_state.init_symbol->outsymidx], - sym); - else - xelf_getsym (dynsymdata, ld_state.init_symbol->outdynsymidx, - sym); - assert (sym != NULL); - - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, - DT_INIT, sym->st_value); - } - if (ld_state.fini_symbol != NULL) - { - XElf_Sym_vardef (sym); - - if (ld_state.need_symtab) - xelf_getsym (symdata, - dblindirect[ld_state.fini_symbol->outsymidx], - sym); - else - xelf_getsym (dynsymdata, ld_state.fini_symbol->outdynsymidx, - sym); - assert (sym != NULL); - - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, - DT_FINI, sym->st_value); - } - // XXX Support init,fini,preinit arrays - - /* The hash table which comes with dynamic symbol table. */ - xelf_getshdr (elf_getscn (ld_state.outelf, ld_state.hashscnidx), - shdr); - assert (shdr != NULL); - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, DT_HASH, - shdr->sh_addr); - - /* Reference to the symbol table section. */ - assert (ld_state.dynsymscnidx != 0); - xelf_getshdr (elf_getscn (ld_state.outelf, ld_state.dynsymscnidx), - shdr); - assert (shdr != NULL); - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, DT_SYMTAB, - shdr->sh_addr); - - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, DT_SYMENT, - xelf_fsize (ld_state.outelf, ELF_T_SYM, 1)); - - /* And the string table which comes with it. */ - xelf_getshdr (elf_getscn (ld_state.outelf, ld_state.dynstrscnidx), - shdr); - assert (shdr != NULL); - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, DT_STRTAB, - shdr->sh_addr); - - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, DT_STRSZ, - shdr->sh_size); - - /* Add the entries related to the .plt. */ - if (ld_state.nplt > 0) - { - xelf_getshdr (elf_getscn (ld_state.outelf, ld_state.gotscnidx), - shdr); - assert (shdr != NULL); - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, - // XXX This should probably be machine - // dependent. - DT_PLTGOT, shdr->sh_addr); - - xelf_getshdr (elf_getscn (ld_state.outelf, - ld_state.pltrelscnidx), shdr); - assert (shdr != NULL); - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, - DT_PLTRELSZ, shdr->sh_size); - - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, - DT_JMPREL, shdr->sh_addr); - - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, - DT_PLTREL, REL_TYPE (statep)); - } - - if (ld_state.relsize_total > 0) - { - int rel = REL_TYPE (statep); - xelf_getshdr (elf_getscn (ld_state.outelf, - ld_state.reldynscnidx), shdr); - assert (shdr != NULL); - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, - rel, shdr->sh_addr); - - /* Trick ahead. Use arithmetic to get the right tag. - We check the validity of this assumption in the asserts. */ - assert (DT_RELASZ - DT_RELA == 1); - assert (DT_RELSZ - DT_REL == 1); - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, - rel + 1, shdr->sh_size); - - /* Similar for the entry size tag. */ - assert (DT_RELAENT - DT_RELA == 2); - assert (DT_RELENT - DT_REL == 2); - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, - rel + 2, - rel == DT_REL - ? xelf_fsize (ld_state.outelf, ELF_T_REL, 1) - : xelf_fsize (ld_state.outelf, ELF_T_RELA, - 1)); - } - - if (ld_state.verneedscnidx != 0) - { - xelf_getshdr (elf_getscn (ld_state.outelf, - ld_state.verneedscnidx), shdr); - assert (shdr != NULL); - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, - DT_VERNEED, shdr->sh_addr); - - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, - DT_VERNEEDNUM, ld_state.nverdeffile); - } - - if (ld_state.versymscnidx != 0) - { - xelf_getshdr (elf_getscn (ld_state.outelf, - ld_state.versymscnidx), shdr); - assert (shdr != NULL); - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, - DT_VERSYM, shdr->sh_addr); - } - - /* We always create the DT_DEBUG entry. */ - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, DT_DEBUG, 0); - assert (ld_state.ndynamic_filled < ld_state.ndynamic); - - /* Add the flag words if necessary. */ - if (ld_state.dt_flags != 0) - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, DT_FLAGS, - ld_state.dt_flags); - - /* Create entry for the DT_FLAGS_1 flag. */ - if (ld_state.dt_flags_1 != 0) - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, - DT_FLAGS_1, ld_state.dt_flags_1); - - /* Create entry for the DT_FEATURE_1 flag. */ - if (ld_state.dt_feature_1 != 0) - new_dynamic_entry (dyndata, ld_state.ndynamic_filled++, - DT_FEATURE_1, ld_state.dt_feature_1); - - assert (ld_state.ndynamic_filled <= ld_state.ndynamic); - } - } - - - // XXX The following code isn't nice. We use two different - // mechanisms to handle relocations, one for relocatable files, one - // for executables and DSOs. Maybe this is the best method but also - // maybe it can be somewhat unified. - - /* Now that we created the symbol table we can add the reference to - it in the sh_link field of the section headers of the relocation - sections. */ - while (rellist != NULL) - { - assert (ld_state.file_type == relocatable_file_type); - Elf_Scn *outscn; - - outscn = elf_getscn (ld_state.outelf, rellist->scnidx); - xelf_getshdr (outscn, shdr); - /* This must not fail since we did it before. */ - assert (shdr != NULL); - - /* Remember the symbol table which belongs to the relocation section. */ - shdr->sh_link = ld_state.symscnidx; - - /* And the reference to the section which is relocated by this - relocation section. We use the info from the first input - section but all records should have the same information. */ - shdr->sh_info = - rellist->scninfo->fileinfo->scninfo[SCNINFO_SHDR (rellist->scninfo->shdr).sh_info].outscnndx; - - - /* Perform the actual relocations. We only have to adjust - offsets and symbol indices. */ - RELOCATE_SECTION (statep, outscn, rellist->scninfo, dblindirect); - - /* Store the changes. */ - (void) xelf_update_shdr (outscn, shdr); - - /* Up to the next relocation section. */ - rellist = rellist->next; - } - - if (ld_state.rellist != NULL) - { - assert (ld_state.file_type != relocatable_file_type); - /* Create the relocations for the output file. */ - CREATE_RELOCATIONS (statep, dblindirect); - } - - - /* We need the ELF header once more. */ - xelf_getehdr (ld_state.outelf, ehdr); - assert (ehdr != NULL); - - /* Set the section header string table index. */ - if (likely (shstrtab_ndx < SHN_HIRESERVE) - && likely (shstrtab_ndx != SHN_XINDEX)) - ehdr->e_shstrndx = shstrtab_ndx; - else - { - /* We have to put the section index in the sh_link field of the - zeroth section header. */ - Elf_Scn *scn = elf_getscn (ld_state.outelf, 0); - - xelf_getshdr (scn, shdr); - if (unlikely (shdr == NULL)) - error (EXIT_FAILURE, 0, - gettext ("cannot get header of 0th section: %s"), - elf_errmsg (-1)); - - shdr->sh_link = shstrtab_ndx; - - (void) xelf_update_shdr (scn, shdr); - - ehdr->e_shstrndx = SHN_XINDEX; - } - - if (ld_state.file_type != relocatable_file_type) - /* DSOs and executables have to define the entry point symbol. */ - ehdr->e_entry = find_entry_point (); - - if (unlikely (xelf_update_ehdr (ld_state.outelf, ehdr) == 0)) - error (EXIT_FAILURE, 0, - gettext ("cannot update ELF header: %s"), - elf_errmsg (-1)); - - - /* Free the data which we don't need anymore. */ - free (ld_state.dblindirect); - - - /* Finalize the .plt section the what belongs to them. */ - FINALIZE_PLT (statep, nsym, nsym_dyn); - - return 0; -} - - -/* This is a function which must be specified in all backends. */ -static void -ld_generic_relocate_section (struct ld_state *statep, Elf_Scn *outscn, - struct scninfo *firstp, - const Elf32_Word *dblindirect) -{ - error (EXIT_FAILURE, 0, gettext ("\ -linker backend didn't specify function to relocate section")); - /* NOTREACHED */ -} - - -/* Finalize the output file. */ -static int -ld_generic_finalize (struct ld_state *statep) -{ - /* Write out the ELF file data. */ - if (elf_update (ld_state.outelf, ELF_C_WRITE) == -1) - error (EXIT_FAILURE, 0, gettext ("while writing output file: %s"), - elf_errmsg (-1)); - - /* Free the resources. */ - if (elf_end (ld_state.outelf) != 0) - error (EXIT_FAILURE, 0, gettext ("while finishing output file: %s"), - elf_errmsg (-1)); - - /* Get the file status of the temporary file. */ - struct stat temp_st; - if (fstat (ld_state.outfd, &temp_st) != 0) - error (EXIT_FAILURE, errno, gettext ("cannot stat output file")); - - /* Now it's time to rename the file. Remove an old existing file - first. */ - if (rename (ld_state.tempfname, ld_state.outfname) != 0) - /* Something went wrong. */ - error (EXIT_FAILURE, errno, gettext ("cannot rename output file")); - - /* Make sure the output file is really the one we created. */ - struct stat new_st; - if (stat (ld_state.outfname, &new_st) != 0 - || new_st.st_ino != temp_st.st_ino - || new_st.st_dev != temp_st.st_dev) - { - /* Wow, somebody overwrote the output file, probably some intruder. */ - unlink (ld_state.outfname); - error (EXIT_FAILURE, 0, gettext ("\ -WARNING: temporary output file overwritten before linking finished")); - } - - /* Close the file descriptor. */ - (void) close (ld_state.outfd); - - /* Signal the cleanup handler that the file is correctly created. */ - ld_state.tempfname = NULL; - - return 0; -} - - -static bool -ld_generic_special_section_number_p (struct ld_state *statep, size_t number) -{ - /* There are no special section numbers in the gABI. */ - return false; -} - - -static bool -ld_generic_section_type_p (struct ld_state *statep, GElf_Word type) -{ - if ((type >= SHT_NULL && type < SHT_NUM) - /* XXX Enable the following two when implemented. */ - // || type == SHT_GNU_LIBLIST - // || type == SHT_CHECKSUM - /* XXX Eventually include SHT_SUNW_move, SHT_SUNW_COMDAT, and - SHT_SUNW_syminfo. */ - || (type >= SHT_GNU_verdef && type <= SHT_GNU_versym)) - return true; - - return false; -} - - -static XElf_Xword -ld_generic_dynamic_section_flags (struct ld_state *statep) -{ - /* By default the .dynamic section is writable (and is of course - loaded). Few architecture differ from this. */ - return SHF_ALLOC | SHF_WRITE; -} - - -static void -ld_generic_initialize_plt (struct ld_state *statep, Elf_Scn *scn) -{ - /* This cannot be implemented generally. There should have been a - machine dependent implementation and we should never have arrived - here. */ - error (EXIT_FAILURE, 0, gettext ("no machine specific '%s' implementation"), - "initialize_plt"); -} - - -static void -ld_generic_initialize_pltrel (struct ld_state *statep, Elf_Scn *scn) -{ - /* This cannot be implemented generally. There should have been a - machine dependent implementation and we should never have arrived - here. */ - error (EXIT_FAILURE, 0, gettext ("no machine specific '%s' implementation"), - "initialize_pltrel"); -} - - -static void -ld_generic_initialize_got (struct ld_state *statep, Elf_Scn *scn) -{ - /* This cannot be implemented generally. There should have been a - machine dependent implementation and we should never have arrived - here. */ - error (EXIT_FAILURE, 0, gettext ("no machine specific '%s' implementation"), - "initialize_got"); -} - - -static void -ld_generic_finalize_plt (struct ld_state *statep, size_t nsym, size_t nsym_dyn) -{ - /* By default we assume that nothing has to be done. */ -} - - -static int -ld_generic_rel_type (struct ld_state *statep) -{ - /* This cannot be implemented generally. There should have been a - machine dependent implementation and we should never have arrived - here. */ - error (EXIT_FAILURE, 0, gettext ("no machine specific '%s' implementation"), - "rel_type"); - /* Just to keep the compiler calm. */ - return 0; -} - - -static void -ld_generic_count_relocations (struct ld_state *statep, struct scninfo *scninfo) -{ - /* This cannot be implemented generally. There should have been a - machine dependent implementation and we should never have arrived - here. */ - error (EXIT_FAILURE, 0, gettext ("no machine specific '%s' implementation"), - "count_relocations"); -} - - -static void -ld_generic_create_relocations (struct ld_state *statep, - const Elf32_Word *dblindirect) -{ - /* This cannot be implemented generally. There should have been a - machine dependent implementation and we should never have arrived - here. */ - error (EXIT_FAILURE, 0, gettext ("no machine specific '%s' implementation"), - "create_relocations"); -} diff --git a/src/ldlex.c b/src/ldlex.c deleted file mode 100644 index e0bf0a5f..00000000 --- a/src/ldlex.c +++ /dev/null @@ -1,2663 +0,0 @@ -#define yy_create_buffer ld_create_buffer -#define yy_delete_buffer ld_delete_buffer -#define yy_scan_buffer ld_scan_buffer -#define yy_scan_string ld_scan_string -#define yy_scan_bytes ld_scan_bytes -#define yy_flex_debug ld_flex_debug -#define yy_init_buffer ld_init_buffer -#define yy_flush_buffer ld_flush_buffer -#define yy_load_buffer_state ld_load_buffer_state -#define yy_switch_to_buffer ld_switch_to_buffer -#define yyin ldin -#define yyleng ldleng -#define yylex ldlex -#define yyout ldout -#define yyrestart ldrestart -#define yytext ldtext -#define yylineno ldlineno - -#line 20 "ldlex.c" -/* A lexical scanner generated by flex */ - -/* Scanner skeleton version: - * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $ - */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 - -#include <stdio.h> -#include <unistd.h> - - -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ -#ifdef c_plusplus -#ifndef __cplusplus -#define __cplusplus -#endif -#endif - - -#ifdef __cplusplus - -#include <stdlib.h> - -/* Use prototypes in function declarations. */ -#define YY_USE_PROTOS - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_PROTOS -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef __TURBOC__ - #pragma warn -rch - #pragma warn -use -#include <io.h> -#include <stdlib.h> -#define YY_USE_CONST -#define YY_USE_PROTOS -#endif - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - - -#ifdef YY_USE_PROTOS -#define YY_PROTO(proto) proto -#else -#define YY_PROTO(proto) () -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN yy_start = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START ((yy_start - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#define YY_BUF_SIZE 16384 - -typedef struct yy_buffer_state *YY_BUFFER_STATE; - -extern int yyleng; -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - -/* The funky do-while in the following #define is used to turn the definition - * int a single C statement (which needs a semi-colon terminator). This - * avoids problems with code like: - * - * if ( condition_holds ) - * yyless( 5 ); - * else - * do_something_else(); - * - * Prior to using the do-while the compiler would get upset at the - * "else" because it interpreted the "if" statement as being all - * done when it reached the ';' after the yyless() call. - */ - -/* Return all but the first 'n' matched characters back to the input stream. */ - -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - *yy_cp = yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yytext_ptr ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ -typedef unsigned int yy_size_t; - - -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - }; - -static YY_BUFFER_STATE yy_current_buffer = 0; - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - */ -#define YY_CURRENT_BUFFER yy_current_buffer - - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; - -static int yy_n_chars; /* number of characters read into yy_ch_buf */ - - -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 1; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart YY_PROTO(( FILE *input_file )); - -void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); -void yy_load_buffer_state YY_PROTO(( void )); -YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); -void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); -void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); -void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); -#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) - -YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); -YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); -YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); - -static void *yy_flex_alloc YY_PROTO(( yy_size_t )); -static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); -static void yy_flex_free YY_PROTO(( void * )); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) - - -#define YY_USES_REJECT - -#define yywrap() 1 -#define YY_SKIP_YYWRAP -typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; -typedef int yy_state_type; -extern int yylineno; -int yylineno = 1; -extern char *yytext; -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state YY_PROTO(( void )); -static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); -static int yy_get_next_buffer YY_PROTO(( void )); -static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 49 -#define YY_END_OF_BUFFER 50 -static yyconst short int yy_acclist[373] = - { 0, - 50, 48, 49, 47, 48, 49, 47, 49, 40, 48, - 49, 41, 48, 49, 31, 48, 49, 32, 48, 49, - 38, 45, 48, 49, 36, 48, 49, 43, 48, 49, - 37, 48, 49, 45, 48, 49, 39, 48, 49, 44, - 45, 48, 49, 44, 45, 48, 49, 33, 48, 49, - 34, 48, 49, 35, 48, 49, 45, 48, 49, 45, - 48, 49, 45, 48, 49, 45, 48, 49, 45, 48, - 49, 45, 48, 49, 45, 48, 49, 45, 48, 49, - 45, 48, 49, 45, 48, 49, 48, 49, 48, 49, - 45, 48, 49, 45, 48, 49, 29, 48, 49, 42, - - 48, 49, 30, 48, 49, 48, 49, 9, 49, 9, - 49, 47, 45, 46, 45, 46, 10, 46, 44, 45, - 46, 44, 45, 46, 44, 45, 46, 45, 46, 44, - 45, 46, 45, 46, 45, 46, 45, 46, 45, 46, - 45, 46, 45, 46, 45, 46, 45, 46, 45, 46, - 45, 46, 45, 46, 45, 46, 45, 46, 28, 45, - 46, 45, 46, 44, 45, 46, 45, 46, 45, 46, - 45, 46, 45, 46, 45, 46, 45, 46, 45, 46, - 45, 46, 45, 46, 45, 46, 45, 46, 45, 46, - 45, 46, 45, 46, 45, 46, 45, 46, 45, 46, - - 44, 45, 46, 45, 46, 45, 46, 45, 46, 45, - 46, 45, 46, 45, 46, 18, 45, 46, 45, 46, - 45, 46, 45, 46, 45, 46, 45, 46, 45, 46, - 26, 45, 46, 45, 46, 45, 46, 45, 46, 11, - 45, 46, 12, 45, 46, 45, 46, 15, 45, 46, - 16, 45, 46, 45, 46, 45, 46, 45, 46, 45, - 46, 45, 46, 45, 46, 45, 46, 45, 46, 45, - 46, 45, 46, 45, 46, 17, 45, 46, 45, 46, - 45, 46, 45, 46, 45, 46, 45, 46, 45, 46, - 45, 46, 45, 46, 19, 2, 6, 45, 46, 45, - - 46, 45, 46, 22, 45, 46, 45, 46, 24, 45, - 46, 45, 46, 27, 45, 46, 14, 4, 1, 8, - 5, 45, 46, 45, 46, 21, 45, 46, 45, 46, - 45, 46, 45, 46, 45, 46, 45, 46, 45, 46, - 3, 7, 45, 46, 45, 46, 23, 45, 46, 45, - 46, 45, 46, 45, 46, 45, 46, 13, 45, 46, - 45, 46, 45, 46, 20, 45, 46, 45, 46, 25, - 45, 46 - } ; - -static yyconst short int yy_accept[212] = - { 0, - 1, 1, 1, 1, 1, 2, 4, 7, 9, 12, - 15, 18, 21, 25, 28, 31, 34, 37, 40, 44, - 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, - 78, 81, 84, 87, 89, 91, 94, 97, 100, 103, - 106, 108, 110, 112, 113, 114, 115, 117, 119, 122, - 125, 128, 130, 133, 135, 137, 139, 141, 143, 145, - 147, 149, 151, 153, 155, 157, 159, 159, 160, 162, - 164, 164, 164, 164, 164, 167, 169, 171, 173, 175, - 177, 179, 181, 183, 185, 187, 189, 191, 193, 195, - 197, 197, 199, 201, 201, 201, 201, 201, 201, 201, - - 204, 206, 208, 210, 212, 214, 216, 219, 221, 223, - 225, 227, 229, 231, 234, 236, 236, 238, 240, 240, - 240, 240, 240, 240, 240, 240, 240, 243, 246, 248, - 251, 254, 256, 258, 260, 262, 264, 266, 268, 270, - 272, 274, 274, 274, 274, 274, 274, 274, 274, 274, - 276, 279, 281, 283, 285, 287, 289, 291, 293, 295, - 296, 296, 297, 297, 297, 297, 298, 298, 298, 300, - 302, 304, 307, 309, 312, 314, 317, 318, 318, 319, - 320, 320, 321, 322, 324, 326, 329, 331, 333, 333, - 333, 335, 337, 339, 341, 342, 343, 345, 347, 350, - - 352, 354, 356, 358, 361, 363, 365, 368, 370, 373, - 373 - } ; - -static yyconst int yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 1, 4, 1, 5, 6, 1, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 16, - 16, 16, 16, 16, 16, 17, 17, 18, 19, 1, - 20, 1, 21, 1, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 13, 31, 32, 33, 34, 35, 36, - 13, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 1, 49, 1, 50, 51, 52, 53, - - 54, 55, 56, 13, 57, 13, 58, 59, 58, 60, - 61, 13, 13, 13, 62, 13, 13, 13, 13, 63, - 13, 13, 64, 65, 66, 47, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst int yy_meta[67] = - { 0, - 1, 2, 2, 1, 1, 1, 2, 2, 3, 1, - 1, 1, 3, 1, 3, 3, 3, 2, 2, 1, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 2, 1, 2, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 2, 1, 2 - } ; - -static yyconst short int yy_base[215] = - { 0, - 0, 218, 0, 216, 219, 2141, 65, 67, 2141, 2141, - 2141, 2141, 0, 2141, 2141, 2141, 70, 208, 135, 62, - 2141, 2141, 2141, 0, 70, 127, 158, 171, 192, 211, - 260, 309, 215, 46, 0, 269, 273, 2141, 2141, 2141, - 42, 2141, 43, 70, 0, 0, 330, 0, 48, 322, - 333, 382, 385, 434, 437, 458, 471, 520, 507, 529, - 558, 564, 613, 609, 616, 647, 67, 2141, 666, 670, - 47, 160, 59, 158, 90, 703, 722, 725, 756, 760, - 789, 793, 822, 828, 851, 862, 873, 886, 907, 926, - 89, 945, 964, 65, 159, 158, 67, 157, 153, 985, - - 1004, 1008, 1039, 1042, 1073, 1076, 1107, 1111, 1130, 1161, - 1165, 1169, 1198, 1205, 1227, 155, 1234, 1256, 144, 143, - 139, 140, 137, 127, 112, 113, 1263, 1285, 1292, 1296, - 1325, 1329, 1336, 1365, 1386, 1389, 1420, 1441, 1444, 1465, - 1494, 106, 151, 83, 79, 77, 154, 61, 59, 1500, - 1503, 1534, 1553, 1556, 1587, 1590, 1609, 1640, 1644, 2141, - 58, 2141, 160, 162, 54, 2141, 169, 174, 1648, 1677, - 1698, 1701, 1722, 1735, 1757, 1766, 2141, 43, 2141, 2141, - 37, 2141, 2141, 1779, 1788, 1801, 1810, 1832, 177, 181, - 1839, 1861, 1868, 1892, 2141, 2141, 1901, 1905, 1936, 1945, - - 1958, 1980, 1989, 2002, 2011, 2024, 2047, 2055, 2068, 2141, - 2131, 76, 2134, 2137 - } ; - -static yyconst short int yy_def[215] = - { 0, - 210, 1, 211, 211, 210, 210, 210, 210, 210, 210, - 210, 210, 212, 210, 210, 210, 213, 214, 213, 19, - 210, 210, 210, 212, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 210, 214, 19, 19, 210, 210, 210, - 210, 210, 210, 210, 212, 214, 19, 214, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 210, 210, 19, 19, - 210, 210, 210, 210, 52, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 210, 19, 19, 210, 210, 210, 210, 210, 210, 19, - - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 210, 19, 19, 210, 210, - 210, 210, 210, 210, 210, 210, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 210, 210, 210, 210, 210, 210, 210, 210, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 19, 19, - 19, 19, 19, 19, 19, 19, 210, 210, 210, 210, - 210, 210, 210, 19, 19, 19, 19, 19, 210, 210, - 19, 19, 19, 19, 210, 210, 19, 19, 19, 19, - - 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, - 210, 210, 210, 210 - } ; - -static yyconst short int yy_nxt[2208] = - { 0, - 6, 7, 8, 6, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 20, 21, 22, 23, - 24, 25, 17, 17, 17, 26, 17, 27, 17, 28, - 29, 17, 17, 17, 30, 31, 17, 32, 17, 17, - 33, 17, 17, 17, 17, 34, 35, 6, 17, 17, - 17, 17, 17, 17, 17, 36, 17, 17, 37, 17, - 17, 17, 17, 38, 39, 40, 44, 44, 44, 44, - 46, 44, 44, 46, 46, 46, 50, 50, 45, 46, - 46, 46, 67, 46, 47, 47, 47, 67, 67, 46, - 47, 190, 53, 68, 53, 71, 73, 189, 72, 74, - - 47, 54, 47, 91, 47, 94, 95, 181, 91, 91, - 47, 178, 47, 168, 68, 167, 46, 97, 98, 53, - 100, 119, 100, 123, 47, 116, 120, 47, 124, 165, - 116, 116, 47, 164, 46, 46, 68, 163, 46, 46, - 46, 47, 47, 47, 46, 46, 46, 100, 46, 49, - 49, 50, 162, 162, 46, 166, 166, 47, 161, 47, - 55, 179, 179, 180, 180, 51, 149, 51, 148, 56, - 182, 182, 47, 47, 47, 183, 183, 52, 195, 195, - 147, 46, 196, 196, 47, 47, 47, 47, 47, 47, - 47, 146, 51, 145, 57, 144, 143, 52, 142, 46, - - 47, 47, 68, 47, 58, 126, 47, 47, 47, 125, - 122, 121, 99, 47, 96, 47, 48, 59, 210, 43, - 47, 41, 47, 210, 47, 47, 47, 47, 47, 47, - 47, 47, 210, 47, 47, 210, 210, 210, 210, 210, - 66, 47, 210, 47, 210, 47, 210, 47, 210, 47, - 60, 210, 210, 47, 47, 210, 210, 47, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 47, 210, - 210, 210, 47, 47, 47, 47, 47, 47, 210, 210, - 210, 61, 210, 47, 47, 47, 210, 47, 47, 47, - 47, 210, 47, 210, 210, 210, 62, 210, 210, 47, - - 210, 47, 47, 47, 210, 47, 210, 210, 210, 210, - 210, 47, 210, 210, 210, 47, 210, 47, 210, 210, - 210, 210, 47, 47, 47, 47, 47, 69, 210, 210, - 47, 47, 210, 70, 63, 47, 50, 50, 64, 47, - 210, 47, 210, 65, 47, 47, 47, 47, 47, 47, - 210, 47, 53, 210, 53, 210, 210, 210, 210, 210, - 47, 210, 47, 47, 47, 47, 47, 210, 210, 210, - 210, 47, 47, 210, 210, 47, 210, 210, 210, 53, - 210, 210, 210, 210, 47, 210, 210, 47, 210, 210, - 47, 210, 47, 210, 210, 47, 75, 75, 75, 47, - - 47, 47, 210, 75, 75, 75, 75, 75, 75, 210, - 210, 210, 47, 210, 47, 47, 210, 47, 210, 210, - 210, 210, 210, 210, 47, 210, 210, 47, 210, 210, - 210, 75, 75, 75, 75, 75, 75, 210, 210, 47, - 210, 210, 47, 210, 47, 210, 210, 47, 47, 47, - 47, 47, 47, 47, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 76, 47, 210, 47, 47, 210, 47, - 210, 210, 47, 47, 47, 77, 47, 210, 210, 47, - 210, 78, 210, 210, 210, 47, 47, 47, 47, 210, - 47, 47, 210, 210, 47, 210, 47, 210, 210, 47, - - 47, 47, 210, 47, 210, 79, 210, 210, 210, 210, - 210, 210, 210, 47, 210, 47, 210, 210, 210, 210, - 47, 47, 47, 47, 210, 210, 210, 210, 47, 210, - 210, 210, 82, 47, 47, 47, 47, 47, 210, 47, - 210, 210, 210, 47, 47, 47, 210, 210, 210, 47, - 47, 210, 47, 210, 210, 80, 210, 210, 81, 47, - 210, 47, 47, 210, 47, 210, 210, 83, 210, 47, - 210, 47, 47, 47, 47, 210, 210, 47, 47, 47, - 47, 210, 47, 210, 210, 84, 47, 210, 47, 210, - 47, 47, 210, 210, 47, 210, 47, 210, 85, 210, - - 47, 210, 210, 210, 210, 210, 47, 210, 210, 210, - 210, 210, 210, 210, 210, 47, 210, 210, 210, 210, - 47, 47, 210, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 210, 86, 210, 210, 210, 210, 47, - 87, 47, 210, 47, 210, 47, 47, 210, 47, 210, - 210, 47, 89, 88, 210, 47, 210, 210, 47, 210, - 210, 47, 47, 47, 210, 210, 47, 210, 210, 210, - 47, 47, 210, 47, 210, 47, 210, 47, 47, 47, - 47, 47, 47, 90, 47, 47, 47, 210, 210, 47, - 210, 210, 210, 210, 210, 210, 47, 210, 47, 210, - - 47, 210, 47, 210, 47, 210, 210, 210, 47, 47, - 210, 210, 47, 210, 210, 210, 210, 47, 47, 47, - 210, 93, 210, 47, 210, 210, 92, 47, 47, 210, - 101, 210, 47, 47, 210, 47, 47, 47, 47, 47, - 47, 47, 210, 210, 210, 47, 210, 210, 210, 210, - 210, 210, 47, 210, 47, 47, 103, 47, 102, 210, - 47, 210, 210, 210, 47, 47, 210, 47, 210, 210, - 47, 47, 47, 210, 47, 47, 47, 210, 210, 47, - 210, 210, 47, 210, 47, 210, 47, 47, 47, 210, - 47, 210, 47, 210, 210, 104, 210, 210, 47, 105, - - 210, 210, 47, 47, 47, 47, 210, 47, 47, 47, - 210, 210, 210, 47, 106, 210, 210, 47, 47, 47, - 210, 47, 47, 47, 210, 47, 210, 210, 107, 210, - 210, 47, 210, 210, 210, 47, 47, 47, 47, 210, - 210, 210, 47, 47, 47, 210, 47, 210, 210, 210, - 47, 47, 47, 109, 47, 47, 210, 108, 47, 210, - 47, 210, 210, 210, 47, 47, 47, 47, 210, 210, - 47, 210, 210, 210, 210, 210, 47, 47, 47, 47, - 210, 47, 210, 47, 47, 47, 210, 47, 47, 47, - 47, 110, 47, 47, 47, 210, 210, 210, 111, 210, - - 47, 47, 47, 47, 47, 112, 210, 210, 47, 210, - 210, 113, 210, 47, 210, 47, 47, 210, 47, 47, - 210, 47, 47, 47, 47, 210, 210, 210, 47, 210, - 47, 210, 210, 210, 210, 47, 210, 47, 210, 47, - 47, 47, 47, 47, 210, 114, 210, 210, 47, 47, - 210, 210, 210, 210, 210, 210, 47, 210, 47, 47, - 47, 47, 210, 115, 47, 210, 210, 210, 47, 47, - 210, 210, 210, 210, 210, 47, 210, 47, 47, 47, - 47, 210, 210, 47, 210, 210, 210, 47, 47, 210, - 210, 210, 210, 210, 47, 117, 47, 210, 210, 47, - - 47, 47, 47, 210, 210, 210, 47, 47, 210, 210, - 210, 210, 210, 118, 210, 47, 210, 47, 47, 47, - 47, 47, 47, 47, 47, 210, 47, 47, 210, 210, - 210, 210, 210, 210, 47, 210, 47, 127, 47, 210, - 47, 210, 47, 210, 210, 210, 47, 47, 210, 210, - 47, 128, 210, 47, 47, 47, 47, 47, 47, 210, - 210, 47, 210, 210, 210, 47, 47, 210, 210, 47, - 47, 47, 47, 210, 47, 210, 210, 130, 129, 210, - 210, 47, 210, 210, 47, 210, 210, 47, 47, 47, - 47, 47, 47, 210, 210, 210, 47, 210, 210, 47, - - 210, 47, 210, 47, 47, 47, 47, 210, 47, 210, - 210, 131, 132, 210, 210, 47, 210, 210, 47, 210, - 210, 47, 47, 47, 210, 47, 47, 47, 210, 210, - 47, 210, 210, 47, 210, 47, 210, 47, 47, 47, - 210, 47, 210, 47, 47, 47, 47, 210, 210, 47, - 133, 210, 210, 47, 210, 210, 210, 210, 210, 210, - 47, 210, 47, 210, 47, 210, 210, 134, 47, 47, - 210, 210, 47, 47, 210, 47, 47, 47, 210, 47, - 47, 47, 210, 47, 47, 47, 210, 47, 136, 210, - 135, 47, 47, 47, 137, 47, 210, 47, 210, 47, - - 210, 47, 210, 47, 210, 210, 210, 47, 210, 210, - 210, 47, 47, 47, 47, 210, 210, 210, 47, 47, - 47, 47, 47, 47, 210, 210, 47, 47, 47, 210, - 47, 47, 138, 210, 210, 47, 210, 47, 210, 210, - 47, 47, 47, 47, 210, 210, 210, 47, 47, 47, - 47, 210, 210, 210, 210, 47, 139, 47, 210, 47, - 47, 210, 47, 210, 47, 210, 47, 47, 210, 47, - 47, 47, 47, 210, 210, 210, 47, 47, 47, 47, - 210, 210, 210, 140, 47, 210, 47, 210, 47, 47, - 210, 47, 210, 47, 210, 47, 47, 210, 47, 47, - - 47, 47, 210, 210, 210, 47, 47, 47, 47, 210, - 47, 47, 47, 47, 141, 47, 150, 47, 47, 210, - 47, 210, 47, 210, 47, 47, 47, 47, 47, 210, - 210, 210, 210, 210, 47, 210, 210, 210, 47, 47, - 47, 47, 47, 47, 47, 47, 210, 47, 210, 47, - 47, 47, 47, 47, 47, 47, 210, 47, 47, 47, - 210, 47, 210, 210, 151, 210, 47, 47, 47, 210, - 210, 47, 210, 210, 152, 210, 210, 210, 47, 47, - 47, 47, 47, 210, 210, 210, 47, 47, 210, 210, - 210, 47, 210, 47, 153, 47, 210, 47, 47, 210, - - 47, 47, 47, 47, 47, 47, 210, 47, 210, 210, - 154, 210, 210, 210, 210, 210, 47, 155, 47, 47, - 210, 47, 47, 210, 210, 210, 210, 47, 47, 210, - 210, 47, 210, 210, 47, 47, 47, 210, 210, 210, - 210, 210, 210, 47, 210, 210, 47, 210, 47, 210, - 47, 47, 47, 156, 210, 47, 47, 47, 47, 47, - 47, 210, 47, 210, 210, 210, 210, 157, 210, 210, - 210, 47, 210, 47, 47, 210, 47, 47, 158, 47, - 47, 47, 47, 47, 210, 210, 47, 210, 210, 210, - 210, 210, 210, 210, 210, 47, 210, 47, 47, 210, - - 210, 47, 210, 47, 210, 210, 47, 47, 47, 47, - 47, 160, 210, 210, 47, 47, 47, 47, 47, 47, - 210, 210, 47, 159, 47, 169, 47, 47, 210, 210, - 47, 210, 47, 47, 210, 47, 47, 210, 210, 210, - 210, 210, 47, 210, 210, 47, 210, 210, 47, 47, - 47, 47, 210, 210, 210, 210, 47, 47, 210, 210, - 47, 210, 47, 210, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 210, 210, 210, 47, 210, 210, 210, - 210, 172, 170, 47, 210, 47, 47, 210, 47, 210, - 210, 47, 210, 210, 210, 47, 47, 171, 47, 210, - - 210, 47, 47, 47, 47, 47, 47, 210, 210, 210, - 47, 210, 210, 47, 210, 47, 210, 47, 47, 47, - 47, 210, 47, 47, 47, 47, 210, 210, 174, 47, - 210, 210, 47, 210, 210, 173, 210, 210, 210, 47, - 210, 47, 210, 210, 47, 210, 210, 47, 210, 47, - 210, 47, 47, 210, 47, 47, 47, 175, 47, 47, - 47, 177, 47, 47, 47, 210, 47, 210, 210, 210, - 47, 47, 47, 176, 47, 210, 47, 210, 47, 210, - 47, 210, 47, 210, 210, 210, 47, 210, 210, 210, - 47, 47, 47, 47, 210, 210, 184, 47, 210, 210, - - 210, 47, 47, 185, 210, 47, 47, 47, 210, 47, - 47, 210, 47, 47, 47, 47, 47, 47, 210, 47, - 210, 210, 210, 186, 210, 210, 210, 210, 47, 210, - 47, 47, 210, 47, 47, 210, 47, 47, 47, 47, - 47, 210, 210, 47, 210, 210, 187, 210, 210, 47, - 47, 47, 47, 210, 47, 47, 210, 210, 47, 210, - 47, 210, 210, 47, 47, 47, 210, 47, 210, 210, - 210, 47, 47, 47, 210, 210, 210, 47, 210, 47, - 47, 47, 47, 210, 47, 188, 210, 47, 210, 47, - 210, 210, 47, 47, 47, 47, 47, 47, 47, 47, - - 210, 210, 47, 47, 47, 191, 210, 210, 47, 47, - 210, 47, 210, 210, 47, 47, 47, 47, 47, 47, - 47, 47, 192, 47, 47, 47, 47, 210, 47, 210, - 47, 47, 210, 47, 210, 210, 47, 210, 210, 193, - 47, 47, 47, 47, 210, 47, 47, 47, 47, 210, - 47, 210, 47, 47, 47, 47, 210, 194, 47, 210, - 210, 210, 47, 47, 47, 210, 210, 47, 197, 47, - 210, 47, 47, 210, 47, 47, 47, 47, 210, 210, - 210, 47, 47, 47, 47, 210, 210, 210, 210, 47, - 210, 47, 210, 47, 47, 210, 47, 198, 47, 210, - - 47, 47, 210, 47, 199, 210, 47, 47, 47, 210, - 47, 210, 210, 200, 210, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 210, 210, 210, 210, - 47, 47, 201, 47, 47, 47, 210, 202, 210, 210, - 210, 210, 210, 47, 210, 210, 210, 47, 210, 47, - 47, 47, 47, 210, 47, 210, 210, 210, 47, 47, - 47, 47, 47, 47, 210, 210, 47, 47, 47, 203, - 210, 210, 47, 47, 47, 47, 210, 47, 47, 210, - 210, 210, 210, 204, 210, 210, 210, 47, 47, 210, - 47, 210, 210, 47, 47, 47, 47, 210, 47, 210, - - 47, 205, 47, 47, 47, 47, 210, 47, 210, 210, - 47, 210, 47, 210, 206, 47, 47, 47, 47, 47, - 47, 47, 47, 210, 210, 47, 47, 47, 210, 210, - 210, 47, 47, 210, 47, 210, 210, 47, 47, 47, - 47, 47, 47, 47, 47, 210, 47, 210, 210, 207, - 210, 47, 210, 47, 47, 210, 47, 210, 210, 47, - 208, 47, 47, 47, 47, 210, 47, 210, 47, 47, - 47, 47, 210, 47, 210, 210, 210, 47, 210, 47, - 210, 47, 47, 47, 47, 47, 47, 47, 210, 47, - 210, 210, 209, 210, 210, 210, 210, 47, 47, 210, - - 47, 210, 210, 210, 47, 210, 210, 210, 210, 47, - 47, 210, 47, 210, 210, 210, 210, 47, 210, 210, - 210, 210, 210, 210, 210, 47, 210, 210, 210, 210, - 47, 42, 42, 42, 47, 210, 47, 46, 210, 46, - 5, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - - 210, 210, 210, 210, 210, 210, 210 - } ; - -static yyconst short int yy_chk[2208] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 7, 7, 8, 8, - 17, 44, 44, 17, 17, 17, 20, 20, 212, 17, - 17, 17, 34, 17, 25, 25, 25, 34, 34, 17, - 49, 181, 20, 34, 20, 41, 43, 178, 41, 43, - - 25, 25, 25, 67, 20, 71, 71, 165, 67, 67, - 49, 161, 25, 149, 67, 148, 17, 73, 73, 20, - 75, 94, 75, 97, 20, 91, 94, 25, 97, 146, - 91, 91, 25, 145, 17, 19, 91, 144, 19, 19, - 19, 26, 26, 26, 19, 19, 19, 75, 19, 19, - 19, 19, 143, 143, 19, 147, 147, 26, 142, 26, - 26, 163, 163, 164, 164, 19, 126, 19, 125, 26, - 167, 167, 27, 27, 27, 168, 168, 19, 189, 189, - 124, 19, 190, 190, 26, 28, 28, 28, 27, 26, - 27, 123, 19, 122, 27, 121, 120, 19, 119, 19, - - 27, 28, 116, 28, 28, 99, 29, 29, 29, 98, - 96, 95, 74, 28, 72, 27, 18, 29, 5, 4, - 27, 2, 29, 0, 29, 30, 30, 30, 28, 33, - 33, 33, 0, 28, 29, 0, 0, 0, 0, 0, - 33, 30, 0, 30, 0, 33, 0, 33, 0, 29, - 30, 0, 0, 30, 29, 0, 0, 33, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, - 0, 0, 33, 30, 31, 31, 31, 33, 0, 0, - 0, 31, 0, 36, 36, 36, 0, 37, 37, 37, - 31, 0, 31, 0, 0, 0, 31, 0, 0, 36, - - 0, 36, 31, 37, 0, 37, 0, 0, 0, 0, - 0, 36, 0, 0, 0, 37, 0, 31, 0, 0, - 0, 0, 31, 32, 32, 32, 36, 36, 0, 0, - 37, 36, 0, 37, 32, 37, 50, 50, 32, 32, - 0, 32, 0, 32, 47, 47, 47, 51, 51, 51, - 0, 32, 50, 0, 50, 0, 0, 0, 0, 0, - 47, 0, 47, 51, 50, 51, 32, 0, 0, 0, - 0, 32, 47, 0, 0, 51, 0, 0, 0, 50, - 0, 0, 0, 0, 50, 0, 0, 47, 0, 0, - 51, 0, 47, 0, 0, 51, 52, 52, 52, 53, - - 53, 53, 0, 52, 52, 52, 52, 52, 52, 0, - 0, 0, 52, 0, 52, 53, 0, 53, 0, 0, - 0, 0, 0, 0, 52, 0, 0, 53, 0, 0, - 0, 52, 52, 52, 52, 52, 52, 0, 0, 52, - 0, 0, 53, 0, 52, 0, 0, 53, 54, 54, - 54, 55, 55, 55, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 54, 54, 0, 54, 55, 0, 55, - 0, 0, 56, 56, 56, 55, 54, 0, 0, 55, - 0, 56, 0, 0, 0, 57, 57, 57, 56, 0, - 56, 54, 0, 0, 55, 0, 54, 0, 0, 55, - - 56, 57, 0, 57, 0, 57, 0, 0, 0, 0, - 0, 0, 0, 57, 0, 56, 0, 0, 0, 0, - 56, 59, 59, 59, 0, 0, 0, 0, 57, 0, - 0, 0, 59, 57, 58, 58, 58, 59, 0, 59, - 0, 0, 0, 60, 60, 60, 0, 0, 0, 59, - 58, 0, 58, 0, 0, 58, 0, 0, 58, 60, - 0, 60, 58, 0, 59, 0, 0, 60, 0, 59, - 0, 60, 61, 61, 61, 0, 0, 58, 62, 62, - 62, 0, 58, 0, 0, 61, 60, 0, 61, 0, - 61, 60, 0, 0, 62, 0, 62, 0, 62, 0, - - 61, 0, 0, 0, 0, 0, 62, 0, 0, 0, - 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, - 61, 62, 0, 64, 64, 64, 62, 63, 63, 63, - 65, 65, 65, 0, 63, 0, 0, 0, 0, 64, - 63, 64, 0, 63, 0, 63, 65, 0, 65, 0, - 0, 64, 65, 64, 0, 63, 0, 0, 65, 0, - 0, 66, 66, 66, 0, 0, 64, 0, 0, 0, - 63, 64, 0, 65, 0, 63, 0, 66, 65, 66, - 69, 69, 69, 66, 70, 70, 70, 0, 0, 66, - 0, 0, 0, 0, 0, 0, 69, 0, 69, 0, - - 70, 0, 70, 0, 66, 0, 0, 0, 69, 66, - 0, 0, 70, 0, 0, 0, 0, 76, 76, 76, - 0, 70, 0, 69, 0, 0, 69, 70, 69, 0, - 76, 0, 70, 76, 0, 76, 77, 77, 77, 78, - 78, 78, 0, 0, 0, 76, 0, 0, 0, 0, - 0, 0, 77, 0, 77, 78, 78, 78, 77, 0, - 76, 0, 0, 0, 77, 76, 0, 78, 0, 0, - 79, 79, 79, 0, 80, 80, 80, 0, 0, 77, - 0, 0, 78, 0, 77, 0, 79, 78, 79, 0, - 80, 0, 80, 0, 0, 79, 0, 0, 79, 80, - - 0, 0, 80, 81, 81, 81, 0, 82, 82, 82, - 0, 0, 0, 79, 81, 0, 0, 80, 79, 81, - 0, 81, 80, 82, 0, 82, 0, 0, 82, 0, - 0, 81, 0, 0, 0, 82, 83, 83, 83, 0, - 0, 0, 84, 84, 84, 0, 81, 0, 0, 0, - 82, 81, 83, 84, 83, 82, 0, 83, 84, 0, - 84, 0, 0, 0, 83, 85, 85, 85, 0, 0, - 84, 0, 0, 0, 0, 0, 86, 86, 86, 83, - 0, 85, 0, 85, 83, 84, 0, 87, 87, 87, - 84, 85, 86, 85, 86, 0, 0, 0, 86, 0, - - 88, 88, 88, 87, 86, 87, 0, 0, 85, 0, - 0, 88, 0, 85, 0, 87, 88, 0, 88, 86, - 0, 89, 89, 89, 86, 0, 0, 0, 88, 0, - 87, 0, 0, 0, 0, 87, 0, 89, 0, 89, - 90, 90, 90, 88, 0, 89, 0, 0, 88, 89, - 0, 0, 0, 0, 0, 0, 90, 0, 90, 92, - 92, 92, 0, 90, 89, 0, 0, 0, 90, 89, - 0, 0, 0, 0, 0, 92, 0, 92, 93, 93, - 93, 0, 0, 90, 0, 0, 0, 92, 90, 0, - 0, 0, 0, 0, 93, 92, 93, 0, 0, 100, - - 100, 100, 92, 0, 0, 0, 93, 92, 0, 0, - 0, 0, 0, 93, 0, 100, 0, 100, 101, 101, - 101, 93, 102, 102, 102, 0, 93, 100, 0, 0, - 0, 0, 0, 0, 101, 0, 101, 101, 102, 0, - 102, 0, 100, 0, 0, 0, 101, 100, 0, 0, - 102, 102, 0, 103, 103, 103, 104, 104, 104, 0, - 0, 101, 0, 0, 0, 102, 101, 0, 0, 103, - 102, 103, 104, 0, 104, 0, 0, 104, 103, 0, - 0, 103, 0, 0, 104, 0, 0, 105, 105, 105, - 106, 106, 106, 0, 0, 0, 103, 0, 0, 104, - - 0, 103, 0, 105, 104, 105, 106, 0, 106, 0, - 0, 105, 106, 0, 0, 105, 0, 0, 106, 0, - 0, 107, 107, 107, 0, 108, 108, 108, 0, 0, - 105, 0, 0, 106, 0, 105, 0, 107, 106, 107, - 0, 108, 0, 108, 109, 109, 109, 0, 0, 107, - 108, 0, 0, 108, 0, 0, 0, 0, 0, 0, - 109, 0, 109, 0, 107, 0, 0, 109, 108, 107, - 0, 0, 109, 108, 0, 110, 110, 110, 0, 111, - 111, 111, 0, 112, 112, 112, 0, 109, 111, 0, - 110, 110, 109, 110, 112, 111, 0, 111, 0, 112, - - 0, 112, 0, 110, 0, 0, 0, 111, 0, 0, - 0, 112, 113, 113, 113, 0, 0, 0, 110, 114, - 114, 114, 111, 110, 0, 0, 112, 111, 113, 0, - 113, 112, 113, 0, 0, 114, 0, 114, 0, 0, - 113, 115, 115, 115, 0, 0, 0, 114, 117, 117, - 117, 0, 0, 0, 0, 113, 115, 115, 0, 115, - 113, 0, 114, 0, 117, 0, 117, 114, 0, 115, - 118, 118, 118, 0, 0, 0, 117, 127, 127, 127, - 0, 0, 0, 117, 115, 0, 118, 0, 118, 115, - 0, 117, 0, 127, 0, 127, 117, 0, 118, 128, - - 128, 128, 0, 0, 0, 127, 129, 129, 129, 0, - 130, 130, 130, 118, 118, 128, 129, 128, 118, 0, - 127, 0, 129, 0, 129, 127, 130, 128, 130, 0, - 0, 0, 0, 0, 129, 0, 0, 0, 130, 131, - 131, 131, 128, 132, 132, 132, 0, 128, 0, 129, - 133, 133, 133, 130, 129, 131, 0, 131, 130, 132, - 0, 132, 0, 0, 132, 0, 133, 131, 133, 0, - 0, 132, 0, 0, 133, 0, 0, 0, 133, 134, - 134, 134, 131, 0, 0, 0, 132, 131, 0, 0, - 0, 132, 0, 133, 134, 134, 0, 134, 133, 0, - - 135, 135, 135, 136, 136, 136, 0, 134, 0, 0, - 135, 0, 0, 0, 0, 0, 135, 136, 135, 136, - 0, 136, 134, 0, 0, 0, 0, 134, 135, 0, - 0, 136, 0, 0, 137, 137, 137, 0, 0, 0, - 0, 0, 0, 135, 0, 0, 136, 0, 135, 0, - 137, 136, 137, 137, 0, 138, 138, 138, 139, 139, - 139, 0, 137, 0, 0, 0, 0, 138, 0, 0, - 0, 138, 0, 138, 139, 0, 139, 137, 139, 140, - 140, 140, 137, 138, 0, 0, 139, 0, 0, 0, - 0, 0, 0, 0, 0, 140, 0, 140, 138, 0, - - 0, 139, 0, 138, 0, 0, 139, 140, 141, 141, - 141, 141, 0, 0, 150, 150, 150, 151, 151, 151, - 0, 0, 140, 140, 141, 150, 141, 140, 0, 0, - 150, 0, 150, 151, 0, 151, 141, 0, 0, 0, - 0, 0, 150, 0, 0, 151, 0, 0, 152, 152, - 152, 141, 0, 0, 0, 0, 141, 150, 0, 0, - 151, 0, 150, 0, 152, 151, 152, 153, 153, 153, - 154, 154, 154, 0, 0, 0, 152, 0, 0, 0, - 0, 154, 152, 153, 0, 153, 154, 0, 154, 0, - 0, 152, 0, 0, 0, 153, 152, 153, 154, 0, - - 0, 155, 155, 155, 156, 156, 156, 0, 0, 0, - 153, 0, 0, 154, 0, 153, 0, 155, 154, 155, - 156, 0, 156, 157, 157, 157, 0, 0, 156, 155, - 0, 0, 156, 0, 0, 155, 0, 0, 0, 157, - 0, 157, 0, 0, 155, 0, 0, 156, 0, 155, - 0, 157, 156, 0, 158, 158, 158, 157, 159, 159, - 159, 159, 169, 169, 169, 0, 157, 0, 0, 0, - 158, 157, 158, 158, 159, 0, 159, 0, 169, 0, - 169, 0, 158, 0, 0, 0, 159, 0, 0, 0, - 169, 170, 170, 170, 0, 0, 169, 158, 0, 0, - - 0, 159, 158, 170, 0, 169, 159, 170, 0, 170, - 169, 0, 171, 171, 171, 172, 172, 172, 0, 170, - 0, 0, 0, 171, 0, 0, 0, 0, 171, 0, - 171, 172, 0, 172, 170, 0, 173, 173, 173, 170, - 171, 0, 0, 172, 0, 0, 173, 0, 0, 174, - 174, 174, 173, 0, 173, 171, 0, 0, 172, 0, - 171, 0, 0, 172, 173, 174, 0, 174, 0, 0, - 0, 175, 175, 175, 0, 0, 0, 174, 0, 173, - 176, 176, 176, 0, 173, 175, 0, 175, 0, 175, - 0, 0, 174, 184, 184, 184, 176, 174, 176, 175, - - 0, 0, 185, 185, 185, 184, 0, 0, 176, 184, - 0, 184, 0, 0, 175, 186, 186, 186, 185, 175, - 185, 184, 185, 176, 187, 187, 187, 0, 176, 0, - 185, 186, 0, 186, 0, 0, 184, 0, 0, 187, - 187, 184, 187, 186, 0, 185, 188, 188, 188, 0, - 185, 0, 187, 191, 191, 191, 0, 188, 186, 0, - 0, 0, 188, 186, 188, 0, 0, 187, 191, 191, - 0, 191, 187, 0, 188, 192, 192, 192, 0, 0, - 0, 191, 193, 193, 193, 0, 0, 0, 0, 188, - 0, 192, 0, 192, 188, 0, 191, 192, 193, 0, - - 193, 191, 0, 192, 193, 0, 194, 194, 194, 0, - 193, 0, 0, 194, 0, 197, 197, 197, 192, 198, - 198, 198, 194, 192, 194, 193, 0, 0, 0, 0, - 193, 197, 197, 197, 194, 198, 0, 198, 0, 0, - 0, 0, 0, 197, 0, 0, 0, 198, 0, 194, - 199, 199, 199, 0, 194, 0, 0, 0, 197, 200, - 200, 200, 198, 197, 0, 0, 199, 198, 199, 200, - 0, 0, 201, 201, 201, 200, 0, 200, 199, 0, - 0, 0, 0, 201, 0, 0, 0, 200, 201, 0, - 201, 0, 0, 199, 202, 202, 202, 0, 199, 0, - - 201, 202, 200, 203, 203, 203, 0, 200, 0, 0, - 202, 0, 202, 0, 203, 201, 204, 204, 204, 203, - 201, 203, 202, 0, 0, 205, 205, 205, 0, 0, - 0, 203, 204, 0, 204, 0, 0, 202, 206, 206, - 206, 205, 202, 205, 204, 0, 203, 0, 0, 205, - 0, 203, 0, 205, 206, 0, 206, 0, 0, 204, - 206, 207, 207, 207, 204, 0, 206, 0, 205, 208, - 208, 208, 0, 205, 0, 0, 0, 207, 0, 207, - 0, 206, 209, 209, 209, 208, 206, 208, 0, 207, - 0, 0, 208, 0, 0, 0, 0, 208, 209, 0, - - 209, 0, 0, 0, 207, 0, 0, 0, 0, 207, - 209, 0, 208, 0, 0, 0, 0, 208, 0, 0, - 0, 0, 0, 0, 0, 209, 0, 0, 0, 0, - 209, 211, 211, 211, 213, 0, 213, 214, 0, 214, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - - 210, 210, 210, 210, 210, 210, 210 - } ; - -static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; -static char *yy_full_match; -static int yy_lp; -#define REJECT \ -{ \ -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \ -yy_cp = yy_full_match; /* restore poss. backed-over text */ \ -++yy_lp; \ -goto find_rule; \ -} -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#line 1 "/home/drepper/gnu/elfutils/src/ldlex.l" -#define INITIAL 0 -#line 2 "/home/drepper/gnu/elfutils/src/ldlex.l" -/* Copyright (C) 2001, 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <ctype.h> -#include <elf.h> -#include <error.h> -#include <inttypes.h> -#include <libintl.h> -#include <stdbool.h> -#include <stdio.h> -#include <string.h> - -#include <system.h> -#include <ld.h> -#include "ldscript.h" - -/* We sure use no threads to read the stream, so use the _unlocked - variants of the functions. */ -#undef getc -#define getc(s) getc_unlocked (s) -#undef ferror -#define ferror(s) ferror_unlocked (s) -#undef fread -#define fread(b, m, n, s) fread_unlocked (b, m, n, s) -#undef fwrite -#define fwrite(b, m, n, s) fwrite_unlocked (b, m, n, s) - -/* Defined in ld.c. */ -extern int ld_scan_version_script; - -#define MAX_PREPDEPTH 20 -static enum prepstate -{ - prep_normal, - skip_if, - skip_to_endif -} prepstate[MAX_PREPDEPTH]; -static int prepdepth; - -static void eat_comment (void); -static void eat_to_eol (bool empty); -static int attrib_convert (int c); -static void push_state (enum prepstate); -static int pop_state (void); -static int handle_ifdef (void); -static void invalid_char (int ch); -#define YY_NEVER_INTERACTIVE 1 -#define IGNORE 1 - -#line 1061 "ldlex.c" - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap YY_PROTO(( void )); -#else -extern int yywrap YY_PROTO(( void )); -#endif -#endif - -#ifndef YY_NO_UNPUT -static void yyunput YY_PROTO(( int c, char *buf_ptr )); -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen YY_PROTO(( yyconst char * )); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput YY_PROTO(( void )); -#else -static int input YY_PROTO(( void )); -#endif -#endif - -#if YY_STACK_USED -static int yy_start_stack_ptr = 0; -static int yy_start_stack_depth = 0; -static int *yy_start_stack = 0; -#ifndef YY_NO_PUSH_STATE -static void yy_push_state YY_PROTO(( int new_state )); -#endif -#ifndef YY_NO_POP_STATE -static void yy_pop_state YY_PROTO(( void )); -#endif -#ifndef YY_NO_TOP_STATE -static int yy_top_state YY_PROTO(( void )); -#endif - -#else -#define YY_NO_PUSH_STATE 1 -#define YY_NO_POP_STATE 1 -#define YY_NO_TOP_STATE 1 -#endif - -#ifdef YY_MALLOC_DECL -YY_MALLOC_DECL -#else -#if __STDC__ -#ifndef __cplusplus -#include <stdlib.h> -#endif -#else -/* Just try to get by without declaring the routines. This will fail - * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) - * or sizeof(void*) != sizeof(int). - */ -#endif -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#define YY_READ_BUF_SIZE 8192 -#endif - -/* Copy whatever the last rule matched to the standard output. */ - -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( yy_current_buffer->yy_is_interactive ) \ - { \ - int c = '*', n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ - && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL int yylex YY_PROTO(( void )) -#endif - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - if ( yyleng > 0 ) \ - yy_current_buffer->yy_at_bol = \ - (yytext[yyleng - 1] == '\n'); \ - YY_USER_ACTION - -YY_DECL - { - register yy_state_type yy_current_state; - register char *yy_cp = NULL, *yy_bp = NULL; - register int yy_act; - -#line 79 "/home/drepper/gnu/elfutils/src/ldlex.l" - - if (unlikely (ld_scan_version_script)) - { - ld_scan_version_script = -1; - return kVERSION_SCRIPT; - } - -#line 1223 "ldlex.c" - - if ( yy_init ) - { - yy_init = 0; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! yy_start ) - yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! yy_current_buffer ) - yy_current_buffer = - yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_load_buffer_state(); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yy_start; - yy_current_state += YY_AT_BOL(); - yy_state_ptr = yy_state_buf; - *yy_state_ptr++ = yy_current_state; -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 211 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - *yy_state_ptr++ = yy_current_state; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 2141 ); - -yy_find_action: - yy_current_state = *--yy_state_ptr; - yy_lp = yy_accept[yy_current_state]; -find_rule: /* we branch to this label when backing up */ - for ( ; ; ) /* until we find what rule we matched */ - { - if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] ) - { - yy_act = yy_acclist[yy_lp]; - { - yy_full_match = yy_cp; - break; - } - } - --yy_cp; - yy_current_state = *--yy_state_ptr; - yy_lp = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - - if ( yy_act != YY_END_OF_BUFFER ) - { - int yyl; - for ( yyl = 0; yyl < yyleng; ++yyl ) - if ( yytext[yyl] == '\n' ) - ++yylineno; - } - -do_action: /* This label is used only to access EOF actions. */ - - - switch ( yy_act ) - { /* beginning of action switch */ -case 1: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 6; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 86 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ BEGIN (handle_ifdef ()); } - YY_BREAK -case 2: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 5; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 87 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ eat_to_eol (true); - push_state (skip_to_endif); - BEGIN (IGNORE); } - YY_BREAK -case 3: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 8; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 90 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ eat_to_eol (false); - push_state (skip_to_endif); - BEGIN (IGNORE); } - YY_BREAK -case 4: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 6; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 93 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ eat_to_eol (true) ; } - YY_BREAK -case 5: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 6; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 95 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ eat_to_eol (false); - push_state (skip_to_endif); } - YY_BREAK -case 6: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 5; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 97 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ eat_to_eol (true); - assert (prepdepth > 0); - if (prepstate[prepdepth - 1] == skip_if) - { - /* Back to normal processing. */ - assert (prepdepth == 1); - BEGIN (pop_state ()); - } - } - YY_BREAK -case 7: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 8; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 106 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ assert (prepdepth > 0); - if (prepstate[prepdepth - 1] == skip_if) - { - /* Maybe this symbol is defined. */ - pop_state (); - BEGIN (handle_ifdef ()); - } - } - YY_BREAK -case 8: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 6; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 114 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ eat_to_eol (true); - BEGIN (pop_state ()); } - YY_BREAK -case 9: -YY_RULE_SETUP -#line 116 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ /* nothing */ } - YY_BREAK -case 10: -YY_RULE_SETUP -#line 119 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ eat_comment (); } - YY_BREAK -case 11: -YY_RULE_SETUP -#line 121 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return kALIGN; } - YY_BREAK -case 12: -YY_RULE_SETUP -#line 122 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return kENTRY; } - YY_BREAK -case 13: -YY_RULE_SETUP -#line 123 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return kEXCLUDE_FILE; } - YY_BREAK -case 14: -YY_RULE_SETUP -#line 124 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return kGLOBAL; } - YY_BREAK -case 15: -YY_RULE_SETUP -#line 125 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return kGROUP; } - YY_BREAK -case 16: -YY_RULE_SETUP -#line 126 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return kINPUT; } - YY_BREAK -case 17: -YY_RULE_SETUP -#line 127 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return kINTERP; } - YY_BREAK -case 18: -YY_RULE_SETUP -#line 128 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return kKEEP; } - YY_BREAK -case 19: -YY_RULE_SETUP -#line 129 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return kLOCAL; } - YY_BREAK -case 20: -YY_RULE_SETUP -#line 130 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return kOUTPUT_FORMAT; } - YY_BREAK -case 21: -YY_RULE_SETUP -#line 131 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return kPAGESIZE; } - YY_BREAK -case 22: -YY_RULE_SETUP -#line 132 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return kPROVIDE; } - YY_BREAK -case 23: -YY_RULE_SETUP -#line 133 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return kSEARCH_DIR; } - YY_BREAK -case 24: -YY_RULE_SETUP -#line 134 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return kSEGMENT; } - YY_BREAK -case 25: -YY_RULE_SETUP -#line 135 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return kSIZEOF_HEADERS; } - YY_BREAK -case 26: -YY_RULE_SETUP -#line 136 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return kSORT; } - YY_BREAK -case 27: -YY_RULE_SETUP -#line 137 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return kVERSION; } - YY_BREAK -case 28: -YY_RULE_SETUP -#line 139 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ int cnt = 1 ; - ldlval.num = 0; - while (cnt < yyleng - 1) - ldlval.num |= attrib_convert (yytext[cnt++]); - return kMODE; } - YY_BREAK -case 29: -YY_RULE_SETUP -#line 145 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return '{'; } - YY_BREAK -case 30: -YY_RULE_SETUP -#line 146 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return '}'; } - YY_BREAK -case 31: -YY_RULE_SETUP -#line 147 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return '('; } - YY_BREAK -case 32: -YY_RULE_SETUP -#line 148 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return ')'; } - YY_BREAK -case 33: -YY_RULE_SETUP -#line 149 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return ':'; } - YY_BREAK -case 34: -YY_RULE_SETUP -#line 150 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return ';'; } - YY_BREAK -case 35: -YY_RULE_SETUP -#line 151 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return '='; } - YY_BREAK -case 36: -YY_RULE_SETUP -#line 152 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ ldlval.op = exp_plus; return kADD_OP; } - YY_BREAK -case 37: -YY_RULE_SETUP -#line 153 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ ldlval.op = exp_minus; return kADD_OP; } - YY_BREAK -case 38: -YY_RULE_SETUP -#line 154 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return '*'; } - YY_BREAK -case 39: -YY_RULE_SETUP -#line 155 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ ldlval.op = exp_div; return kMUL_OP; } - YY_BREAK -case 40: -YY_RULE_SETUP -#line 156 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ ldlval.op = exp_mod; return kMUL_OP; } - YY_BREAK -case 41: -YY_RULE_SETUP -#line 157 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return '&'; } - YY_BREAK -case 42: -YY_RULE_SETUP -#line 158 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return '|'; } - YY_BREAK -case 43: -YY_RULE_SETUP -#line 160 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ return ','; } - YY_BREAK -case 44: -YY_RULE_SETUP -#line 162 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ char *endp; - ldlval.num = strtoumax (yytext, &endp, 0); - if (*endp != '\0') - { - if (tolower (*endp) == 'k') - ldlval.num *= 1024; - else - { - assert (tolower (*endp) == 'm'); - ldlval.num *= 1024 * 1024; - } - } - return kNUM; } - YY_BREAK -case 45: -YY_RULE_SETUP -#line 176 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ ldlval.str = obstack_strndup (&ld_state.smem, - yytext, yyleng); - return kID; } - YY_BREAK -case 46: -YY_RULE_SETUP -#line 180 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ ldlval.str = obstack_strndup (&ld_state.smem, - yytext, yyleng); - return kFILENAME; } - YY_BREAK -case 47: -YY_RULE_SETUP -#line 184 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ /* IGNORE */ } - YY_BREAK -case 48: -YY_RULE_SETUP -#line 186 "/home/drepper/gnu/elfutils/src/ldlex.l" -{ invalid_char (*yytext); } - YY_BREAK -case 49: -YY_RULE_SETUP -#line 188 "/home/drepper/gnu/elfutils/src/ldlex.l" -ECHO; - YY_BREAK -#line 1625 "ldlex.c" - case YY_STATE_EOF(INITIAL): - case YY_STATE_EOF(IGNORE): - yyterminate(); - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = yy_hold_char; - YY_RESTORE_YY_MORE_OFFSET - - if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between yy_current_buffer and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yy_n_chars = yy_current_buffer->yy_n_chars; - yy_current_buffer->yy_input_file = yyin; - yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = yytext_ptr + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++yy_c_buf_p; - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = yy_c_buf_p; - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer() ) - { - case EOB_ACT_END_OF_FILE: - { - yy_did_buffer_switch_on_eof = 0; - - if ( yywrap() ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = - yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yy_c_buf_p = - &yy_current_buffer->yy_ch_buf[yy_n_chars]; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ - } /* end of yylex */ - - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ - -static int yy_get_next_buffer() - { - register char *dest = yy_current_buffer->yy_ch_buf; - register char *source = yytext_ptr; - register int number_to_move, i; - int ret_val; - - if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( yy_current_buffer->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - yy_current_buffer->yy_n_chars = yy_n_chars = 0; - - else - { - int num_to_read = - yy_current_buffer->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ -#ifdef YY_USES_REJECT - YY_FATAL_ERROR( -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); -#else - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = yy_current_buffer; - - int yy_c_buf_p_offset = - (int) (yy_c_buf_p - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - yy_flex_realloc( (void *) b->yy_ch_buf, - b->yy_buf_size + 2 ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = yy_current_buffer->yy_buf_size - - number_to_move - 1; -#endif - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), - yy_n_chars, num_to_read ); - - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - if ( yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - yy_current_buffer->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - yy_n_chars += number_to_move; - yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; - yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yytext_ptr = &yy_current_buffer->yy_ch_buf[0]; - - return ret_val; - } - - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - -static yy_state_type yy_get_previous_state() - { - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = yy_start; - yy_current_state += YY_AT_BOL(); - yy_state_ptr = yy_state_buf; - *yy_state_ptr++ = yy_current_state; - - for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 211 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - *yy_state_ptr++ = yy_current_state; - } - - return yy_current_state; - } - - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - -#ifdef YY_USE_PROTOS -static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) -#else -static yy_state_type yy_try_NUL_trans( yy_current_state ) -yy_state_type yy_current_state; -#endif - { - register int yy_is_jam; - - register YY_CHAR yy_c = 1; - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 211 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 210); - if ( ! yy_is_jam ) - *yy_state_ptr++ = yy_current_state; - - return yy_is_jam ? 0 : yy_current_state; - } - - -#ifndef YY_NO_UNPUT -#ifdef YY_USE_PROTOS -static void yyunput( int c, register char *yy_bp ) -#else -static void yyunput( c, yy_bp ) -int c; -register char *yy_bp; -#endif - { - register char *yy_cp = yy_c_buf_p; - - /* undo effects of setting up yytext */ - *yy_cp = yy_hold_char; - - if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - register int number_to_move = yy_n_chars + 2; - register char *dest = &yy_current_buffer->yy_ch_buf[ - yy_current_buffer->yy_buf_size + 2]; - register char *source = - &yy_current_buffer->yy_ch_buf[number_to_move]; - - while ( source > yy_current_buffer->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - yy_current_buffer->yy_n_chars = - yy_n_chars = yy_current_buffer->yy_buf_size; - - if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - if ( c == '\n' ) - --yylineno; - - yytext_ptr = yy_bp; - yy_hold_char = *yy_cp; - yy_c_buf_p = yy_cp; - } -#endif /* ifndef YY_NO_UNPUT */ - - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput() -#else -static int input() -#endif - { - int c; - - *yy_c_buf_p = yy_hold_char; - - if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) - /* This was really a NUL. */ - *yy_c_buf_p = '\0'; - - else - { /* need more input */ - int offset = yy_c_buf_p - yytext_ptr; - ++yy_c_buf_p; - - switch ( yy_get_next_buffer() ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - yyrestart( yyin ); - - /* fall through */ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap() ) - return EOF; - - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = yytext_ptr + offset; - break; - } - } - } - - c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */ - *yy_c_buf_p = '\0'; /* preserve yytext */ - yy_hold_char = *++yy_c_buf_p; - - yy_current_buffer->yy_at_bol = (c == '\n'); - if ( yy_current_buffer->yy_at_bol ) - ++yylineno; - - return c; - } -#endif /* YY_NO_INPUT */ - -#ifdef YY_USE_PROTOS -void yyrestart( FILE *input_file ) -#else -void yyrestart( input_file ) -FILE *input_file; -#endif - { - if ( ! yy_current_buffer ) - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_init_buffer( yy_current_buffer, input_file ); - yy_load_buffer_state(); - } - - -#ifdef YY_USE_PROTOS -void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) -#else -void yy_switch_to_buffer( new_buffer ) -YY_BUFFER_STATE new_buffer; -#endif - { - if ( yy_current_buffer == new_buffer ) - return; - - if ( yy_current_buffer ) - { - /* Flush out information for old buffer. */ - *yy_c_buf_p = yy_hold_char; - yy_current_buffer->yy_buf_pos = yy_c_buf_p; - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - yy_current_buffer = new_buffer; - yy_load_buffer_state(); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - yy_did_buffer_switch_on_eof = 1; - } - - -#ifdef YY_USE_PROTOS -void yy_load_buffer_state( void ) -#else -void yy_load_buffer_state() -#endif - { - yy_n_chars = yy_current_buffer->yy_n_chars; - yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; - yyin = yy_current_buffer->yy_input_file; - yy_hold_char = *yy_c_buf_p; - } - - -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) -#else -YY_BUFFER_STATE yy_create_buffer( file, size ) -FILE *file; -int size; -#endif - { - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; - } - - -#ifdef YY_USE_PROTOS -void yy_delete_buffer( YY_BUFFER_STATE b ) -#else -void yy_delete_buffer( b ) -YY_BUFFER_STATE b; -#endif - { - if ( ! b ) - return; - - if ( b == yy_current_buffer ) - yy_current_buffer = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yy_flex_free( (void *) b->yy_ch_buf ); - - yy_flex_free( (void *) b ); - } - - - -#ifdef YY_USE_PROTOS -void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) -#else -void yy_init_buffer( b, file ) -YY_BUFFER_STATE b; -FILE *file; -#endif - - - { - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - -#if YY_ALWAYS_INTERACTIVE - b->yy_is_interactive = 1; -#else -#if YY_NEVER_INTERACTIVE - b->yy_is_interactive = 0; -#else - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; -#endif -#endif - } - - -#ifdef YY_USE_PROTOS -void yy_flush_buffer( YY_BUFFER_STATE b ) -#else -void yy_flush_buffer( b ) -YY_BUFFER_STATE b; -#endif - - { - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == yy_current_buffer ) - yy_load_buffer_state(); - } - - -#ifndef YY_NO_SCAN_BUFFER -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) -#else -YY_BUFFER_STATE yy_scan_buffer( base, size ) -char *base; -yy_size_t size; -#endif - { - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer( b ); - - return b; - } -#endif - - -#ifndef YY_NO_SCAN_STRING -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) -#else -YY_BUFFER_STATE yy_scan_string( yy_str ) -yyconst char *yy_str; -#endif - { - int len; - for ( len = 0; yy_str[len]; ++len ) - ; - - return yy_scan_bytes( yy_str, len ); - } -#endif - - -#ifndef YY_NO_SCAN_BYTES -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) -#else -YY_BUFFER_STATE yy_scan_bytes( bytes, len ) -yyconst char *bytes; -int len; -#endif - { - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) yy_flex_alloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; - } -#endif - - -#ifndef YY_NO_PUSH_STATE -#ifdef YY_USE_PROTOS -static void yy_push_state( int new_state ) -#else -static void yy_push_state( new_state ) -int new_state; -#endif - { - if ( yy_start_stack_ptr >= yy_start_stack_depth ) - { - yy_size_t new_size; - - yy_start_stack_depth += YY_START_STACK_INCR; - new_size = yy_start_stack_depth * sizeof( int ); - - if ( ! yy_start_stack ) - yy_start_stack = (int *) yy_flex_alloc( new_size ); - - else - yy_start_stack = (int *) yy_flex_realloc( - (void *) yy_start_stack, new_size ); - - if ( ! yy_start_stack ) - YY_FATAL_ERROR( - "out of memory expanding start-condition stack" ); - } - - yy_start_stack[yy_start_stack_ptr++] = YY_START; - - BEGIN(new_state); - } -#endif - - -#ifndef YY_NO_POP_STATE -static void yy_pop_state() - { - if ( --yy_start_stack_ptr < 0 ) - YY_FATAL_ERROR( "start-condition stack underflow" ); - - BEGIN(yy_start_stack[yy_start_stack_ptr]); - } -#endif - - -#ifndef YY_NO_TOP_STATE -static int yy_top_state() - { - return yy_start_stack[yy_start_stack_ptr - 1]; - } -#endif - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -#ifdef YY_USE_PROTOS -static void yy_fatal_error( yyconst char msg[] ) -#else -static void yy_fatal_error( msg ) -char msg[]; -#endif - { - (void) fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); - } - - - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - yytext[yyleng] = yy_hold_char; \ - yy_c_buf_p = yytext + n; \ - yy_hold_char = *yy_c_buf_p; \ - *yy_c_buf_p = '\0'; \ - yyleng = n; \ - } \ - while ( 0 ) - - -/* Internal utility routines. */ - -#ifndef yytext_ptr -#ifdef YY_USE_PROTOS -static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) -#else -static void yy_flex_strncpy( s1, s2, n ) -char *s1; -yyconst char *s2; -int n; -#endif - { - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; - } -#endif - -#ifdef YY_NEED_STRLEN -#ifdef YY_USE_PROTOS -static int yy_flex_strlen( yyconst char *s ) -#else -static int yy_flex_strlen( s ) -yyconst char *s; -#endif - { - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; - } -#endif - - -#ifdef YY_USE_PROTOS -static void *yy_flex_alloc( yy_size_t size ) -#else -static void *yy_flex_alloc( size ) -yy_size_t size; -#endif - { - return (void *) malloc( size ); - } - -#ifdef YY_USE_PROTOS -static void *yy_flex_realloc( void *ptr, yy_size_t size ) -#else -static void *yy_flex_realloc( ptr, size ) -void *ptr; -yy_size_t size; -#endif - { - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return (void *) realloc( (char *) ptr, size ); - } - -#ifdef YY_USE_PROTOS -static void yy_flex_free( void *ptr ) -#else -static void yy_flex_free( ptr ) -void *ptr; -#endif - { - free( ptr ); - } - -#if YY_MAIN -int main() - { - yylex(); - return 0; - } -#endif -#line 188 "/home/drepper/gnu/elfutils/src/ldlex.l" - - -static void -eat_comment (void) -{ - while (1) - { - int c = input (); - - while (c != '*' && c != EOF) - c = input (); - - if (c == '*') - { - c = input (); - while (c == '*') - c = input (); - if (c == '/') - break; - } - - if (c == EOF) - { - /* XXX Use the setjmp buffer and signal EOF in comment */ - error (0, 0, gettext ("EOF in comment")); - break; - } - } -} - - -static void -eat_to_eol (bool empty) -{ - bool warned = false; - - while (1) - { - int c = input (); - - if (c == EOF) - break; - if (c == '\n') - { - ++yylineno; - break; - } - - if (empty && ! isspace (c) && ! warned) - { - error (0, 0, gettext ("%d: garbage at end of line"), yylineno); - warned = true; - } - } -} - - -static int -attrib_convert (int c) -{ - if (c == 'X') - return PF_X; - if (c == 'W') - return PF_W; - assert (c == 'R'); - return PF_R; -} - - -static void -push_state (enum prepstate state) -{ - if (prepdepth >= MAX_PREPDEPTH) - error (EXIT_FAILURE, 0, gettext ("%d: conditionals nested too deep"), - yylineno); - - prepstate[prepdepth++] = state; -} - - -static int -pop_state (void) -{ - if (prepdepth == 0) - error (0, 0, gettext ("%d: unexpected #endif"), yylineno); - else - --prepdepth; - - return prepdepth == 0 ? INITIAL : IGNORE; -} - - -static int -handle_ifdef (void) -{ - char idbuf[50]; - char *id = idbuf; - size_t idlen = 0; - size_t idmax = sizeof (idbuf); - bool ignore_ws = true; - bool defined = false; - int result; - - while (1) - { - int c = input (); - - if (isspace (c) && ignore_ws) - continue; - - if (c != '_' && (c < 'a' || c > 'z') && (c < 'A' || c > 'Z') - && (idlen == 0 || c < '0' || c > '9')) - { - unput (c); - break; - } - - if (idlen == idmax) - { - char *newp = (char *) alloca (idmax *= 2); - id = memcpy (newp, id, idlen); - } - - id[idlen++] = c; - ignore_ws = false; - } - - /* XXX Compare in a better way. */ - if (idlen == 6 && strncmp (id, "SHARED", 6) == 0) - defined = ld_state.file_type == dso_file_type; - - if (defined) - result = INITIAL; - else - { - push_state (skip_if); - result = IGNORE; - } - - return result; -} - - -static void -invalid_char (int ch) -{ - error (0, 0, (isascii (ch) - ? gettext ("invalid character '%c' at line %d; ignored") - : gettext ("invalid character '\\%o' at line %d; ignored")), - ch, yylineno); -} - - -// Local Variables: -// mode: C -// End: diff --git a/src/ldlex.l b/src/ldlex.l deleted file mode 100644 index 06ea6237..00000000 --- a/src/ldlex.l +++ /dev/null @@ -1,343 +0,0 @@ -%{ -/* Copyright (C) 2001, 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <ctype.h> -#include <elf.h> -#include <error.h> -#include <inttypes.h> -#include <libintl.h> -#include <stdbool.h> -#include <stdio.h> -#include <string.h> - -#include <system.h> -#include <ld.h> -#include "ldscript.h" - -/* We sure use no threads to read the stream, so use the _unlocked - variants of the functions. */ -#undef getc -#define getc(s) getc_unlocked (s) -#undef ferror -#define ferror(s) ferror_unlocked (s) -#undef fread -#define fread(b, m, n, s) fread_unlocked (b, m, n, s) -#undef fwrite -#define fwrite(b, m, n, s) fwrite_unlocked (b, m, n, s) - -/* Defined in ld.c. */ -extern int ld_scan_version_script; - -#define MAX_PREPDEPTH 20 -static enum prepstate -{ - prep_normal, - skip_if, - skip_to_endif -} prepstate[MAX_PREPDEPTH]; -static int prepdepth; - -static void eat_comment (void); -static void eat_to_eol (bool empty); -static int attrib_convert (int c); -static void push_state (enum prepstate); -static int pop_state (void); -static int handle_ifdef (void); -static void invalid_char (int ch); -%} - -ID [a-zA-Z0-9_.*?]+ -FILENAMECHAR1 [a-zA-Z0-9_/.\\~] -FILENAMECHAR [^][{}[:space:]():;]+ -HEX 0[xX][0-9a-fA-F]+[kKmM]? -OCT 0[0-7]*[kKmM]? -DEC [0-9]+[kKmM]? -WHITE [[:space:]]+ - -%option yylineno -%option never-interactive -%option noyywrap - -%x IGNORE - -%% - if (unlikely (ld_scan_version_script)) - { - ld_scan_version_script = -1; - return kVERSION_SCRIPT; - } - -^"#"ifdef/[[:space:]] { BEGIN (handle_ifdef ()); } -^"#"else/[[:space:]\n] { eat_to_eol (true); - push_state (skip_to_endif); - BEGIN (IGNORE); } -^"#"elifdef/[[:space:]] { eat_to_eol (false); - push_state (skip_to_endif); - BEGIN (IGNORE); } -^"#"endif/[[:space:]\n] { eat_to_eol (true) ; } - -<IGNORE>^"#"ifdef/[[:space:]\n] { eat_to_eol (false); - push_state (skip_to_endif); } -<IGNORE>^"#"else/[[:space:]\n] { eat_to_eol (true); - assert (prepdepth > 0); - if (prepstate[prepdepth - 1] == skip_if) - { - /* Back to normal processing. */ - assert (prepdepth == 1); - BEGIN (pop_state ()); - } - } -<IGNORE>^"#"elifdef/[[:space:]] { assert (prepdepth > 0); - if (prepstate[prepdepth - 1] == skip_if) - { - /* Maybe this symbol is defined. */ - pop_state (); - BEGIN (handle_ifdef ()); - } - } -<IGNORE>^"#"endif/[[:space:]\n] { eat_to_eol (true); - BEGIN (pop_state ()); } -<IGNORE>.|\n { /* nothing */ } - - -"/*" { eat_comment (); } - -ALIGN { return kALIGN; } -ENTRY { return kENTRY; } -EXCLUDE_FILE { return kEXCLUDE_FILE; } -"global:" { return kGLOBAL; } -GROUP { return kGROUP; } -INPUT { return kINPUT; } -INTERP { return kINTERP; } -KEEP { return kKEEP; } -"local:" { return kLOCAL; } -OUTPUT_FORMAT { return kOUTPUT_FORMAT; } -PAGESIZE { return kPAGESIZE; } -PROVIDE { return kPROVIDE; } -SEARCH_DIR { return kSEARCH_DIR; } -SEGMENT { return kSEGMENT; } -SIZEOF_HEADERS { return kSIZEOF_HEADERS; } -SORT { return kSORT; } -VERSION { return kVERSION; } - -"["([RWX]){0,3}"]" { int cnt = 1 ; - ldlval.num = 0; - while (cnt < yyleng - 1) - ldlval.num |= attrib_convert (yytext[cnt++]); - return kMODE; } - -"{" { return '{'; } -"}" { return '}'; } -"(" { return '('; } -")" { return ')'; } -":" { return ':'; } -";" { return ';'; } -"=" { return '='; } -"+" { ldlval.op = exp_plus; return kADD_OP; } -"-" { ldlval.op = exp_minus; return kADD_OP; } -"*" { return '*'; } -"/" { ldlval.op = exp_div; return kMUL_OP; } -"%" { ldlval.op = exp_mod; return kMUL_OP; } -"&" { return '&'; } -"|" { return '|'; } - -"," { return ','; } - -{HEX}|{OCT}|{DEC} { char *endp; - ldlval.num = strtoumax (yytext, &endp, 0); - if (*endp != '\0') - { - if (tolower (*endp) == 'k') - ldlval.num *= 1024; - else - { - assert (tolower (*endp) == 'm'); - ldlval.num *= 1024 * 1024; - } - } - return kNUM; } - -{ID} { ldlval.str = obstack_strndup (&ld_state.smem, - yytext, yyleng); - return kID; } - -{FILENAMECHAR1}{FILENAMECHAR} { ldlval.str = obstack_strndup (&ld_state.smem, - yytext, yyleng); - return kFILENAME; } - -{WHITE} { /* IGNORE */ } - -. { invalid_char (*yytext); } - -%% - -static void -eat_comment (void) -{ - while (1) - { - int c = input (); - - while (c != '*' && c != EOF) - c = input (); - - if (c == '*') - { - c = input (); - while (c == '*') - c = input (); - if (c == '/') - break; - } - - if (c == EOF) - { - /* XXX Use the setjmp buffer and signal EOF in comment */ - error (0, 0, gettext ("EOF in comment")); - break; - } - } -} - - -static void -eat_to_eol (bool empty) -{ - bool warned = false; - - while (1) - { - int c = input (); - - if (c == EOF) - break; - if (c == '\n') - { - ++yylineno; - break; - } - - if (empty && ! isspace (c) && ! warned) - { - error (0, 0, gettext ("%d: garbage at end of line"), yylineno); - warned = true; - } - } -} - - -static int -attrib_convert (int c) -{ - if (c == 'X') - return PF_X; - if (c == 'W') - return PF_W; - assert (c == 'R'); - return PF_R; -} - - -static void -push_state (enum prepstate state) -{ - if (prepdepth >= MAX_PREPDEPTH) - error (EXIT_FAILURE, 0, gettext ("%d: conditionals nested too deep"), - yylineno); - - prepstate[prepdepth++] = state; -} - - -static int -pop_state (void) -{ - if (prepdepth == 0) - error (0, 0, gettext ("%d: unexpected #endif"), yylineno); - else - --prepdepth; - - return prepdepth == 0 ? INITIAL : IGNORE; -} - - -static int -handle_ifdef (void) -{ - char idbuf[50]; - char *id = idbuf; - size_t idlen = 0; - size_t idmax = sizeof (idbuf); - bool ignore_ws = true; - bool defined = false; - int result; - - while (1) - { - int c = input (); - - if (isspace (c) && ignore_ws) - continue; - - if (c != '_' && (c < 'a' || c > 'z') && (c < 'A' || c > 'Z') - && (idlen == 0 || c < '0' || c > '9')) - { - unput (c); - break; - } - - if (idlen == idmax) - { - char *newp = (char *) alloca (idmax *= 2); - id = memcpy (newp, id, idlen); - } - - id[idlen++] = c; - ignore_ws = false; - } - - /* XXX Compare in a better way. */ - if (idlen == 6 && strncmp (id, "SHARED", 6) == 0) - defined = ld_state.file_type == dso_file_type; - - if (defined) - result = INITIAL; - else - { - push_state (skip_if); - result = IGNORE; - } - - return result; -} - - -static void -invalid_char (int ch) -{ - error (0, 0, (isascii (ch) - ? gettext ("invalid character '%c' at line %d; ignored") - : gettext ("invalid character '\\%o' at line %d; ignored")), - ch, yylineno); -} - - -// Local Variables: -// mode: C -// End: diff --git a/src/ldscript.c b/src/ldscript.c deleted file mode 100644 index 0f70ca95..00000000 --- a/src/ldscript.c +++ /dev/null @@ -1,2220 +0,0 @@ -/* A Bison parser, made by GNU Bison 1.875c. */ - -/* Skeleton parser for Yacc-like parsing with Bison, - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -/* As a special exception, when this file is copied by Bison into a - Bison output file, you may use that output file without restriction. - This special exception was added by the Free Software Foundation - in version 1.24 of Bison. */ - -/* Written by Richard Stallman by simplifying the original so called - ``semantic'' parser. */ - -/* All symbols defined below should begin with yy or YY, to avoid - infringing on user name space. This should be done even for local - variables, as they might otherwise be expanded by user macros. - There are some unavoidable exceptions within include files to - define necessary library symbols; they are noted "INFRINGES ON - USER NAME SPACE" below. */ - -/* Identify Bison output. */ -#define YYBISON 1 - -/* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" - -/* Pure parsers. */ -#define YYPURE 0 - -/* Using locations. */ -#define YYLSP_NEEDED 0 - -/* If NAME_PREFIX is specified substitute the variables and functions - names. */ -#define yyparse ldparse -#define yylex ldlex -#define yyerror lderror -#define yylval ldlval -#define yychar ldchar -#define yydebug lddebug -#define yynerrs ldnerrs - - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - kADD_OP = 258, - kALIGN = 259, - kENTRY = 260, - kEXCLUDE_FILE = 261, - kFILENAME = 262, - kGLOBAL = 263, - kGROUP = 264, - kID = 265, - kINPUT = 266, - kINTERP = 267, - kKEEP = 268, - kLOCAL = 269, - kMODE = 270, - kMUL_OP = 271, - kNUM = 272, - kOUTPUT_FORMAT = 273, - kPAGESIZE = 274, - kPROVIDE = 275, - kSEARCH_DIR = 276, - kSEGMENT = 277, - kSIZEOF_HEADERS = 278, - kSORT = 279, - kVERSION = 280, - kVERSION_SCRIPT = 281, - ADD_OP = 282, - MUL_OP = 283 - }; -#endif -#define kADD_OP 258 -#define kALIGN 259 -#define kENTRY 260 -#define kEXCLUDE_FILE 261 -#define kFILENAME 262 -#define kGLOBAL 263 -#define kGROUP 264 -#define kID 265 -#define kINPUT 266 -#define kINTERP 267 -#define kKEEP 268 -#define kLOCAL 269 -#define kMODE 270 -#define kMUL_OP 271 -#define kNUM 272 -#define kOUTPUT_FORMAT 273 -#define kPAGESIZE 274 -#define kPROVIDE 275 -#define kSEARCH_DIR 276 -#define kSEGMENT 277 -#define kSIZEOF_HEADERS 278 -#define kSORT 279 -#define kVERSION 280 -#define kVERSION_SCRIPT 281 -#define ADD_OP 282 -#define MUL_OP 283 - - - - -/* Copy the first part of user declarations. */ -#line 1 "/home/drepper/gnu/elfutils/src/ldscript.y" - -/* Parser for linker scripts. - Copyright (C) 2001, 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <error.h> -#include <libintl.h> -#include <stdbool.h> -#include <stdint.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include <system.h> -#include <ld.h> - -/* The error handler. */ -static void yyerror (const char *s); - -/* Some helper functions we need to construct the data structures - describing information from the file. */ -static struct expression *new_expr (int tag); -static struct input_section_name *new_input_section_name (const char *name, - bool sort_flag); -static struct input_rule *new_input_rule (int tag); -static struct output_rule *new_output_rule (int tag); -static struct assignment *new_assignment (const char *variable, - struct expression *expression, - bool provide_flag); -static void new_segment (int mode, struct output_rule *output_rule); -static struct filename_list *new_filename_listelem (const char *string); -static void add_inputfiles (struct filename_list *fnames); -static struct id_list *new_id_listelem (const char *str); -static struct version *new_version (struct id_list *local, - struct id_list *global); -static struct version *merge_versions (struct version *one, - struct version *two); -static void add_versions (struct version *versions); - -extern int yylex (void); - - -/* Enabling traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - -#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 58 "/home/drepper/gnu/elfutils/src/ldscript.y" -typedef union YYSTYPE { - uintmax_t num; - enum expression_tag op; - char *str; - struct expression *expr; - struct input_section_name *sectionname; - struct filemask_section_name *filemask_section_name; - struct input_rule *input_rule; - struct output_rule *output_rule; - struct assignment *assignment; - struct filename_list *filename_list; - struct version *version; - struct id_list *id_list; -} YYSTYPE; -/* Line 191 of yacc.c. */ -#line 213 "ldscript.c" -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 -#endif - - - -/* Copy the second part of user declarations. */ - - -/* Line 214 of yacc.c. */ -#line 225 "ldscript.c" - -#if ! defined (yyoverflow) || YYERROR_VERBOSE - -# ifndef YYFREE -# define YYFREE free -# endif -# ifndef YYMALLOC -# define YYMALLOC malloc -# endif - -/* The parser invokes alloca or malloc; define the necessary symbols. */ - -# ifdef YYSTACK_USE_ALLOCA -# if YYSTACK_USE_ALLOCA -# define YYSTACK_ALLOC alloca -# endif -# else -# if defined (alloca) || defined (_ALLOCA_H) -# define YYSTACK_ALLOC alloca -# else -# ifdef __GNUC__ -# define YYSTACK_ALLOC __builtin_alloca -# endif -# endif -# endif - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) -# else -# if defined (__STDC__) || defined (__cplusplus) -# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# endif -# define YYSTACK_ALLOC YYMALLOC -# define YYSTACK_FREE YYFREE -# endif -#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ - - -#if (! defined (yyoverflow) \ - && (! defined (__cplusplus) \ - || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - short yyss; - YYSTYPE yyvs; - }; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (short) + sizeof (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM) - -/* Copy COUNT objects from FROM to TO. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined (__GNUC__) && 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -# else -# define YYCOPY(To, From, Count) \ - do \ - { \ - register YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ - while (0) -# endif -# endif - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack, Stack, yysize); \ - Stack = &yyptr->Stack; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) - -#endif - -#if defined (__STDC__) || defined (__cplusplus) - typedef signed char yysigned_char; -#else - typedef short yysigned_char; -#endif - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL 30 -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 198 - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 39 -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 22 -/* YYNRULES -- Number of rules. */ -#define YYNRULES 62 -/* YYNRULES -- Number of states. */ -#define YYNSTATES 146 - -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ -#define YYUNDEFTOK 2 -#define YYMAXUTOK 283 - -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const unsigned char yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 28, 2, - 32, 33, 30, 2, 38, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 34, - 2, 37, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 35, 27, 36, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 29, 31 -}; - -#if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const unsigned char yyprhs[] = -{ - 0, 0, 3, 5, 8, 11, 13, 19, 25, 31, - 37, 43, 49, 54, 59, 64, 69, 72, 74, 77, - 82, 85, 89, 96, 99, 101, 103, 108, 111, 117, - 119, 124, 129, 130, 135, 139, 143, 147, 151, 155, - 159, 161, 163, 165, 167, 171, 173, 175, 176, 179, - 181, 186, 192, 199, 202, 204, 207, 210, 214, 217, - 219, 221, 223 -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const yysigned_char yyrhs[] = -{ - 40, 0, -1, 41, -1, 26, 54, -1, 41, 42, - -1, 42, -1, 5, 32, 10, 33, 34, -1, 21, - 32, 59, 33, 34, -1, 19, 32, 17, 33, 34, - -1, 12, 32, 59, 33, 34, -1, 22, 15, 35, - 43, 36, -1, 22, 1, 35, 43, 36, -1, 9, - 32, 52, 33, -1, 11, 32, 52, 33, -1, 25, - 35, 54, 36, -1, 18, 32, 59, 33, -1, 43, - 44, -1, 44, -1, 45, 34, -1, 10, 35, 46, - 36, -1, 10, 34, -1, 10, 37, 51, -1, 20, - 32, 10, 37, 51, 33, -1, 46, 47, -1, 47, - -1, 48, -1, 13, 32, 48, 33, -1, 45, 34, - -1, 60, 32, 50, 49, 33, -1, 10, -1, 24, - 32, 10, 33, -1, 6, 32, 59, 33, -1, -1, - 4, 32, 51, 33, -1, 32, 51, 33, -1, 51, - 30, 51, -1, 51, 16, 51, -1, 51, 3, 51, - -1, 51, 28, 51, -1, 51, 27, 51, -1, 17, - -1, 10, -1, 23, -1, 19, -1, 52, 53, 59, - -1, 59, -1, 38, -1, -1, 54, 55, -1, 55, - -1, 35, 56, 36, 34, -1, 59, 35, 56, 36, - 34, -1, 59, 35, 56, 36, 59, 34, -1, 56, - 57, -1, 57, -1, 8, 58, -1, 14, 58, -1, - 58, 60, 34, -1, 60, 34, -1, 7, -1, 10, - -1, 59, -1, 30, -1 -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const unsigned short yyrline[] = -{ - 0, 128, 128, 129, 133, 134, 137, 142, 146, 151, - 156, 160, 166, 177, 179, 181, 185, 190, 194, 199, - 211, 235, 237, 241, 246, 250, 255, 262, 269, 280, - 282, 286, 289, 292, 297, 299, 305, 311, 317, 323, - 329, 334, 339, 341, 345, 351, 355, 356, 359, 364, - 368, 374, 380, 389, 391, 395, 397, 402, 408, 412, - 414, 418, 420 -}; -#endif - -#if YYDEBUG || YYERROR_VERBOSE -/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - "$end", "error", "$undefined", "kADD_OP", "kALIGN", "kENTRY", - "kEXCLUDE_FILE", "kFILENAME", "kGLOBAL", "kGROUP", "kID", "kINPUT", - "kINTERP", "kKEEP", "kLOCAL", "kMODE", "kMUL_OP", "kNUM", - "kOUTPUT_FORMAT", "kPAGESIZE", "kPROVIDE", "kSEARCH_DIR", "kSEGMENT", - "kSIZEOF_HEADERS", "kSORT", "kVERSION", "kVERSION_SCRIPT", "'|'", "'&'", - "ADD_OP", "'*'", "MUL_OP", "'('", "')'", "';'", "'{'", "'}'", "'='", - "','", "$accept", "script_or_version", "file", "content", - "outputsections", "outputsection", "assignment", "inputsections", - "inputsection", "sectionname", "sort_opt_name", "exclude_opt", "expr", - "filename_id_list", "comma_opt", "versionlist", "version", - "version_stmt_list", "version_stmt", "filename_id_star_list", - "filename_id", "filename_id_star", 0 -}; -#endif - -# ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ -static const unsigned short yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 124, 38, 282, - 42, 283, 40, 41, 59, 123, 125, 61, 44 -}; -# endif - -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const unsigned char yyr1[] = -{ - 0, 39, 40, 40, 41, 41, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 43, 43, 44, 44, - 44, 45, 45, 46, 46, 47, 47, 47, 48, 49, - 49, 50, 50, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 52, 52, 53, 53, 54, 54, - 55, 55, 55, 56, 56, 57, 57, 58, 58, 59, - 59, 60, 60 -}; - -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const unsigned char yyr2[] = -{ - 0, 2, 1, 2, 2, 1, 5, 5, 5, 5, - 5, 5, 4, 4, 4, 4, 2, 1, 2, 4, - 2, 3, 6, 2, 1, 1, 4, 2, 5, 1, - 4, 4, 0, 4, 3, 3, 3, 3, 3, 3, - 1, 1, 1, 1, 3, 1, 1, 0, 2, 1, - 4, 5, 6, 2, 1, 2, 2, 3, 2, 1, - 1, 1, 1 -}; - -/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state - STATE-NUM when YYTABLE doesn't specify something else to do. Zero - means the default is an error. */ -static const unsigned char yydefact[] = -{ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2, 5, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 59, 60, 0, 3, 49, 0, - 1, 4, 0, 47, 45, 47, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 54, 48, 0, 0, - 12, 46, 0, 13, 0, 15, 0, 0, 0, 0, - 0, 17, 0, 0, 14, 62, 55, 61, 0, 56, - 0, 53, 0, 6, 44, 9, 8, 7, 20, 0, - 0, 0, 11, 16, 18, 10, 0, 58, 50, 0, - 60, 0, 0, 0, 24, 25, 0, 0, 41, 40, - 43, 42, 0, 21, 0, 57, 51, 0, 0, 27, - 19, 23, 32, 0, 0, 0, 0, 0, 0, 0, - 0, 52, 0, 0, 0, 0, 34, 37, 36, 39, - 38, 35, 0, 26, 0, 29, 0, 0, 33, 22, - 0, 0, 28, 31, 0, 30 -}; - -/* YYDEFGOTO[NTERM-NUM]. */ -static const short yydefgoto[] = -{ - -1, 11, 12, 13, 60, 61, 62, 93, 94, 95, - 137, 124, 103, 33, 52, 27, 28, 45, 46, 66, - 67, 96 -}; - -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF -41 -static const short yypact[] = -{ - 107, -28, -20, -13, 34, 77, 85, 88, 91, 33, - 38, 123, 125, -41, 117, 52, 52, 52, 52, 114, - 52, 100, 103, 38, -41, -41, 96, 38, -41, 110, - -41, -41, 115, 64, -41, 67, 116, 118, 120, 127, - 1, 1, 28, 84, 84, 36, -41, -41, 96, 128, - -41, -41, 52, -41, 129, -41, 130, 131, 105, 134, - 75, -41, 133, 79, -41, -41, 84, -41, 135, 84, - 136, -41, 41, -41, -41, -41, -41, -41, -41, 83, - 48, 151, -41, -41, -41, -41, 137, -41, -41, 44, - 138, 140, 139, 17, -41, -41, 142, 144, -41, -41, - -41, -41, 48, 54, 141, -41, -41, 143, 84, -41, - -41, -41, 162, 48, -2, 48, 48, 48, 48, 48, - 48, -41, 146, 148, 97, 6, -41, 54, 54, 58, - 53, -1, 13, -41, 52, -41, 149, 150, -41, -41, - 152, 172, -41, -41, 153, -41 -}; - -/* YYPGOTO[NTERM-NUM]. */ -static const short yypgoto[] = -{ - -41, -41, -41, 175, 147, -40, 29, -41, 98, 76, - -41, -41, 39, 173, -41, 167, -24, 145, 15, 154, - -10, 32 -}; - -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If zero, do what YYDEFACT says. - If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -1 -static const unsigned char yytable[] = -{ - 29, 115, 115, 47, 14, 34, 34, 36, 37, 115, - 39, 58, 15, 29, 116, 116, 115, 29, 47, 16, - 83, 59, 116, 83, 24, 117, 118, 90, 119, 116, - 91, 126, 29, 117, 118, 24, 119, 59, 25, 138, - 117, 118, 74, 119, 43, 24, 139, 65, 25, 43, - 44, 24, 97, 110, 25, 44, 115, 115, 98, 24, - 71, 115, 25, 26, 64, 99, 17, 100, 23, 116, - 116, 101, 70, 26, 116, 68, 68, 89, 106, 107, - 102, 117, 118, 119, 119, 58, 118, 71, 119, 58, - 24, 24, 21, 90, 25, 59, 91, 50, 86, 59, - 53, 86, 51, 59, 43, 51, 22, 135, 92, 18, - 44, 82, 1, 65, 65, 85, 2, 19, 3, 4, - 20, 136, 92, 30, 140, 5, 6, 32, 7, 8, - 1, 38, 9, 10, 2, 40, 3, 4, 41, 78, - 79, 114, 80, 5, 6, 48, 7, 8, 49, 54, - 9, 55, 125, 56, 127, 128, 129, 130, 131, 132, - 57, 104, 73, 75, 76, 77, 81, 84, 123, 87, - 88, 105, 108, 109, 112, 80, 113, 121, 120, 133, - 134, 141, 144, 142, 122, 143, 145, 31, 63, 35, - 42, 111, 0, 72, 0, 0, 0, 0, 69 -}; - -static const short yycheck[] = -{ - 10, 3, 3, 27, 32, 15, 16, 17, 18, 3, - 20, 10, 32, 23, 16, 16, 3, 27, 42, 32, - 60, 20, 16, 63, 7, 27, 28, 10, 30, 16, - 13, 33, 42, 27, 28, 7, 30, 20, 10, 33, - 27, 28, 52, 30, 8, 7, 33, 30, 10, 8, - 14, 7, 4, 36, 10, 14, 3, 3, 10, 7, - 45, 3, 10, 35, 36, 17, 32, 19, 35, 16, - 16, 23, 36, 35, 16, 43, 44, 36, 34, 89, - 32, 27, 28, 30, 30, 10, 28, 72, 30, 10, - 7, 7, 1, 10, 10, 20, 13, 33, 66, 20, - 33, 69, 38, 20, 8, 38, 15, 10, 79, 32, - 14, 36, 5, 30, 30, 36, 9, 32, 11, 12, - 32, 24, 93, 0, 134, 18, 19, 10, 21, 22, - 5, 17, 25, 26, 9, 35, 11, 12, 35, 34, - 35, 102, 37, 18, 19, 35, 21, 22, 33, 33, - 25, 33, 113, 33, 115, 116, 117, 118, 119, 120, - 33, 10, 34, 34, 34, 34, 32, 34, 6, 34, - 34, 34, 32, 34, 32, 37, 32, 34, 37, 33, - 32, 32, 10, 33, 108, 33, 33, 12, 41, 16, - 23, 93, -1, 48, -1, -1, -1, -1, 44 -}; - -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const unsigned char yystos[] = -{ - 0, 5, 9, 11, 12, 18, 19, 21, 22, 25, - 26, 40, 41, 42, 32, 32, 32, 32, 32, 32, - 32, 1, 15, 35, 7, 10, 35, 54, 55, 59, - 0, 42, 10, 52, 59, 52, 59, 59, 17, 59, - 35, 35, 54, 8, 14, 56, 57, 55, 35, 33, - 33, 38, 53, 33, 33, 33, 33, 33, 10, 20, - 43, 44, 45, 43, 36, 30, 58, 59, 60, 58, - 36, 57, 56, 34, 59, 34, 34, 34, 34, 35, - 37, 32, 36, 44, 34, 36, 60, 34, 34, 36, - 10, 13, 45, 46, 47, 48, 60, 4, 10, 17, - 19, 23, 32, 51, 10, 34, 34, 59, 32, 34, - 36, 47, 32, 32, 51, 3, 16, 27, 28, 30, - 37, 34, 48, 6, 50, 51, 33, 51, 51, 51, - 51, 51, 51, 33, 32, 10, 24, 49, 33, 33, - 59, 32, 33, 33, 10, 33 -}; - -#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) -# define YYSIZE_T __SIZE_TYPE__ -#endif -#if ! defined (YYSIZE_T) && defined (size_t) -# define YYSIZE_T size_t -#endif -#if ! defined (YYSIZE_T) -# if defined (__STDC__) || defined (__cplusplus) -# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# endif -#endif -#if ! defined (YYSIZE_T) -# define YYSIZE_T unsigned int -#endif - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ - -#define YYFAIL goto yyerrlab - -#define YYRECOVERING() (!!yyerrstatus) - -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - yytoken = YYTRANSLATE (yychar); \ - YYPOPSTACK; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror ("syntax error: cannot back up");\ - YYERROR; \ - } \ -while (0) - -#define YYTERROR 1 -#define YYERRCODE 256 - -/* YYLLOC_DEFAULT -- Compute the default location (before the actions - are run). */ - -#ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - ((Current).first_line = (Rhs)[1].first_line, \ - (Current).first_column = (Rhs)[1].first_column, \ - (Current).last_line = (Rhs)[N].last_line, \ - (Current).last_column = (Rhs)[N].last_column) -#endif - -/* YYLEX -- calling `yylex' with the right arguments. */ - -#ifdef YYLEX_PARAM -# define YYLEX yylex (YYLEX_PARAM) -#else -# define YYLEX yylex () -#endif - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - -# define YYDSYMPRINT(Args) \ -do { \ - if (yydebug) \ - yysymprint Args; \ -} while (0) - -# define YYDSYMPRINTF(Title, Token, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yysymprint (stderr, \ - Token, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (included). | -`------------------------------------------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yy_stack_print (short *bottom, short *top) -#else -static void -yy_stack_print (bottom, top) - short *bottom; - short *top; -#endif -{ - YYFPRINTF (stderr, "Stack now"); - for (/* Nothing. */; bottom <= top; ++bottom) - YYFPRINTF (stderr, " %d", *bottom); - YYFPRINTF (stderr, "\n"); -} - -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) - - -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yy_reduce_print (int yyrule) -#else -static void -yy_reduce_print (yyrule) - int yyrule; -#endif -{ - int yyi; - unsigned int yylno = yyrline[yyrule]; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ", - yyrule - 1, yylno); - /* Print the symbols being reduced, and their result. */ - for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) - YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]); - YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]); -} - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (Rule); \ -} while (0) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YYDSYMPRINT(Args) -# define YYDSYMPRINTF(Title, Token, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !YYDEBUG */ - - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0 -# undef YYMAXDEPTH -#endif - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 -#endif - - - -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined (__GLIBC__) && defined (_STRING_H) -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -static YYSIZE_T -# if defined (__STDC__) || defined (__cplusplus) -yystrlen (const char *yystr) -# else -yystrlen (yystr) - const char *yystr; -# endif -{ - register const char *yys = yystr; - - while (*yys++ != '\0') - continue; - - return yys - yystr - 1; -} -# endif -# endif - -# ifndef yystpcpy -# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -# if defined (__STDC__) || defined (__cplusplus) -yystpcpy (char *yydest, const char *yysrc) -# else -yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; -# endif -{ - register char *yyd = yydest; - register const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -#endif /* !YYERROR_VERBOSE */ - - - -#if YYDEBUG -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep) -#else -static void -yysymprint (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE *yyvaluep; -#endif -{ - /* Pacify ``unused variable'' warnings. */ - (void) yyvaluep; - - if (yytype < YYNTOKENS) - { - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); -# ifdef YYPRINT - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# endif - } - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); - - switch (yytype) - { - default: - break; - } - YYFPRINTF (yyoutput, ")"); -} - -#endif /* ! YYDEBUG */ -/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ - -#if defined (__STDC__) || defined (__cplusplus) -static void -yydestruct (int yytype, YYSTYPE *yyvaluep) -#else -static void -yydestruct (yytype, yyvaluep) - int yytype; - YYSTYPE *yyvaluep; -#endif -{ - /* Pacify ``unused variable'' warnings. */ - (void) yyvaluep; - - switch (yytype) - { - - default: - break; - } -} - - -/* Prevent warnings from -Wmissing-prototypes. */ - -#ifdef YYPARSE_PARAM -# if defined (__STDC__) || defined (__cplusplus) -int yyparse (void *YYPARSE_PARAM); -# else -int yyparse (); -# endif -#else /* ! YYPARSE_PARAM */ -#if defined (__STDC__) || defined (__cplusplus) -int yyparse (void); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ - - - -/* The lookahead symbol. */ -int yychar; - -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval; - -/* Number of syntax errors so far. */ -int yynerrs; - - - -/*----------. -| yyparse. | -`----------*/ - -#ifdef YYPARSE_PARAM -# if defined (__STDC__) || defined (__cplusplus) -int yyparse (void *YYPARSE_PARAM) -# else -int yyparse (YYPARSE_PARAM) - void *YYPARSE_PARAM; -# endif -#else /* ! YYPARSE_PARAM */ -#if defined (__STDC__) || defined (__cplusplus) -int -yyparse (void) -#else -int -yyparse () - -#endif -#endif -{ - - register int yystate; - register int yyn; - int yyresult; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; - - /* Three stacks and their tools: - `yyss': related to states, - `yyvs': related to semantic values, - `yyls': related to locations. - - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - short yyssa[YYINITDEPTH]; - short *yyss = yyssa; - register short *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - register YYSTYPE *yyvsp; - - - -#define YYPOPSTACK (yyvsp--, yyssp--) - - YYSIZE_T yystacksize = YYINITDEPTH; - - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - - - /* When reducing, the number of symbols on the RHS of the reduced - rule. */ - int yylen; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - - yyssp = yyss; - yyvsp = yyvs; - - goto yysetstate; - -/*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | -`------------------------------------------------------------*/ - yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. so pushing a state here evens the stacks. - */ - yyssp++; - - yysetstate: - *yyssp = yystate; - - if (yyss + yystacksize - 1 <= yyssp) - { - /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; - -#ifdef yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - short *yyss1 = yyss; - - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow ("parser stack overflow", - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - - &yystacksize); - - yyss = yyss1; - yyvs = yyvs1; - } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyoverflowlab; -# else - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - goto yyoverflowlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - short *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyoverflowlab; - YYSTACK_RELOCATE (yyss); - YYSTACK_RELOCATE (yyvs); - -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif -#endif /* no yyoverflow */ - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; - - - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); - - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } - - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - - goto yybackup; - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - -/* Do appropriate processing given the current state. */ -/* Read a lookahead token if we need one and don't already have one. */ -/* yyresume: */ - - /* First try to decide what to do without reference to lookahead token. */ - - yyn = yypact[yystate]; - if (yyn == YYPACT_NINF) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) - goto yydefault; - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yyn == 0 || yyn == YYTABLE_NINF) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - if (yyn == YYFINAL) - YYACCEPT; - - /* Shift the lookahead token. */ - YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken])); - - /* Discard the token being shifted unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - - *++yyvsp = yylval; - - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - yystate = yyn; - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- Do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - - - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - case 3: -#line 130 "/home/drepper/gnu/elfutils/src/ldscript.y" - { add_versions (yyvsp[0].version); } - break; - - case 6: -#line 138 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - if (likely (ld_state.entry == NULL)) - ld_state.entry = yyvsp[-2].str; - } - break; - - case 7: -#line 143 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - ld_new_searchdir (yyvsp[-2].str); - } - break; - - case 8: -#line 147 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - if (likely (ld_state.pagesize == 0)) - ld_state.pagesize = yyvsp[-2].num; - } - break; - - case 9: -#line 152 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - if (likely (ld_state.interp == NULL)) - ld_state.interp = yyvsp[-2].str; - } - break; - - case 10: -#line 157 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - new_segment (yyvsp[-3].num, yyvsp[-1].output_rule); - } - break; - - case 11: -#line 161 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - fputs_unlocked (gettext ("mode for segment invalid\n"), - stderr); - new_segment (0, yyvsp[-1].output_rule); - } - break; - - case 12: -#line 167 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - /* First little optimization. If there is only one - file in the group don't do anything. */ - if (yyvsp[-1].filename_list != yyvsp[-1].filename_list->next) - { - yyvsp[-1].filename_list->next->group_start = 1; - yyvsp[-1].filename_list->group_end = 1; - } - add_inputfiles (yyvsp[-1].filename_list); - } - break; - - case 13: -#line 178 "/home/drepper/gnu/elfutils/src/ldscript.y" - { add_inputfiles (yyvsp[-1].filename_list); } - break; - - case 14: -#line 180 "/home/drepper/gnu/elfutils/src/ldscript.y" - { add_versions (yyvsp[-1].version); } - break; - - case 15: -#line 182 "/home/drepper/gnu/elfutils/src/ldscript.y" - { /* XXX TODO */ } - break; - - case 16: -#line 186 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - yyvsp[0].output_rule->next = yyvsp[-1].output_rule->next; - yyval.output_rule = yyvsp[-1].output_rule->next = yyvsp[0].output_rule; - } - break; - - case 17: -#line 191 "/home/drepper/gnu/elfutils/src/ldscript.y" - { yyval.output_rule = yyvsp[0].output_rule; } - break; - - case 18: -#line 195 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - yyval.output_rule = new_output_rule (output_assignment); - yyval.output_rule->val.assignment = yyvsp[-1].assignment; - } - break; - - case 19: -#line 200 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - yyval.output_rule = new_output_rule (output_section); - yyval.output_rule->val.section.name = yyvsp[-3].str; - yyval.output_rule->val.section.input = yyvsp[-1].input_rule->next; - if (ld_state.strip == strip_debug - && ebl_debugscn_p (ld_state.ebl, yyvsp[-3].str)) - yyval.output_rule->val.section.ignored = true; - else - yyval.output_rule->val.section.ignored = false; - yyvsp[-1].input_rule->next = NULL; - } - break; - - case 20: -#line 212 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - /* This is a short cut for "ID { *(ID) }". */ - yyval.output_rule = new_output_rule (output_section); - yyval.output_rule->val.section.name = yyvsp[-1].str; - yyval.output_rule->val.section.input = new_input_rule (input_section); - yyval.output_rule->val.section.input->next = NULL; - yyval.output_rule->val.section.input->val.section = - (struct filemask_section_name *) - obstack_alloc (&ld_state.smem, - sizeof (struct filemask_section_name)); - yyval.output_rule->val.section.input->val.section->filemask = NULL; - yyval.output_rule->val.section.input->val.section->excludemask = NULL; - yyval.output_rule->val.section.input->val.section->section_name = - new_input_section_name (yyvsp[-1].str, false); - yyval.output_rule->val.section.input->val.section->keep_flag = false; - if (ld_state.strip == strip_debug - && ebl_debugscn_p (ld_state.ebl, yyvsp[-1].str)) - yyval.output_rule->val.section.ignored = true; - else - yyval.output_rule->val.section.ignored = false; - } - break; - - case 21: -#line 236 "/home/drepper/gnu/elfutils/src/ldscript.y" - { yyval.assignment = new_assignment (yyvsp[-2].str, yyvsp[0].expr, false); } - break; - - case 22: -#line 238 "/home/drepper/gnu/elfutils/src/ldscript.y" - { yyval.assignment = new_assignment (yyvsp[-3].str, yyvsp[-1].expr, true); } - break; - - case 23: -#line 242 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - yyvsp[0].input_rule->next = yyvsp[-1].input_rule->next; - yyval.input_rule = yyvsp[-1].input_rule->next = yyvsp[0].input_rule; - } - break; - - case 24: -#line 247 "/home/drepper/gnu/elfutils/src/ldscript.y" - { yyval.input_rule = yyvsp[0].input_rule; } - break; - - case 25: -#line 251 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - yyval.input_rule = new_input_rule (input_section); - yyval.input_rule->val.section = yyvsp[0].filemask_section_name; - } - break; - - case 26: -#line 256 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - yyvsp[-1].filemask_section_name->keep_flag = true; - - yyval.input_rule = new_input_rule (input_section); - yyval.input_rule->val.section = yyvsp[-1].filemask_section_name; - } - break; - - case 27: -#line 263 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - yyval.input_rule = new_input_rule (input_assignment); - yyval.input_rule->val.assignment = yyvsp[-1].assignment; - } - break; - - case 28: -#line 270 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - yyval.filemask_section_name = (struct filemask_section_name *) - obstack_alloc (&ld_state.smem, sizeof (*yyval.filemask_section_name)); - yyval.filemask_section_name->filemask = yyvsp[-4].str; - yyval.filemask_section_name->excludemask = yyvsp[-2].str; - yyval.filemask_section_name->section_name = yyvsp[-1].sectionname; - yyval.filemask_section_name->keep_flag = false; - } - break; - - case 29: -#line 281 "/home/drepper/gnu/elfutils/src/ldscript.y" - { yyval.sectionname = new_input_section_name (yyvsp[0].str, false); } - break; - - case 30: -#line 283 "/home/drepper/gnu/elfutils/src/ldscript.y" - { yyval.sectionname = new_input_section_name (yyvsp[-1].str, true); } - break; - - case 31: -#line 287 "/home/drepper/gnu/elfutils/src/ldscript.y" - { yyval.str = yyvsp[-1].str; } - break; - - case 32: -#line 289 "/home/drepper/gnu/elfutils/src/ldscript.y" - { yyval.str = NULL; } - break; - - case 33: -#line 293 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - yyval.expr = new_expr (exp_align); - yyval.expr->val.child = yyvsp[-1].expr; - } - break; - - case 34: -#line 298 "/home/drepper/gnu/elfutils/src/ldscript.y" - { yyval.expr = yyvsp[-1].expr; } - break; - - case 35: -#line 300 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - yyval.expr = new_expr (exp_mult); - yyval.expr->val.binary.left = yyvsp[-2].expr; - yyval.expr->val.binary.right = yyvsp[0].expr; - } - break; - - case 36: -#line 306 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - yyval.expr = new_expr (yyvsp[-1].op); - yyval.expr->val.binary.left = yyvsp[-2].expr; - yyval.expr->val.binary.right = yyvsp[0].expr; - } - break; - - case 37: -#line 312 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - yyval.expr = new_expr (yyvsp[-1].op); - yyval.expr->val.binary.left = yyvsp[-2].expr; - yyval.expr->val.binary.right = yyvsp[0].expr; - } - break; - - case 38: -#line 318 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - yyval.expr = new_expr (exp_and); - yyval.expr->val.binary.left = yyvsp[-2].expr; - yyval.expr->val.binary.right = yyvsp[0].expr; - } - break; - - case 39: -#line 324 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - yyval.expr = new_expr (exp_or); - yyval.expr->val.binary.left = yyvsp[-2].expr; - yyval.expr->val.binary.right = yyvsp[0].expr; - } - break; - - case 40: -#line 330 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - yyval.expr = new_expr (exp_num); - yyval.expr->val.num = yyvsp[0].num; - } - break; - - case 41: -#line 335 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - yyval.expr = new_expr (exp_id); - yyval.expr->val.str = yyvsp[0].str; - } - break; - - case 42: -#line 340 "/home/drepper/gnu/elfutils/src/ldscript.y" - { yyval.expr = new_expr (exp_sizeof_headers); } - break; - - case 43: -#line 342 "/home/drepper/gnu/elfutils/src/ldscript.y" - { yyval.expr = new_expr (exp_pagesize); } - break; - - case 44: -#line 346 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - struct filename_list *newp = new_filename_listelem (yyvsp[0].str); - newp->next = yyvsp[-2].filename_list->next; - yyval.filename_list = yyvsp[-2].filename_list->next = newp; - } - break; - - case 45: -#line 352 "/home/drepper/gnu/elfutils/src/ldscript.y" - { yyval.filename_list = new_filename_listelem (yyvsp[0].str); } - break; - - case 48: -#line 360 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - yyvsp[0].version->next = yyvsp[-1].version->next; - yyval.version = yyvsp[-1].version->next = yyvsp[0].version; - } - break; - - case 49: -#line 365 "/home/drepper/gnu/elfutils/src/ldscript.y" - { yyval.version = yyvsp[0].version; } - break; - - case 50: -#line 369 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - yyvsp[-2].version->versionname = ""; - yyvsp[-2].version->parentname = NULL; - yyval.version = yyvsp[-2].version; - } - break; - - case 51: -#line 375 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - yyvsp[-2].version->versionname = yyvsp[-4].str; - yyvsp[-2].version->parentname = NULL; - yyval.version = yyvsp[-2].version; - } - break; - - case 52: -#line 381 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - yyvsp[-3].version->versionname = yyvsp[-5].str; - yyvsp[-3].version->parentname = yyvsp[-1].str; - yyval.version = yyvsp[-3].version; - } - break; - - case 53: -#line 390 "/home/drepper/gnu/elfutils/src/ldscript.y" - { yyval.version = merge_versions (yyvsp[-1].version, yyvsp[0].version); } - break; - - case 54: -#line 392 "/home/drepper/gnu/elfutils/src/ldscript.y" - { yyval.version = yyvsp[0].version; } - break; - - case 55: -#line 396 "/home/drepper/gnu/elfutils/src/ldscript.y" - { yyval.version = new_version (NULL, yyvsp[0].id_list); } - break; - - case 56: -#line 398 "/home/drepper/gnu/elfutils/src/ldscript.y" - { yyval.version = new_version (yyvsp[0].id_list, NULL); } - break; - - case 57: -#line 403 "/home/drepper/gnu/elfutils/src/ldscript.y" - { - struct id_list *newp = new_id_listelem (yyvsp[-1].str); - newp->next = yyvsp[-2].id_list->next; - yyval.id_list = yyvsp[-2].id_list->next = newp; - } - break; - - case 58: -#line 409 "/home/drepper/gnu/elfutils/src/ldscript.y" - { yyval.id_list = new_id_listelem (yyvsp[-1].str); } - break; - - case 59: -#line 413 "/home/drepper/gnu/elfutils/src/ldscript.y" - { yyval.str = yyvsp[0].str; } - break; - - case 60: -#line 415 "/home/drepper/gnu/elfutils/src/ldscript.y" - { yyval.str = yyvsp[0].str; } - break; - - case 61: -#line 419 "/home/drepper/gnu/elfutils/src/ldscript.y" - { yyval.str = yyvsp[0].str; } - break; - - case 62: -#line 421 "/home/drepper/gnu/elfutils/src/ldscript.y" - { yyval.str = NULL; } - break; - - - } - -/* Line 1000 of yacc.c. */ -#line 1654 "ldscript.c" - - yyvsp -= yylen; - yyssp -= yylen; - - - YY_STACK_PRINT (yyss, yyssp); - - *++yyvsp = yyval; - - - /* Now `shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; - - goto yynewstate; - - -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ -yyerrlab: - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; -#if YYERROR_VERBOSE - yyn = yypact[yystate]; - - if (YYPACT_NINF < yyn && yyn < YYLAST) - { - YYSIZE_T yysize = 0; - int yytype = YYTRANSLATE (yychar); - const char* yyprefix; - char *yymsg; - int yyx; - - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yycount = 0; - - yyprefix = ", expecting "; - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - { - yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]); - yycount += 1; - if (yycount == 5) - { - yysize = 0; - break; - } - } - yysize += (sizeof ("syntax error, unexpected ") - + yystrlen (yytname[yytype])); - yymsg = (char *) YYSTACK_ALLOC (yysize); - if (yymsg != 0) - { - char *yyp = yystpcpy (yymsg, "syntax error, unexpected "); - yyp = yystpcpy (yyp, yytname[yytype]); - - if (yycount < 5) - { - yyprefix = ", expecting "; - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - { - yyp = yystpcpy (yyp, yyprefix); - yyp = yystpcpy (yyp, yytname[yyx]); - yyprefix = " or "; - } - } - yyerror (yymsg); - YYSTACK_FREE (yymsg); - } - else - yyerror ("syntax error; also virtual memory exhausted"); - } - else -#endif /* YYERROR_VERBOSE */ - yyerror ("syntax error"); - } - - - - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - if (yychar <= YYEOF) - { - /* If at end of input, pop the error token, - then the rest of the stack, then return failure. */ - if (yychar == YYEOF) - for (;;) - { - YYPOPSTACK; - if (yyssp == yyss) - YYABORT; - YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp); - yydestruct (yystos[*yyssp], yyvsp); - } - } - else - { - YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc); - yydestruct (yytoken, &yylval); - yychar = YYEMPTY; - - } - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; - - -/*---------------------------------------------------. -| yyerrorlab -- error raised explicitly by YYERROR. | -`---------------------------------------------------*/ -yyerrorlab: - -#ifdef __GNUC__ - /* Pacify GCC when the user code never invokes YYERROR and the label - yyerrorlab therefore never appears in user code. */ - if (0) - goto yyerrorlab; -#endif - - yyvsp -= yylen; - yyssp -= yylen; - yystate = *yyssp; - goto yyerrlab1; - - -/*-------------------------------------------------------------. -| yyerrlab1 -- common code for both syntax error and YYERROR. | -`-------------------------------------------------------------*/ -yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact[yystate]; - if (yyn != YYPACT_NINF) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - - YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp); - yydestruct (yystos[yystate], yyvsp); - YYPOPSTACK; - yystate = *yyssp; - YY_STACK_PRINT (yyss, yyssp); - } - - if (yyn == YYFINAL) - YYACCEPT; - - YYDPRINTF ((stderr, "Shifting error token, ")); - - *++yyvsp = yylval; - - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturn; - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturn; - -#ifndef yyoverflow -/*----------------------------------------------. -| yyoverflowlab -- parser overflow comes here. | -`----------------------------------------------*/ -yyoverflowlab: - yyerror ("parser stack overflow"); - yyresult = 2; - /* Fall through. */ -#endif - -yyreturn: -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif - return yyresult; -} - - -#line 424 "/home/drepper/gnu/elfutils/src/ldscript.y" - - -static void -yyerror (const char *s) -{ - error (0, 0, (ld_scan_version_script - ? gettext ("while reading version script '%s': %s at line %d") - : gettext ("while reading linker script '%s': %s at line %d")), - ldin_fname, gettext (s), ldlineno); -} - - -static struct expression * -new_expr (int tag) -{ - struct expression *newp = (struct expression *) - obstack_alloc (&ld_state.smem, sizeof (*newp)); - - newp->tag = tag; - return newp; -} - - -static struct input_section_name * -new_input_section_name (const char *name, bool sort_flag) -{ - struct input_section_name *newp = (struct input_section_name *) - obstack_alloc (&ld_state.smem, sizeof (*newp)); - - newp->name = name; - newp->sort_flag = sort_flag; - return newp; -} - - -static struct input_rule * -new_input_rule (int tag) -{ - struct input_rule *newp = (struct input_rule *) - obstack_alloc (&ld_state.smem, sizeof (*newp)); - - newp->tag = tag; - newp->next = newp; - return newp; -} - - -static struct output_rule * -new_output_rule (int tag) -{ - struct output_rule *newp = (struct output_rule *) - memset (obstack_alloc (&ld_state.smem, sizeof (*newp)), - '\0', sizeof (*newp)); - - newp->tag = tag; - newp->next = newp; - return newp; -} - - -static struct assignment * -new_assignment (const char *variable, struct expression *expression, - bool provide_flag) -{ - struct assignment *newp = (struct assignment *) - obstack_alloc (&ld_state.smem, sizeof (*newp)); - - newp->variable = variable; - newp->expression = expression; - newp->sym = NULL; - newp->provide_flag = provide_flag; - - /* Insert the symbol into a hash table. We will later have to matc*/ - return newp; -} - - -static void -new_segment (int mode, struct output_rule *output_rule) -{ - struct output_segment *newp; - - newp - = (struct output_segment *) obstack_alloc (&ld_state.smem, sizeof (*newp)); - newp->mode = mode; - newp->next = newp; - - newp->output_rules = output_rule->next; - output_rule->next = NULL; - - /* Enqueue the output segment description. */ - if (ld_state.output_segments == NULL) - ld_state.output_segments = newp; - else - { - newp->next = ld_state.output_segments->next; - ld_state.output_segments = ld_state.output_segments->next = newp; - } - - /* If the output file should be stripped of all symbol set the flag - in the structures of all output sections. */ - if (mode == 0 && ld_state.strip == strip_all) - { - struct output_rule *runp; - - for (runp = newp->output_rules; runp != NULL; runp = runp->next) - if (runp->tag == output_section) - runp->val.section.ignored = true; - } -} - - -static struct filename_list * -new_filename_listelem (const char *string) -{ - struct filename_list *newp; - - /* We use calloc and not the obstack since this object can be freed soon. */ - newp = (struct filename_list *) xcalloc (1, sizeof (*newp)); - newp->name = string; - newp->next = newp; - return newp; -} - - -static void -add_inputfiles (struct filename_list *fnames) -{ - assert (fnames != NULL); - - if (ld_state.srcfiles == NULL) - ld_state.srcfiles = fnames; - else - { - struct filename_list *first = ld_state.srcfiles->next; - - ld_state.srcfiles->next = fnames->next; - fnames->next = first; - ld_state.srcfiles->next = fnames; - } -} - - -static _Bool -special_char_p (const char *str) -{ - while (*str != '\0') - { - if (__builtin_expect (*str == '*', 0) - || __builtin_expect (*str == '?', 0) - || __builtin_expect (*str == '[', 0)) - return true; - - ++str; - } - - return false; -} - - -static struct id_list * -new_id_listelem (const char *str) -{ - struct id_list *newp; - - newp = (struct id_list *) obstack_alloc (&ld_state.smem, sizeof (*newp)); - if (str == NULL) - newp->u.id_type = id_all; - else if (__builtin_expect (special_char_p (str), false)) - newp->u.id_type = id_wild; - else - newp->u.id_type = id_str; - newp->id = str; - newp->next = newp; - - return newp; -} - - -static struct version * -new_version (struct id_list *local, struct id_list *global) -{ - struct version *newp; - - newp = (struct version *) obstack_alloc (&ld_state.smem, sizeof (*newp)); - newp->next = newp; - newp->local_names = local; - newp->global_names = global; - newp->versionname = NULL; - newp->parentname = NULL; - - return newp; -} - - -static struct version * -merge_versions (struct version *one, struct version *two) -{ - assert (two->local_names == NULL || two->global_names == NULL); - - if (two->local_names != NULL) - { - if (one->local_names == NULL) - one->local_names = two->local_names; - else - { - two->local_names->next = one->local_names->next; - one->local_names = one->local_names->next = two->local_names; - } - } - else - { - if (one->global_names == NULL) - one->global_names = two->global_names; - else - { - two->global_names->next = one->global_names->next; - one->global_names = one->global_names->next = two->global_names; - } - } - - return one; -} - - -static void -add_id_list (const char *versionname, struct id_list *runp, _Bool local) -{ - struct id_list *lastp = runp; - - if (runp == NULL) - /* Nothing to do. */ - return; - - /* Convert into a simple single-linked list. */ - runp = runp->next; - assert (runp != NULL); - lastp->next = NULL; - - do - if (runp->u.id_type == id_str) - { - struct id_list *curp; - struct id_list *defp; - unsigned long int hval = elf_hash (runp->id); - - curp = runp; - runp = runp->next; - - defp = ld_version_str_tab_find (&ld_state.version_str_tab, hval, curp); - if (defp != NULL) - { - /* There is already a version definition for this symbol. */ - while (strcmp (defp->u.s.versionname, versionname) != 0) - { - if (defp->next == NULL) - { - /* No version like this so far. */ - defp->next = curp; - curp->u.s.local = local; - curp->u.s.versionname = versionname; - curp->next = NULL; - defp = NULL; - break; - } - - defp = defp->next; - } - - if (defp != NULL && defp->u.s.local != local) - error (EXIT_FAILURE, 0, versionname[0] == '\0' - ? gettext ("\ -symbol '%s' in declared both local and global for unnamed version") - : gettext ("\ -symbol '%s' in declared both local and global for version '%s'"), - runp->id, versionname); - } - else - { - /* This is the first version definition for this symbol. */ - ld_version_str_tab_insert (&ld_state.version_str_tab, hval, curp); - - curp->u.s.local = local; - curp->u.s.versionname = versionname; - curp->next = NULL; - } - } - else if (runp->u.id_type == id_all) - { - if (local) - { - if (ld_state.default_bind_global) - error (EXIT_FAILURE, 0, - gettext ("default visibility set as local and global")); - ld_state.default_bind_local = true; - } - else - { - if (ld_state.default_bind_local) - error (EXIT_FAILURE, 0, - gettext ("default visibility set as local and global")); - ld_state.default_bind_global = true; - } - - runp = runp->next; - } - else - { - assert (runp->u.id_type == id_wild); - /* XXX TBI */ - abort (); - } - while (runp != NULL); -} - - -static void -add_versions (struct version *versions) -{ - struct version *lastp = versions; - - if (versions == NULL) - return; - - /* Convert into a simple single-linked list. */ - versions = versions->next; - assert (versions != NULL); - lastp->next = NULL; - - do - { - struct version *oldp; - - add_id_list (versions->versionname, versions->local_names, true); - add_id_list (versions->versionname, versions->global_names, false); - - oldp = versions; - versions = versions->next; - } - while (versions != NULL); -} - diff --git a/src/ldscript.h b/src/ldscript.h deleted file mode 100644 index 6464d8da..00000000 --- a/src/ldscript.h +++ /dev/null @@ -1,116 +0,0 @@ -/* A Bison parser, made by GNU Bison 1.875c. */ - -/* Skeleton parser for Yacc-like parsing with Bison, - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -/* As a special exception, when this file is copied by Bison into a - Bison output file, you may use that output file without restriction. - This special exception was added by the Free Software Foundation - in version 1.24 of Bison. */ - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - kADD_OP = 258, - kALIGN = 259, - kENTRY = 260, - kEXCLUDE_FILE = 261, - kFILENAME = 262, - kGLOBAL = 263, - kGROUP = 264, - kID = 265, - kINPUT = 266, - kINTERP = 267, - kKEEP = 268, - kLOCAL = 269, - kMODE = 270, - kMUL_OP = 271, - kNUM = 272, - kOUTPUT_FORMAT = 273, - kPAGESIZE = 274, - kPROVIDE = 275, - kSEARCH_DIR = 276, - kSEGMENT = 277, - kSIZEOF_HEADERS = 278, - kSORT = 279, - kVERSION = 280, - kVERSION_SCRIPT = 281, - ADD_OP = 282, - MUL_OP = 283 - }; -#endif -#define kADD_OP 258 -#define kALIGN 259 -#define kENTRY 260 -#define kEXCLUDE_FILE 261 -#define kFILENAME 262 -#define kGLOBAL 263 -#define kGROUP 264 -#define kID 265 -#define kINPUT 266 -#define kINTERP 267 -#define kKEEP 268 -#define kLOCAL 269 -#define kMODE 270 -#define kMUL_OP 271 -#define kNUM 272 -#define kOUTPUT_FORMAT 273 -#define kPAGESIZE 274 -#define kPROVIDE 275 -#define kSEARCH_DIR 276 -#define kSEGMENT 277 -#define kSIZEOF_HEADERS 278 -#define kSORT 279 -#define kVERSION 280 -#define kVERSION_SCRIPT 281 -#define ADD_OP 282 -#define MUL_OP 283 - - - - -#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 58 "/home/drepper/gnu/elfutils/src/ldscript.y" -typedef union YYSTYPE { - uintmax_t num; - enum expression_tag op; - char *str; - struct expression *expr; - struct input_section_name *sectionname; - struct filemask_section_name *filemask_section_name; - struct input_rule *input_rule; - struct output_rule *output_rule; - struct assignment *assignment; - struct filename_list *filename_list; - struct version *version; - struct id_list *id_list; -} YYSTYPE; -/* Line 1275 of yacc.c. */ -#line 108 "ldscript.h" -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 -#endif - -extern YYSTYPE ldlval; - - - diff --git a/src/ldscript.y b/src/ldscript.y deleted file mode 100644 index 8f68078d..00000000 --- a/src/ldscript.y +++ /dev/null @@ -1,764 +0,0 @@ -%{ -/* Parser for linker scripts. - Copyright (C) 2001, 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <error.h> -#include <libintl.h> -#include <stdbool.h> -#include <stdint.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include <system.h> -#include <ld.h> - -/* The error handler. */ -static void yyerror (const char *s); - -/* Some helper functions we need to construct the data structures - describing information from the file. */ -static struct expression *new_expr (int tag); -static struct input_section_name *new_input_section_name (const char *name, - bool sort_flag); -static struct input_rule *new_input_rule (int tag); -static struct output_rule *new_output_rule (int tag); -static struct assignment *new_assignment (const char *variable, - struct expression *expression, - bool provide_flag); -static void new_segment (int mode, struct output_rule *output_rule); -static struct filename_list *new_filename_listelem (const char *string); -static void add_inputfiles (struct filename_list *fnames); -static struct id_list *new_id_listelem (const char *str); -static struct version *new_version (struct id_list *local, - struct id_list *global); -static struct version *merge_versions (struct version *one, - struct version *two); -static void add_versions (struct version *versions); - -extern int yylex (void); -%} - -%union { - uintmax_t num; - enum expression_tag op; - char *str; - struct expression *expr; - struct input_section_name *sectionname; - struct filemask_section_name *filemask_section_name; - struct input_rule *input_rule; - struct output_rule *output_rule; - struct assignment *assignment; - struct filename_list *filename_list; - struct version *version; - struct id_list *id_list; -} - -%token kADD_OP -%token kALIGN -%token kENTRY -%token kEXCLUDE_FILE -%token <str> kFILENAME -%token kGLOBAL -%token kGROUP -%token <str> kID -%token kINPUT -%token kINTERP -%token kKEEP -%token kLOCAL -%token <num> kMODE -%token kMUL_OP -%token <num> kNUM -%token kOUTPUT_FORMAT -%token kPAGESIZE -%token kPROVIDE -%token kSEARCH_DIR -%token kSEGMENT -%token kSIZEOF_HEADERS -%token kSORT -%token kVERSION -%token kVERSION_SCRIPT - -%left '|' -%left '&' -%left ADD_OP -%left MUL_OP '*' - -%type <op> kADD_OP -%type <op> kMUL_OP -%type <str> filename_id -%type <str> filename_id_star -%type <str> exclude_opt -%type <expr> expr -%type <sectionname> sort_opt_name -%type <filemask_section_name> sectionname -%type <input_rule> inputsection -%type <input_rule> inputsections -%type <output_rule> outputsection -%type <output_rule> outputsections -%type <assignment> assignment -%type <filename_list> filename_id_list -%type <version> versionlist -%type <version> version -%type <version> version_stmt_list -%type <version> version_stmt -%type <id_list> filename_id_star_list - -%expect 16 - -%% - -script_or_version: - file - | kVERSION_SCRIPT versionlist - { add_versions ($2); } - ; - -file: file content - | content - ; - -content: kENTRY '(' kID ')' ';' - { - if (likely (ld_state.entry == NULL)) - ld_state.entry = $3; - } - | kSEARCH_DIR '(' filename_id ')' ';' - { - ld_new_searchdir ($3); - } - | kPAGESIZE '(' kNUM ')' ';' - { - if (likely (ld_state.pagesize == 0)) - ld_state.pagesize = $3; - } - | kINTERP '(' filename_id ')' ';' - { - if (likely (ld_state.interp == NULL)) - ld_state.interp = $3; - } - | kSEGMENT kMODE '{' outputsections '}' - { - new_segment ($2, $4); - } - | kSEGMENT error '{' outputsections '}' - { - fputs_unlocked (gettext ("mode for segment invalid\n"), - stderr); - new_segment (0, $4); - } - | kGROUP '(' filename_id_list ')' - { - /* First little optimization. If there is only one - file in the group don't do anything. */ - if ($3 != $3->next) - { - $3->next->group_start = 1; - $3->group_end = 1; - } - add_inputfiles ($3); - } - | kINPUT '(' filename_id_list ')' - { add_inputfiles ($3); } - | kVERSION '{' versionlist '}' - { add_versions ($3); } - | kOUTPUT_FORMAT '(' filename_id ')' - { /* XXX TODO */ } - ; - -outputsections: outputsections outputsection - { - $2->next = $1->next; - $$ = $1->next = $2; - } - | outputsection - { $$ = $1; } - ; - -outputsection: assignment ';' - { - $$ = new_output_rule (output_assignment); - $$->val.assignment = $1; - } - | kID '{' inputsections '}' - { - $$ = new_output_rule (output_section); - $$->val.section.name = $1; - $$->val.section.input = $3->next; - if (ld_state.strip == strip_debug - && ebl_debugscn_p (ld_state.ebl, $1)) - $$->val.section.ignored = true; - else - $$->val.section.ignored = false; - $3->next = NULL; - } - | kID ';' - { - /* This is a short cut for "ID { *(ID) }". */ - $$ = new_output_rule (output_section); - $$->val.section.name = $1; - $$->val.section.input = new_input_rule (input_section); - $$->val.section.input->next = NULL; - $$->val.section.input->val.section = - (struct filemask_section_name *) - obstack_alloc (&ld_state.smem, - sizeof (struct filemask_section_name)); - $$->val.section.input->val.section->filemask = NULL; - $$->val.section.input->val.section->excludemask = NULL; - $$->val.section.input->val.section->section_name = - new_input_section_name ($1, false); - $$->val.section.input->val.section->keep_flag = false; - if (ld_state.strip == strip_debug - && ebl_debugscn_p (ld_state.ebl, $1)) - $$->val.section.ignored = true; - else - $$->val.section.ignored = false; - } - ; - -assignment: kID '=' expr - { $$ = new_assignment ($1, $3, false); } - | kPROVIDE '(' kID '=' expr ')' - { $$ = new_assignment ($3, $5, true); } - ; - -inputsections: inputsections inputsection - { - $2->next = $1->next; - $$ = $1->next = $2; - } - | inputsection - { $$ = $1; } - ; - -inputsection: sectionname - { - $$ = new_input_rule (input_section); - $$->val.section = $1; - } - | kKEEP '(' sectionname ')' - { - $3->keep_flag = true; - - $$ = new_input_rule (input_section); - $$->val.section = $3; - } - | assignment ';' - { - $$ = new_input_rule (input_assignment); - $$->val.assignment = $1; - } - ; - -sectionname: filename_id_star '(' exclude_opt sort_opt_name ')' - { - $$ = (struct filemask_section_name *) - obstack_alloc (&ld_state.smem, sizeof (*$$)); - $$->filemask = $1; - $$->excludemask = $3; - $$->section_name = $4; - $$->keep_flag = false; - } - ; - -sort_opt_name: kID - { $$ = new_input_section_name ($1, false); } - | kSORT '(' kID ')' - { $$ = new_input_section_name ($3, true); } - ; - -exclude_opt: kEXCLUDE_FILE '(' filename_id ')' - { $$ = $3; } - | - { $$ = NULL; } - ; - -expr: kALIGN '(' expr ')' - { - $$ = new_expr (exp_align); - $$->val.child = $3; - } - | '(' expr ')' - { $$ = $2; } - | expr '*' expr - { - $$ = new_expr (exp_mult); - $$->val.binary.left = $1; - $$->val.binary.right = $3; - } - | expr kMUL_OP expr - { - $$ = new_expr ($2); - $$->val.binary.left = $1; - $$->val.binary.right = $3; - } - | expr kADD_OP expr - { - $$ = new_expr ($2); - $$->val.binary.left = $1; - $$->val.binary.right = $3; - } - | expr '&' expr - { - $$ = new_expr (exp_and); - $$->val.binary.left = $1; - $$->val.binary.right = $3; - } - | expr '|' expr - { - $$ = new_expr (exp_or); - $$->val.binary.left = $1; - $$->val.binary.right = $3; - } - | kNUM - { - $$ = new_expr (exp_num); - $$->val.num = $1; - } - | kID - { - $$ = new_expr (exp_id); - $$->val.str = $1; - } - | kSIZEOF_HEADERS - { $$ = new_expr (exp_sizeof_headers); } - | kPAGESIZE - { $$ = new_expr (exp_pagesize); } - ; - -filename_id_list: filename_id_list comma_opt filename_id - { - struct filename_list *newp = new_filename_listelem ($3); - newp->next = $1->next; - $$ = $1->next = newp; - } - | filename_id - { $$ = new_filename_listelem ($1); } - ; - -comma_opt: ',' - | - ; - -versionlist: versionlist version - { - $2->next = $1->next; - $$ = $1->next = $2; - } - | version - { $$ = $1; } - ; - -version: '{' version_stmt_list '}' ';' - { - $2->versionname = ""; - $2->parentname = NULL; - $$ = $2; - } - | filename_id '{' version_stmt_list '}' ';' - { - $3->versionname = $1; - $3->parentname = NULL; - $$ = $3; - } - | filename_id '{' version_stmt_list '}' filename_id ';' - { - $3->versionname = $1; - $3->parentname = $5; - $$ = $3; - } - ; - -version_stmt_list: - version_stmt_list version_stmt - { $$ = merge_versions ($1, $2); } - | version_stmt - { $$ = $1; } - ; - -version_stmt: kGLOBAL filename_id_star_list - { $$ = new_version (NULL, $2); } - | kLOCAL filename_id_star_list - { $$ = new_version ($2, NULL); } - ; - -filename_id_star_list: - filename_id_star_list filename_id_star ';' - { - struct id_list *newp = new_id_listelem ($2); - newp->next = $1->next; - $$ = $1->next = newp; - } - | filename_id_star ';' - { $$ = new_id_listelem ($1); } - ; - -filename_id: kFILENAME - { $$ = $1; } - | kID - { $$ = $1; } - ; - -filename_id_star: filename_id - { $$ = $1; } - | '*' - { $$ = NULL; } - ; - -%% - -static void -yyerror (const char *s) -{ - error (0, 0, (ld_scan_version_script - ? gettext ("while reading version script '%s': %s at line %d") - : gettext ("while reading linker script '%s': %s at line %d")), - ldin_fname, gettext (s), ldlineno); -} - - -static struct expression * -new_expr (int tag) -{ - struct expression *newp = (struct expression *) - obstack_alloc (&ld_state.smem, sizeof (*newp)); - - newp->tag = tag; - return newp; -} - - -static struct input_section_name * -new_input_section_name (const char *name, bool sort_flag) -{ - struct input_section_name *newp = (struct input_section_name *) - obstack_alloc (&ld_state.smem, sizeof (*newp)); - - newp->name = name; - newp->sort_flag = sort_flag; - return newp; -} - - -static struct input_rule * -new_input_rule (int tag) -{ - struct input_rule *newp = (struct input_rule *) - obstack_alloc (&ld_state.smem, sizeof (*newp)); - - newp->tag = tag; - newp->next = newp; - return newp; -} - - -static struct output_rule * -new_output_rule (int tag) -{ - struct output_rule *newp = (struct output_rule *) - memset (obstack_alloc (&ld_state.smem, sizeof (*newp)), - '\0', sizeof (*newp)); - - newp->tag = tag; - newp->next = newp; - return newp; -} - - -static struct assignment * -new_assignment (const char *variable, struct expression *expression, - bool provide_flag) -{ - struct assignment *newp = (struct assignment *) - obstack_alloc (&ld_state.smem, sizeof (*newp)); - - newp->variable = variable; - newp->expression = expression; - newp->sym = NULL; - newp->provide_flag = provide_flag; - - /* Insert the symbol into a hash table. We will later have to matc*/ - return newp; -} - - -static void -new_segment (int mode, struct output_rule *output_rule) -{ - struct output_segment *newp; - - newp - = (struct output_segment *) obstack_alloc (&ld_state.smem, sizeof (*newp)); - newp->mode = mode; - newp->next = newp; - - newp->output_rules = output_rule->next; - output_rule->next = NULL; - - /* Enqueue the output segment description. */ - if (ld_state.output_segments == NULL) - ld_state.output_segments = newp; - else - { - newp->next = ld_state.output_segments->next; - ld_state.output_segments = ld_state.output_segments->next = newp; - } - - /* If the output file should be stripped of all symbol set the flag - in the structures of all output sections. */ - if (mode == 0 && ld_state.strip == strip_all) - { - struct output_rule *runp; - - for (runp = newp->output_rules; runp != NULL; runp = runp->next) - if (runp->tag == output_section) - runp->val.section.ignored = true; - } -} - - -static struct filename_list * -new_filename_listelem (const char *string) -{ - struct filename_list *newp; - - /* We use calloc and not the obstack since this object can be freed soon. */ - newp = (struct filename_list *) xcalloc (1, sizeof (*newp)); - newp->name = string; - newp->next = newp; - return newp; -} - - -static void -add_inputfiles (struct filename_list *fnames) -{ - assert (fnames != NULL); - - if (ld_state.srcfiles == NULL) - ld_state.srcfiles = fnames; - else - { - struct filename_list *first = ld_state.srcfiles->next; - - ld_state.srcfiles->next = fnames->next; - fnames->next = first; - ld_state.srcfiles->next = fnames; - } -} - - -static _Bool -special_char_p (const char *str) -{ - while (*str != '\0') - { - if (__builtin_expect (*str == '*', 0) - || __builtin_expect (*str == '?', 0) - || __builtin_expect (*str == '[', 0)) - return true; - - ++str; - } - - return false; -} - - -static struct id_list * -new_id_listelem (const char *str) -{ - struct id_list *newp; - - newp = (struct id_list *) obstack_alloc (&ld_state.smem, sizeof (*newp)); - if (str == NULL) - newp->u.id_type = id_all; - else if (__builtin_expect (special_char_p (str), false)) - newp->u.id_type = id_wild; - else - newp->u.id_type = id_str; - newp->id = str; - newp->next = newp; - - return newp; -} - - -static struct version * -new_version (struct id_list *local, struct id_list *global) -{ - struct version *newp; - - newp = (struct version *) obstack_alloc (&ld_state.smem, sizeof (*newp)); - newp->next = newp; - newp->local_names = local; - newp->global_names = global; - newp->versionname = NULL; - newp->parentname = NULL; - - return newp; -} - - -static struct version * -merge_versions (struct version *one, struct version *two) -{ - assert (two->local_names == NULL || two->global_names == NULL); - - if (two->local_names != NULL) - { - if (one->local_names == NULL) - one->local_names = two->local_names; - else - { - two->local_names->next = one->local_names->next; - one->local_names = one->local_names->next = two->local_names; - } - } - else - { - if (one->global_names == NULL) - one->global_names = two->global_names; - else - { - two->global_names->next = one->global_names->next; - one->global_names = one->global_names->next = two->global_names; - } - } - - return one; -} - - -static void -add_id_list (const char *versionname, struct id_list *runp, _Bool local) -{ - struct id_list *lastp = runp; - - if (runp == NULL) - /* Nothing to do. */ - return; - - /* Convert into a simple single-linked list. */ - runp = runp->next; - assert (runp != NULL); - lastp->next = NULL; - - do - if (runp->u.id_type == id_str) - { - struct id_list *curp; - struct id_list *defp; - unsigned long int hval = elf_hash (runp->id); - - curp = runp; - runp = runp->next; - - defp = ld_version_str_tab_find (&ld_state.version_str_tab, hval, curp); - if (defp != NULL) - { - /* There is already a version definition for this symbol. */ - while (strcmp (defp->u.s.versionname, versionname) != 0) - { - if (defp->next == NULL) - { - /* No version like this so far. */ - defp->next = curp; - curp->u.s.local = local; - curp->u.s.versionname = versionname; - curp->next = NULL; - defp = NULL; - break; - } - - defp = defp->next; - } - - if (defp != NULL && defp->u.s.local != local) - error (EXIT_FAILURE, 0, versionname[0] == '\0' - ? gettext ("\ -symbol '%s' in declared both local and global for unnamed version") - : gettext ("\ -symbol '%s' in declared both local and global for version '%s'"), - runp->id, versionname); - } - else - { - /* This is the first version definition for this symbol. */ - ld_version_str_tab_insert (&ld_state.version_str_tab, hval, curp); - - curp->u.s.local = local; - curp->u.s.versionname = versionname; - curp->next = NULL; - } - } - else if (runp->u.id_type == id_all) - { - if (local) - { - if (ld_state.default_bind_global) - error (EXIT_FAILURE, 0, - gettext ("default visibility set as local and global")); - ld_state.default_bind_local = true; - } - else - { - if (ld_state.default_bind_local) - error (EXIT_FAILURE, 0, - gettext ("default visibility set as local and global")); - ld_state.default_bind_global = true; - } - - runp = runp->next; - } - else - { - assert (runp->u.id_type == id_wild); - /* XXX TBI */ - abort (); - } - while (runp != NULL); -} - - -static void -add_versions (struct version *versions) -{ - struct version *lastp = versions; - - if (versions == NULL) - return; - - /* Convert into a simple single-linked list. */ - versions = versions->next; - assert (versions != NULL); - lastp->next = NULL; - - do - { - struct version *oldp; - - add_id_list (versions->versionname, versions->local_names, true); - add_id_list (versions->versionname, versions->global_names, false); - - oldp = versions; - versions = versions->next; - } - while (versions != NULL); -} diff --git a/src/libld_elf_i386.map b/src/libld_elf_i386.map deleted file mode 100644 index 703af6d8..00000000 --- a/src/libld_elf_i386.map +++ /dev/null @@ -1,7 +0,0 @@ -ELFUTILS_1.0 { - global: - elf_i386_ld_init; - - local: - *; -}; diff --git a/src/nm.c b/src/nm.c deleted file mode 100644 index 1a297054..00000000 --- a/src/nm.c +++ /dev/null @@ -1,1302 +0,0 @@ -/* Print information from ELF file in human-readable form. - Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <ar.h> -#include <argp.h> -#include <assert.h> -#include <ctype.h> -#include <dwarf.h> -#include <errno.h> -#include <error.h> -#include <fcntl.h> -#include <gelf.h> -#include <inttypes.h> -#include <libdw.h> -#include <libebl.h> -#include <libintl.h> -#include <locale.h> -#include <mcheck.h> -#include <obstack.h> -#include <search.h> -#include <stdbool.h> -#include <stdio.h> -#include <stdio_ext.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <sys/param.h> - -#include <system.h> - - -/* Name and version of program. */ -static void print_version (FILE *stream, struct argp_state *state); -void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version; - - -/* Values for the parameters which have no short form. */ -#define OPT_DEFINED 0x100 -#define OPT_MARK_WEAK 0x101 - -/* Definitions of arguments for argp functions. */ -static const struct argp_option options[] = -{ - { NULL, 0, NULL, 0, N_("Output selection:"), 0 }, - { "debug-syms", 'a', NULL, 0, N_("Display debugger-only symbols"), 0 }, - { "defined-only", OPT_DEFINED, NULL, 0, N_("Display only defined symbols"), - 0 }, - { "dynamic", 'D', NULL, 0, - N_("Display dynamic symbols instead of normal symbols"), 0 }, - { "extern-only", 'g', NULL, 0, N_("Display only external symbols"), 0 }, - { "undefined-only", 'u', NULL, 0, N_("Display only undefined symbols"), 0 }, - { "print-armap", 's', NULL, 0, - N_("Include index for symbols from archive members"), 0 }, - - { NULL, 0, NULL, 0, N_("Output format:"), 0 }, - { "print-file-name", 'A', NULL, 0, - N_("Print name of the input file before every symbol"), 0 }, - { NULL, 'o', NULL, OPTION_HIDDEN, "Same as -A", 0 }, - { "format", 'f', "FORMAT", 0, - N_("Use the output format FORMAT. FORMAT can be `bsd', `sysv' or `posix'. The default is `sysv'"), - 0 }, - { NULL, 'B', NULL, 0, N_("Same as --format=bsd"), 0 }, - { "portability", 'P', NULL, 0, N_("Same as --format=posix"), 0 }, - { "radix", 't', "RADIX", 0, N_("Use RADIX for printing symbol values"), 0 }, - { "mark-weak", OPT_MARK_WEAK, NULL, 0, N_("Mark weak symbols"), 0 }, - { "print-size", 'S', NULL, 0, N_("Print size of defined symbols"), 0 }, - - { NULL, 0, NULL, 0, N_("Output options:"), 0 }, - { "numeric-sort", 'n', NULL, 0, N_("Sort symbols numerically by address"), - 0 }, - { "no-sort", 'p', NULL, 0, N_("Do not sort the symbols"), 0 }, - { "reverse-sort", 'r', NULL, 0, N_("Reverse the sense of the sort"), 0 }, - { NULL, 0, NULL, 0, N_("Miscellaneous:"), 0 }, - { NULL, 0, NULL, 0, NULL, 0 } -}; - -/* Short description of program. */ -static const char doc[] = N_("List symbols from FILEs (a.out by default)."); - -/* Strings for arguments in help texts. */ -static const char args_doc[] = N_("[FILE...]"); - -/* Prototype for option handler. */ -static error_t parse_opt (int key, char *arg, struct argp_state *state); - -/* Function to print some extra text in the help message. */ -static char *more_help (int key, const char *text, void *input); - -/* Data structure to communicate with argp functions. */ -static struct argp argp = -{ - options, parse_opt, args_doc, doc, NULL, more_help, NULL -}; - - -/* Print symbols in file named FNAME. */ -static int process_file (const char *fname, bool more_than_one); - -/* Handle content of archive. */ -static int handle_ar (int fd, Elf *elf, const char *prefix, const char *fname, - const char *suffix); - -/* Handle ELF file. */ -static int handle_elf (Elf *elf, const char *prefix, const char *fname, - const char *suffix); - - -#define INTERNAL_ERROR(fname) \ - error (EXIT_FAILURE, 0, gettext ("%s: INTERNAL ERROR %d (%s-%s): %s"), \ - fname, __LINE__, VERSION, __DATE__, elf_errmsg (-1)) - - -/* Internal representation of symbols. */ -typedef struct GElf_SymX -{ - GElf_Sym sym; - Elf32_Word xndx; - char *where; -} GElf_SymX; - - -/* User-selectable options. */ - -/* The selected output format. */ -static enum -{ - format_sysv = 0, - format_bsd, - format_posix -} format; - -/* Print defined, undefined, or both? */ -static bool hide_undefined; -static bool hide_defined; - -/* Print local symbols also? */ -static bool hide_local; - -/* Nonzero if full filename should precede every symbol. */ -static bool print_file_name; - -/* If true print size of defined symbols in BSD format. */ -static bool print_size; - -/* If true print archive index. */ -static bool print_armap; - -/* If true reverse sorting. */ -static bool reverse_sort; - -/* Type of the section we are printing. */ -static GElf_Word symsec_type = SHT_SYMTAB; - -/* Sorting selection. */ -static enum -{ - sort_name = 0, - sort_numeric, - sort_nosort -} sort; - -/* Radix for printed numbers. */ -static enum -{ - radix_hex = 0, - radix_decimal, - radix_octal -} radix; - -/* If nonzero weak symbols are distinguished from global symbols by adding - a `*' after the identifying letter for the symbol class and type. */ -static bool mark_weak; - - -int -main (int argc, char *argv[]) -{ - int remaining; - int result = 0; - - /* Make memory leak detection possible. */ - mtrace (); - - /* We use no threads here which can interfere with handling a stream. */ - (void) __fsetlocking (stdin, FSETLOCKING_BYCALLER); - (void) __fsetlocking (stdout, FSETLOCKING_BYCALLER); - (void) __fsetlocking (stderr, FSETLOCKING_BYCALLER); - - /* Set locale. */ - (void) setlocale (LC_ALL, ""); - - /* Make sure the message catalog can be found. */ - (void) bindtextdomain (PACKAGE, LOCALEDIR); - - /* Initialize the message catalog. */ - (void) textdomain (PACKAGE); - - /* Parse and process arguments. */ - (void) argp_parse (&argp, argc, argv, 0, &remaining, NULL); - - /* Tell the library which version we are expecting. */ - (void) elf_version (EV_CURRENT); - - if (remaining == argc) - /* The user didn't specify a name so we use a.out. */ - result = process_file ("a.out", false); - else - { - /* Process all the remaining files. */ - const bool more_than_one = remaining + 1 < argc; - - do - result |= process_file (argv[remaining], more_than_one); - while (++remaining < argc); - } - - return result; -} - - -/* Print the version information. */ -static void -print_version (FILE *stream, /*@unused@*/ struct argp_state *state) -{ - fprintf (stream, "nm (%s) %s\n", PACKAGE_NAME, VERSION); - fprintf (stream, gettext ("\ -Copyright (C) %s Red Hat, Inc.\n\ -This is free software; see the source for copying conditions. There is NO\n\ -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ -"), "2004"); - fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper"); -} - - -/* Handle program arguments. */ -static error_t -parse_opt (int key, char *arg, /*@unused@*/ struct argp_state *state) -{ - switch (key) - { - case 'a': - /* XXX */ - break; - - case 'f': - if (strcmp (arg, "bsd") == 0) - format = format_bsd; - else if (strcmp (arg, "posix") == 0) - format = format_posix; - else - /* Be bug compatible. The BFD implementation also defaulted to - using the SysV format if nothing else matches. */ - format = format_sysv; - break; - - case 'g': - hide_local = true; - break; - - case 'n': - sort = sort_numeric; - break; - - case 'p': - sort = sort_nosort; - break; - - case 't': - if (strcmp (arg, "10") == 0 || strcmp (arg, "d") == 0) - radix = radix_decimal; - else if (strcmp (arg, "8") == 0 || strcmp (arg, "o") == 0) - radix = radix_octal; - else - radix = radix_hex; - break; - - case 'u': - hide_undefined = false; - hide_defined = true; - break; - - case 'A': - case 'o': - print_file_name = true; - break; - - case 'B': - format = format_bsd; - break; - - case 'D': - symsec_type = SHT_DYNSYM; - break; - - case 'P': - format = format_posix; - break; - - case OPT_DEFINED: - hide_undefined = true; - hide_defined = false; - break; - - case OPT_MARK_WEAK: - mark_weak = true; - break; - - case 'S': - print_size = true; - break; - - case 's': - print_armap = true; - break; - - case 'r': - reverse_sort = true; - break; - - default: - return ARGP_ERR_UNKNOWN; - } - return 0; -} - - -static char * -more_help (int key, const char *text, /*@unused@*/ void *input) -{ - char *buf; - - switch (key) - { - case ARGP_KEY_HELP_EXTRA: - /* We print some extra information. */ - if (asprintf (&buf, gettext ("Please report bugs to %s.\n"), - PACKAGE_BUGREPORT) < 0) - buf = NULL; - return buf; - - default: - break; - } - return (char *) text; -} - - -/* Open the file and determine the type. */ -static int -process_file (const char *fname, bool more_than_one) -{ - /* Open the file. */ - int fd = open (fname, O_RDONLY); - if (fd == -1) - { - error (0, errno, fname); - return 1; - } - - /* Now get the ELF descriptor. */ - Elf *elf = elf_begin (fd, ELF_C_READ_MMAP, NULL); - if (elf != NULL) - { - if (elf_kind (elf) == ELF_K_ELF) - { - int result = handle_elf (elf, more_than_one ? "" : NULL, - fname, NULL); - - if (elf_end (elf) != 0) - INTERNAL_ERROR (fname); - - if (close (fd) != 0) - error (EXIT_FAILURE, errno, gettext ("while close `%s'"), fname); - - return result; - } - else if (elf_kind (elf) == ELF_K_AR) - { - int result = handle_ar (fd, elf, NULL, fname, NULL); - - if (elf_end (elf) != 0) - INTERNAL_ERROR (fname); - - if (close (fd) != 0) - error (EXIT_FAILURE, errno, gettext ("while close `%s'"), fname); - - return result; - } - - /* We cannot handle this type. Close the descriptor anyway. */ - if (elf_end (elf) != 0) - INTERNAL_ERROR (fname); - } - - error (0, 0, gettext ("%s: File format not recognized"), fname); - - return 1; -} - - -static int -handle_ar (int fd, Elf *elf, const char *prefix, const char *fname, - const char *suffix) -{ - size_t fname_len = strlen (fname) + 1; - size_t prefix_len = prefix != NULL ? strlen (prefix) : 0; - char new_prefix[prefix_len + fname_len + 2]; - size_t suffix_len = suffix != NULL ? strlen (suffix) : 0; - char new_suffix[suffix_len + 2]; - Elf *subelf; - Elf_Cmd cmd = ELF_C_READ_MMAP; - int result = 0; - - char *cp = new_prefix; - if (prefix != NULL) - cp = stpcpy (cp, prefix); - cp = stpcpy (cp, fname); - stpcpy (cp, "["); - - cp = new_suffix; - if (suffix != NULL) - cp = stpcpy (cp, suffix); - stpcpy (cp, "]"); - - /* First print the archive index if this is wanted. */ - if (print_armap) - { - Elf_Arsym *arsym = elf_getarsym (elf, NULL); - - if (arsym != NULL) - { - Elf_Arhdr *arhdr = NULL; - size_t arhdr_off = 0; /* Note: 0 is no valid offset. */ - - puts (gettext("\nArchive index:")); - - while (arsym->as_off != 0) - { - if (arhdr_off != arsym->as_off - && (elf_rand (elf, arsym->as_off) != arsym->as_off - || (subelf = elf_begin (fd, cmd, elf)) == NULL - || (arhdr = elf_getarhdr (subelf)) == NULL)) - { - error (0, 0, gettext ("invalid offset %zu for symbol %s"), - arsym->as_off, arsym->as_name); - continue; - } - - printf (gettext ("%s in %s\n"), arsym->as_name, arhdr->ar_name); - - ++arsym; - } - - if (elf_rand (elf, SARMAG) != SARMAG) - { - error (0, 0, - gettext ("cannot reset archive offset to beginning")); - return 1; - } - } - } - - /* Process all the files contained in the archive. */ - while ((subelf = elf_begin (fd, cmd, elf)) != NULL) - { - /* The the header for this element. */ - Elf_Arhdr *arhdr = elf_getarhdr (subelf); - - /* Skip over the index entries. */ - if (strcmp (arhdr->ar_name, "/") != 0 - && strcmp (arhdr->ar_name, "//") != 0) - { - if (elf_kind (subelf) == ELF_K_ELF) - result |= handle_elf (subelf, new_prefix, arhdr->ar_name, - new_suffix); - else if (elf_kind (subelf) == ELF_K_AR) - result |= handle_ar (fd, subelf, new_prefix, arhdr->ar_name, - new_suffix); - else - { - error (0, 0, gettext ("%s%s%s: file format not recognized"), - new_prefix, arhdr->ar_name, new_suffix); - result = 1; - } - } - - /* Get next archive element. */ - cmd = elf_next (subelf); - if (elf_end (subelf) != 0) - INTERNAL_ERROR (fname); - } - - return result; -} - - -/* Mapping of radix and binary class to length. */ -static const int length_map[2][3] = -{ - [ELFCLASS32 - 1] = - { - [radix_hex] = 8, - [radix_decimal] = 10, - [radix_octal] = 11 - }, - [ELFCLASS64 - 1] = - { - [radix_hex] = 16, - [radix_decimal] = 20, - [radix_octal] = 22 - } -}; - - -struct global_name -{ - Dwarf_Global global; - const char *name; -}; - - -static int -global_compare (const void *p1, const void *p2) -{ - const Dwarf_Global *g1 = (const Dwarf_Global *) p1; - const Dwarf_Global *g2 = (const Dwarf_Global *) p2; - - return strcmp (g1->name, g2->name); -} - - -static void *global_root; - - -static int -get_global (Dwarf *dbg, Dwarf_Global *global, void *arg) -{ - tsearch (memcpy (xmalloc (sizeof (Dwarf_Global)), global, - sizeof (Dwarf_Global)), - &global_root, global_compare); - - return DWARF_CB_OK; -} - - -struct local_name -{ - const char *name; - const char *file; - Dwarf_Word lineno; - Dwarf_Addr lowpc; - Dwarf_Addr highpc; -}; - - -static int -local_compare (const void *p1, const void *p2) -{ - struct local_name *g1 = (struct local_name *) p1; - struct local_name *g2 = (struct local_name *) p2; - int result; - - result = strcmp (g1->name, g2->name); - if (result == 0) - { - if (g1->lowpc <= g2->lowpc && g1->highpc >= g2->highpc) - { - /* g2 is contained in g1. Update the data. */ - g2->lowpc = g1->lowpc; - g2->highpc = g1->highpc; - result = 0; - } - else if (g2->lowpc <= g1->lowpc && g2->highpc >= g1->highpc) - { - /* g1 is contained in g2. Update the data. */ - g1->lowpc = g2->lowpc; - g1->highpc = g2->highpc; - result = 0; - } - else - result = g1->lowpc < g2->lowpc ? -1 : 1; - } - - return result; -} - - -static int -get_var_range (Dwarf_Die *die, Dwarf_Word *lowpc, Dwarf_Word *highpc) -{ - Dwarf_Attribute locattr_mem; - Dwarf_Attribute *locattr = dwarf_attr (die, DW_AT_location, &locattr_mem); - if (locattr == NULL) - return 1; - - Dwarf_Loc *loc; - size_t nloc; - if (dwarf_getloclist (locattr, &loc, &nloc) != 0) - return 1; - - /* Interpret the location expressions. */ - // XXX For now just the simple one: - if (nloc == 1 && loc[0].atom == DW_OP_addr) - { - *lowpc = *highpc = loc[0].number; - return 0; - } - - return 1; -} - - - -static void *local_root; - - -static void -get_local_names (Ebl *ebl, Dwarf *dbg) -{ - Dwarf_Off offset = 0; - Dwarf_Off old_offset; - size_t hsize; - - while (dwarf_nextcu (dbg, old_offset = offset, &offset, &hsize, NULL, NULL, - NULL) == 0) - { - Dwarf_Die cudie_mem; - Dwarf_Die *cudie = dwarf_offdie (dbg, old_offset + hsize, &cudie_mem); - - /* If we cannot get the CU DIE there is no need to go on with - this CU. */ - if (cudie == NULL) - continue; - /* This better be a CU DIE. */ - if (dwarf_tag (cudie) != DW_TAG_compile_unit) - continue; - - /* Get the line information. */ - Dwarf_Files *files; - size_t nfiles; - if (dwarf_getsrcfiles (cudie, &files, &nfiles) != 0) - continue; - - Dwarf_Die die_mem; - Dwarf_Die *die = &die_mem; - if (dwarf_child (cudie, die) == 0) - /* Iterate over all immediate children of the CU DIE. */ - do - { - int tag = dwarf_tag (die); - if (tag != DW_TAG_subprogram && tag != DW_TAG_variable) - continue; - - /* We are interested in five attributes: name, decl_file, - decl_line, low_pc, and high_pc. */ - Dwarf_Attribute attr_mem; - Dwarf_Attribute *attr = dwarf_attr (die, DW_AT_name, &attr_mem); - const char *name = dwarf_formstring (attr); - if (name == NULL) - continue; - - Dwarf_Word fileidx; - attr = dwarf_attr (die, DW_AT_decl_file, &attr_mem); - if (dwarf_formudata (attr, &fileidx) != 0 || fileidx >= nfiles) - continue; - - Dwarf_Word lineno; - attr = dwarf_attr (die, DW_AT_decl_line, &attr_mem); - if (dwarf_formudata (attr, &lineno) != 0 || lineno == 0) - continue; - - Dwarf_Addr lowpc; - Dwarf_Addr highpc; - if (tag == DW_TAG_subprogram) - { - if (dwarf_lowpc (die, &lowpc) != 0 - || dwarf_highpc (die, &highpc) != 0) - continue; - } - else - { - if (get_var_range (die, &lowpc, &highpc) != 0) - continue; - } - - /* We have all the information. Create a record. */ - struct local_name *newp - = (struct local_name *) xmalloc (sizeof (*newp)); - newp->name = name; - newp->file = dwarf_filesrc (files, fileidx, NULL, NULL); - newp->lineno = lineno; - newp->lowpc = lowpc; - newp->highpc = highpc; - - /* Since we cannot deallocate individual memory we do not test - for duplicates in the tree. This should not happen anyway. */ - if (tsearch (newp, &local_root, local_compare) == NULL) - error (EXIT_FAILURE, errno, - gettext ("cannot create search tree")); - } - while (dwarf_siblingof (die, die) == 0); - } -} - - -/* Show symbols in SysV format. */ -static void -show_symbols_sysv (Ebl *ebl, GElf_Word strndx, - const char *prefix, const char *fname, const char *fullname, - GElf_SymX *syms, size_t nsyms, int longest_name, - int longest_where) -{ - size_t shnum; - if (elf_getshnum (ebl->elf, &shnum) < 0) - INTERNAL_ERROR (fullname); - - bool scnnames_malloced = shnum * sizeof (const char *) > 128 * 1024; - const char **scnnames; - if (scnnames_malloced) - scnnames = (const char **) xmalloc (sizeof (const char *) * shnum); - else - scnnames = (const char **) alloca (sizeof (const char *) * shnum); - /* Get the section header string table index. */ - size_t shstrndx; - if (elf_getshstrndx (ebl->elf, &shstrndx) < 0) - error (EXIT_FAILURE, 0, - gettext ("cannot get section header string table index")); - - /* Cache the section names. */ - Elf_Scn *scn = NULL; - size_t cnt = 1; - while ((scn = elf_nextscn (ebl->elf, scn)) != NULL) - { - GElf_Shdr shdr_mem; - - assert (elf_ndxscn (scn) == cnt++); - - scnnames[elf_ndxscn (scn)] - = elf_strptr (ebl->elf, shstrndx, - gelf_getshdr (scn, &shdr_mem)->sh_name); - } - - int digits = length_map[gelf_getclass (ebl->elf) - 1][radix]; - - /* We always print this prolog. */ - if (prefix == NULL || 1) - printf (gettext ("\n\nSymbols from %s:\n\n"), fullname); - else - printf (gettext ("\n\nSymbols from %s[%s]:\n\n"), prefix, fname); - - /* The header line. */ - printf (gettext ("%*s%-*s %-*s Class Type %-*s %*s Section\n\n"), - print_file_name ? (int) strlen (fullname) + 1: 0, "", - longest_name, sgettext ("sysv|Name"), - /* TRANS: the "sysv|" parts makes the string unique. */ - digits, sgettext ("sysv|Value"), - /* TRANS: the "sysv|" parts makes the string unique. */ - digits, sgettext ("sysv|Size"), - /* TRANS: the "sysv|" parts makes the string unique. */ - longest_where, sgettext ("sysv|Line")); - - /* Which format string to use (different radix for numbers). */ - const char *fmtstr; - if (radix == radix_hex) - fmtstr = "%-*s|%0*" PRIx64 "|%-6s|%-8s|%*" PRIx64 "|%*s|%s\n"; - else if (radix == radix_decimal) - fmtstr = "%-*s|%*" PRId64 "|%-6s|%-8s|%*" PRId64 "|%*s|%s\n"; - else - fmtstr = "%-*s|%0*" PRIo64 "|%-6s|%-8s|%*" PRIo64 "|%*s|%s\n"; - - /* Iterate over all symbols. */ - for (cnt = 0; cnt < nsyms; ++cnt) - { - const char *symstr = elf_strptr (ebl->elf, strndx, - syms[cnt].sym.st_name); - char symbindbuf[50]; - char symtypebuf[50]; - char secnamebuf[1024]; - - /* If we have to precede the line with the file name. */ - if (print_file_name) - { - fputs_unlocked (fullname, stdout); - putchar_unlocked (':'); - } - - /* Print the actual string. */ - printf (fmtstr, - longest_name, symstr, - digits, syms[cnt].sym.st_value, - ebl_symbol_binding_name (ebl, - GELF_ST_BIND (syms[cnt].sym.st_info), - symbindbuf, sizeof (symbindbuf)), - ebl_symbol_type_name (ebl, GELF_ST_TYPE (syms[cnt].sym.st_info), - symtypebuf, sizeof (symtypebuf)), - digits, syms[cnt].sym.st_size, longest_where, syms[cnt].where, - ebl_section_name (ebl, syms[cnt].sym.st_shndx, syms[cnt].xndx, - secnamebuf, sizeof (secnamebuf), scnnames, - shnum)); - } - - if (scnnames_malloced) - free (scnnames); -} - - -static char -class_type_char (GElf_Sym *sym) -{ - int local_p = GELF_ST_BIND (sym->st_info) == STB_LOCAL; - - /* XXX Add support for architecture specific types and classes. */ - if (sym->st_shndx == SHN_ABS) - return local_p ? 'a' : 'A'; - - if (sym->st_shndx == SHN_UNDEF) - /* Undefined symbols must be global. */ - return 'U'; - - char result = "NDTSFB "[GELF_ST_TYPE (sym->st_info)]; - - return local_p ? tolower (result) : result; -} - - -static void -show_symbols_bsd (Elf *elf, GElf_Ehdr *ehdr, GElf_Word strndx, - const char *prefix, const char *fname, const char *fullname, - GElf_SymX *syms, size_t nsyms) -{ - int digits = length_map[gelf_getclass (elf) - 1][radix]; - - if (prefix != NULL && ! print_file_name) - printf ("\n%s:\n", fname); - - static const char *const fmtstrs[] = - { - [radix_hex] = "%0*" PRIx64 " %c%s %s\n", - [radix_decimal] = "%*" PRId64 " %c%s %s\n", - [radix_octal] = "%0*" PRIo64 " %c%s %s\n" - }; - static const char *const sfmtstrs[] = - { - [radix_hex] = "%2$0*1$" PRIx64 " %7$0*6$" PRIx64 " %3$c%4$s %5$s\n", - [radix_decimal] = "%2$*1$" PRId64 " %7$*6$" PRId64 " %3$c%4$s %5$s\n", - [radix_octal] = "%2$0*1$" PRIo64 " %7$0*6$" PRIo64 " %3$c%4$s %5$s\n" - }; - - /* Iterate over all symbols. */ - for (size_t cnt = 0; cnt < nsyms; ++cnt) - { - const char *symstr = elf_strptr (elf, strndx, syms[cnt].sym.st_name); - - /* Printing entries with a zero-length name makes the output - not very well parseable. Since these entries don't carry - much information we leave them out. */ - if (symstr[0] == '\0') - continue; - - /* If we have to precede the line with the file name. */ - if (print_file_name) - { - fputs_unlocked (fullname, stdout); - putchar_unlocked (':'); - } - - if (syms[cnt].sym.st_shndx == SHN_UNDEF) - printf ("%*s U%s %s\n", - digits, "", - mark_weak - ? (GELF_ST_BIND (syms[cnt].sym.st_info) == STB_WEAK - ? "*" : " ") - : "", - elf_strptr (elf, strndx, syms[cnt].sym.st_name)); - else - printf (print_size ? sfmtstrs[radix] : fmtstrs[radix], - digits, syms[cnt].sym.st_value, - class_type_char (&syms[cnt].sym), - mark_weak - ? (GELF_ST_BIND (syms[cnt].sym.st_info) == STB_WEAK - ? "*" : " ") - : "", - elf_strptr (elf, strndx, syms[cnt].sym.st_name), - digits, (uint64_t) syms[cnt].sym.st_size); - } -} - - -static void -show_symbols_posix (Elf *elf, GElf_Ehdr *ehdr, GElf_Word strndx, - const char *prefix, const char *fname, - const char *fullname, GElf_SymX *syms, size_t nsyms) -{ - if (prefix != NULL && ! print_file_name) - printf ("%s:\n", fullname); - - const char *fmtstr; - if (radix == radix_hex) - fmtstr = "%s %c%s %0*" PRIx64 " %0*" PRIx64 "\n"; - else if (radix == radix_decimal) - fmtstr = "%s %c%s %*" PRId64 " %*" PRId64 "\n"; - else - fmtstr = "%s %c%s %0*" PRIo64 " %0*" PRIo64 "\n"; - - int digits = length_map[gelf_getclass (elf) - 1][radix]; - - /* Iterate over all symbols. */ - for (size_t cnt = 0; cnt < nsyms; ++cnt) - { - const char *symstr = elf_strptr (elf, strndx, syms[cnt].sym.st_name); - - /* Printing entries with a zero-length name makes the output - not very well parseable. Since these entries don't carry - much information we leave them out. */ - if (symstr[0] == '\0') - continue; - - /* If we have to precede the line with the file name. */ - if (print_file_name) - { - fputs_unlocked (fullname, stdout); - putchar_unlocked (':'); - putchar_unlocked (' '); - } - - printf (fmtstr, - symstr, - class_type_char (&syms[cnt].sym), - mark_weak - ? (GELF_ST_BIND (syms[cnt].sym.st_info) == STB_WEAK ? "*" : " ") - : "", - digits, syms[cnt].sym.st_value, - digits, syms[cnt].sym.st_size); - } -} - - -/* Maximum size of memory we allocate on the stack. */ -#define MAX_STACK_ALLOC 65536 - -static void -show_symbols (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, Elf_Scn *xndxscn, - GElf_Shdr *shdr, const char *prefix, const char *fname, - const char *fullname) -{ - int sort_by_name (const void *p1, const void *p2) - { - GElf_SymX *s1 = (GElf_SymX *) p1; - GElf_SymX *s2 = (GElf_SymX *) p2; - int result; - - result = strcmp (elf_strptr (ebl->elf, shdr->sh_link, s1->sym.st_name), - elf_strptr (ebl->elf, shdr->sh_link, s2->sym.st_name)); - - return reverse_sort ? -result : result; - } - - int sort_by_address (const void *p1, const void *p2) - { - GElf_SymX *s1 = (GElf_SymX *) p1; - GElf_SymX *s2 = (GElf_SymX *) p2; - - int result = (s1->sym.st_value < s2->sym.st_value - ? -1 : (s1->sym.st_value == s2->sym.st_value ? 0 : 1)); - - return reverse_sort ? -result : result; - } - - /* Get the section header string table index. */ - size_t shstrndx; - if (elf_getshstrndx (ebl->elf, &shstrndx) < 0) - error (EXIT_FAILURE, 0, - gettext ("cannot get section header string table index")); - - /* The section is that large. */ - size_t size = shdr->sh_size; - /* One entry is this large. */ - size_t entsize = shdr->sh_entsize; - - /* Consistency checks. */ - if (entsize != gelf_fsize (ebl->elf, ELF_T_SYM, 1, ehdr->e_version)) - error (0, 0, - gettext ("%s: entry size in section `%s' is not what we expect"), - fullname, elf_strptr (ebl->elf, shstrndx, shdr->sh_name)); - else if (size % entsize != 0) - error (0, 0, - gettext ("%s: size of section `%s' is not multiple of entry size"), - fullname, elf_strptr (ebl->elf, shstrndx, shdr->sh_name)); - - /* Compute number of entries. Handle buggy entsize values. */ - size_t nentries = size / (entsize ?: 1); - - -#define obstack_chunk_alloc xmalloc -#define obstack_chunk_free free - struct obstack whereob; - obstack_init (&whereob); - - /* Get a DWARF debugging descriptor. It's no problem if this isn't - possible. We just won't print any line number information. */ - Dwarf *dbg = NULL; - if (format == format_sysv) - { - dbg = dwarf_begin_elf (ebl->elf, DWARF_C_READ, NULL); - if (dbg != NULL) - { - (void) dwarf_getpubnames (dbg, get_global, NULL, 0); - - get_local_names (ebl, dbg); - } - } - - /* Allocate the memory. - - XXX We can use a dirty trick here. Since GElf_Sym == Elf64_Sym we - can use the data memory instead of copying again if what we read - is a 64 bit file. */ - GElf_SymX *sym_mem; - if (nentries * sizeof (GElf_SymX) < MAX_STACK_ALLOC) - sym_mem = (GElf_SymX *) alloca (nentries * sizeof (GElf_SymX)); - else - sym_mem = (GElf_SymX *) xmalloc (nentries * sizeof (GElf_SymX)); - - /* Get the data of the section. */ - Elf_Data *data = elf_getdata (scn, NULL); - Elf_Data *xndxdata = elf_getdata (xndxscn, NULL); - if (data == NULL || (xndxscn != NULL && xndxdata == NULL)) - INTERNAL_ERROR (fullname); - - /* Iterate over all symbols. */ - int longest_name = 4; - int longest_where = 4; - size_t nentries_used = 0; - for (size_t cnt = 0; cnt < nentries; ++cnt) - { - GElf_Sym *sym = gelf_getsymshndx (data, xndxdata, cnt, - &sym_mem[nentries_used].sym, - &sym_mem[nentries_used].xndx); - if (sym == NULL) - INTERNAL_ERROR (fullname); - - /* Filter out administrative symbols without a name and those - deselected by ther user with command line options. */ - if ((hide_undefined && sym->st_shndx == SHN_UNDEF) - || (hide_defined && sym->st_shndx != SHN_UNDEF) - || (hide_local && GELF_ST_BIND (sym->st_info) == STB_LOCAL)) - continue; - - sym_mem[nentries_used].where = ""; - if (format == format_sysv) - { - const char *symstr = elf_strptr (ebl->elf, shdr->sh_link, - sym->st_name); - - longest_name = MAX ((size_t) longest_name, strlen (symstr)); - - if (sym->st_shndx != SHN_UNDEF - && GELF_ST_BIND (sym->st_info) != STB_LOCAL - && global_root != NULL) - { - Dwarf_Global fake = { .name = symstr }; - Dwarf_Global **found = tfind (&fake, &global_root, - global_compare); - if (found != NULL) - { - Dwarf_Die die_mem; - Dwarf_Die *die = dwarf_offdie (dbg, (*found)->die_offset, - &die_mem); - - Dwarf_Die cudie_mem; - Dwarf_Die *cudie = NULL; - - Dwarf_Addr lowpc; - Dwarf_Addr highpc; - if (die != NULL - && dwarf_lowpc (die, &lowpc) == 0 - && lowpc <= sym->st_value - && dwarf_highpc (die, &highpc) == 0 - && highpc > sym->st_value) - cudie = dwarf_offdie (dbg, (*found)->cu_offset, - &cudie_mem); - if (cudie != NULL) - { - Dwarf_Line *line = dwarf_getsrc_die (cudie, - sym->st_value); - if (line != NULL) - { - /* We found the line. */ - int lineno; - (void) dwarf_lineno (line, &lineno); - int n; - n = obstack_printf (&whereob, "%s:%d%c", - basename (dwarf_linesrc (line, - NULL, - NULL)), - lineno, '\0'); - sym_mem[nentries_used].where - = obstack_finish (&whereob); - - /* The return value of obstack_print included the - NUL byte, so subtract one. */ - if (--n > (int) longest_where) - longest_where = (size_t) n; - } - } - } - } - - /* Try to find the symol among the local symbols. */ - if (sym_mem[nentries_used].where[0] == '\0') - { - struct local_name fake = - { - .name = symstr, - .lowpc = sym->st_value, - .highpc = sym->st_value, - }; - struct local_name **found = tfind (&fake, &local_root, - local_compare); - if (found != NULL) - { - /* We found the line. */ - int n = obstack_printf (&whereob, "%s:%" PRIu64 "%c", - basename ((*found)->file), - (*found)->lineno, - '\0'); - sym_mem[nentries_used].where = obstack_finish (&whereob); - - /* The return value of obstack_print included the - NUL byte, so subtract one. */ - if (--n > (int) longest_where) - longest_where = (size_t) n; - } - } - } - - /* We use this entry. */ - ++nentries_used; - } - /* Now we know the exact number. */ - nentries = nentries_used; - - /* Sort the entries according to the users wishes. */ - if (sort == sort_name) - qsort (sym_mem, nentries, sizeof (GElf_SymX), sort_by_name); - else if (sort == sort_numeric) - qsort (sym_mem, nentries, sizeof (GElf_SymX), sort_by_address); - - /* Finally print according to the users selection. */ - switch (format) - { - case format_sysv: - show_symbols_sysv (ebl, shdr->sh_link, prefix, fname, - fullname, sym_mem, nentries, longest_name, - longest_where); - break; - - case format_bsd: - show_symbols_bsd (ebl->elf, ehdr, shdr->sh_link, prefix, fname, - fullname, sym_mem, nentries); - break; - - case format_posix: - default: - assert (format == format_posix); - show_symbols_posix (ebl->elf, ehdr, shdr->sh_link, prefix, fname, - fullname, sym_mem, nentries); - break; - } - - /* Free all memory. */ - if (nentries * sizeof (GElf_Sym) >= MAX_STACK_ALLOC) - free (sym_mem); - - obstack_free (&whereob, NULL); - - if (dbg != NULL) - { - tdestroy (global_root, free); - global_root = NULL; - - tdestroy (local_root, free); - local_root = NULL; - - (void) dwarf_end (dbg); - } -} - - -static int -handle_elf (Elf *elf, const char *prefix, const char *fname, - const char *suffix) -{ - size_t prefix_len = prefix == NULL ? 0 : strlen (prefix); - size_t suffix_len = suffix == NULL ? 0 : strlen (suffix); - size_t fname_len = strlen (fname) + 1; - char fullname[prefix_len + 1 + fname_len + suffix_len]; - char *cp = fullname; - Elf_Scn *scn = NULL; - int any = 0; - int result = 0; - GElf_Ehdr ehdr_mem; - GElf_Ehdr *ehdr; - Ebl *ebl; - - /* Get the backend for this object file type. */ - ebl = ebl_openbackend (elf); - - /* We need the ELF header in a few places. */ - ehdr = gelf_getehdr (elf, &ehdr_mem); - if (ehdr == NULL) - INTERNAL_ERROR (fullname); - - /* If we are asked to print the dynamic symbol table and this is - executable or dynamic executable, fail. */ - if (symsec_type == SHT_DYNSYM - && ehdr->e_type != ET_EXEC && ehdr->e_type != ET_DYN) - { - /* XXX Add machine specific object file types. */ - error (0, 0, gettext ("%s%s%s%s: Invalid operation"), - prefix ?: "", prefix ? "(" : "", fname, prefix ? ")" : ""); - result = 1; - goto out; - } - - /* Create the full name of the file. */ - if (prefix != NULL) - cp = mempcpy (cp, prefix, prefix_len); - cp = mempcpy (cp, fname, fname_len); - if (suffix != NULL) - memcpy (cp - 1, suffix, suffix_len + 1); - - /* Find the symbol table. - - XXX Can there be more than one? Do we print all? Currently we do. */ - while ((scn = elf_nextscn (elf, scn)) != NULL) - { - GElf_Shdr shdr_mem; - GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); - - if (shdr == NULL) - INTERNAL_ERROR (fullname); - - if (shdr->sh_type == symsec_type) - { - Elf_Scn *xndxscn = NULL; - - /* We have a symbol table. First make sure we remember this. */ - any = 1; - - /* Look for an extended section index table for this section. */ - if (symsec_type == SHT_SYMTAB) - { - size_t scnndx = elf_ndxscn (scn); - - while ((xndxscn = elf_nextscn (elf, xndxscn)) != NULL) - { - GElf_Shdr xndxshdr_mem; - GElf_Shdr *xndxshdr = gelf_getshdr (xndxscn, &xndxshdr_mem); - - if (xndxshdr == NULL) - INTERNAL_ERROR (fullname); - - if (xndxshdr->sh_type == SHT_SYMTAB_SHNDX - && xndxshdr->sh_link == scnndx) - break; - } - } - - show_symbols (ebl, ehdr, scn, xndxscn, shdr, prefix, fname, - fullname); - } - } - - if (! any) - { - error (0, 0, gettext ("%s%s%s: no symbols"), - prefix ?: "", prefix ? ":" : "", fname); - result = 1; - } - - out: - /* Close the ELF backend library descriptor. */ - ebl_closebackend (ebl); - - return result; -} diff --git a/src/none_ld.c b/src/none_ld.c deleted file mode 100644 index fb0f0fb2..00000000 --- a/src/none_ld.c +++ /dev/null @@ -1 +0,0 @@ -/* Nothing here. This is just a testimony of automake inflexibility. */ diff --git a/src/readelf.c b/src/readelf.c deleted file mode 100644 index 6129e29d..00000000 --- a/src/readelf.c +++ /dev/null @@ -1,4541 +0,0 @@ -/* Print information from ELF file in human-readable form. - Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1999. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <argp.h> -#include <assert.h> -#include <dwarf.h> -#include <errno.h> -#include <error.h> -#include <fcntl.h> -#include <gelf.h> -#include <inttypes.h> -#include <langinfo.h> -#include <libdw.h> -#include <libebl.h> -#include <libintl.h> -#include <locale.h> -#include <stdbool.h> -#include <stdlib.h> -#include <string.h> -#include <time.h> -#include <unistd.h> -#include <sys/param.h> - -#include <system.h> -#include "../libdw/libdwP.h" -#include "../libdw/memory-access.h" - - -/* Name and version of program. */ -static void print_version (FILE *stream, struct argp_state *state); -void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version; - -/* Definitions of arguments for argp functions. */ -static const struct argp_option options[] = -{ - { NULL, 0, NULL, 0, N_("Output selection:") }, - { "all", 'a', NULL, 0, N_("Equivalent to: -h -l") }, - { "dynamic", 'd', NULL, 0, N_("Display the dynamic segment") }, - { "file-header", 'h', NULL, 0, N_("Display the ELF file header") }, - { "histogram", 'I', NULL, 0, - N_("Display histogram of bucket list lengths") }, - { "program-headers", 'l', NULL, 0, N_("Display the program headers") }, - { "relocs", 'r', NULL, 0, N_("Display relocations") }, - { "section-headers", 'S', NULL, 0, N_("Display the sections' header") }, - { "symbols", 's', NULL, 0, N_("Display the symbol table") }, - { "version-info", 'V', NULL, 0, N_("Display versioning information") }, - { "debug-dump", 'w', "SECTION", OPTION_ARG_OPTIONAL, - N_("Display DWARF section content. SECTION can be one of abbrev, " - "aranges, frame, info, loc, line, pubnames, str, or macinfo.") }, - { "notes", 'n', NULL, 0, N_("Display the core notes") }, - { "arch-specific", 'A', NULL, 0, - N_("Display architecture specific information (if any)") }, - - { NULL, 0, NULL, 0, N_("Output control:") }, - - { NULL, 0, NULL, 0, NULL } -}; - -/* Short description of program. */ -static const char doc[] = N_("\ -Print information from ELF file in human-readable form."); - -/* Strings for arguments in help texts. */ -static const char args_doc[] = N_("FILE..."); - -/* Prototype for option handler. */ -static error_t parse_opt (int key, char *arg, struct argp_state *state); - -/* Function to print some extra text in the help message. */ -static char *more_help (int key, const char *text, void *input); - -/* Data structure to communicate with argp functions. */ -static struct argp argp = -{ - options, parse_opt, args_doc, doc, NULL, more_help -}; - - -/* Flags set by the option controlling the output. */ - -/* True if any of the control options is set. */ -static bool any_control_option; - -/* True if dynamic segment should be printed. */ -static bool print_dynamic_table; - -/* True if the file header should be printed. */ -static bool print_file_header; - -/* True if the program headers should be printed. */ -static bool print_program_header; - -/* True if relocations should be printed. */ -static bool print_relocations; - -/* True if the section headers should be printed. */ -static bool print_section_header; - -/* True if the symbol table should be printed. */ -static bool print_symbol_table; - -/* True if the version information should be printed. */ -static bool print_version_info; - -/* True if section groups should be printed. */ -static bool print_section_groups; - -/* True if bucket list length histogram should be printed. */ -static bool print_histogram; - -/* True if the architecture specific data should be printed. */ -static bool print_arch; - -/* True if note section content should be printed. */ -static bool print_notes; - -/* Select printing of debugging sections. */ -static enum section_e -{ - section_abbrev = 1, /* .debug_abbrev */ - section_aranges = 2, /* .debug_aranges */ - section_frame = 4, /* .debug_frame or .eh_frame */ - section_info = 8, /* .debug_info */ - section_line = 16, /* .debug_line */ - section_loc = 32, /* .debug_loc */ - section_pubnames = 64,/* .debug_pubnames */ - section_str = 128, /* .debug_str */ - section_macinfo = 256,/* .debug_macinfo */ - section_all = (section_abbrev | section_aranges | section_frame - | section_info | section_line | section_loc - | section_pubnames | section_str | section_macinfo) -} print_debug_sections; - -/* Number of sections in the file. */ -static size_t shnum; - - -/* Declarations of local functions. */ -static void process_file (int fd, Elf *elf, const char *prefix, - const char *fname, bool only_one); -static void process_elf_file (Elf *elf, const char *prefix, const char *fname, - bool only_one); -static void print_ehdr (Ebl *ebl, GElf_Ehdr *ehdr); -static void print_shdr (Ebl *ebl, GElf_Ehdr *ehdr); -static void print_phdr (Ebl *ebl, GElf_Ehdr *ehdr); -static void print_scngrp (Ebl *ebl, GElf_Ehdr *ehdr); -static void print_dynamic (Ebl *ebl, GElf_Ehdr *ehdr); -static void print_relocs (Ebl *ebl, GElf_Ehdr *ehdr); -static void handle_relocs_rel (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, - GElf_Shdr *shdr); -static void handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, - GElf_Shdr *shdr); -static void print_symtab (Ebl *ebl, GElf_Ehdr *ehdr, int type); -static void handle_symtab (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, - GElf_Shdr *shdr); -static void print_verinfo (Ebl *ebl, GElf_Ehdr *ehdr); -static void handle_verneed (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, - GElf_Shdr *shdr); -static void handle_verdef (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, - GElf_Shdr *shdr); -static void handle_versym (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, - GElf_Shdr *shdr); -static void print_debug (Ebl *ebl, GElf_Ehdr *ehdr); -static void handle_hash (Ebl *ebl, GElf_Ehdr *ehdr); -static void handle_notes (Ebl *ebl, GElf_Ehdr *ehdr); -static void print_liblist (Ebl *ebl, GElf_Ehdr *ehdr); - - -int -main (int argc, char *argv[]) -{ - int remaining; - bool only_one; - - /* Set locale. */ - setlocale (LC_ALL, ""); - - /* Initialize the message catalog. */ - textdomain (PACKAGE); - - /* Parse and process arguments. */ - argp_parse (&argp, argc, argv, 0, &remaining, NULL); - - /* If no control option or no ELF file is given punt. */ - if ((any_control_option == 0 && print_debug_sections == 0) - || remaining >= argc) - { - argp_help (&argp, stdout, ARGP_HELP_SEE | ARGP_HELP_EXIT_ERR, - program_invocation_short_name); - exit (1); - } - - /* Before we start tell the ELF library which version we are using. */ - elf_version (EV_CURRENT); - - /* Now process all the files given at the command line. */ - only_one = remaining + 1 == argc; - do - { - int fd; - Elf *elf; - - /* Open the file. */ - fd = open (argv[remaining], O_RDONLY); - if (fd == -1) - { - error (0, errno, gettext ("cannot open input file")); - continue; - } - - /* Create an `Elf' descriptor. */ - elf = elf_begin (fd, ELF_C_READ_MMAP, NULL); - if (elf == NULL) - error (0, 0, gettext ("cannot generate Elf descriptor: %s\n"), - elf_errmsg (-1)); - else - { - process_file (fd, elf, NULL, argv[remaining], only_one); - - /* Now we can close the descriptor. */ - if (elf_end (elf) != 0) - error (0, 0, gettext ("error while closing Elf descriptor: %s"), - elf_errmsg (-1)); - } - - close (fd); - } - while (++remaining < argc); - - return error_message_count != 0; -} - - -/* Handle program arguments. */ -static error_t -parse_opt (int key, char *arg, struct argp_state *state) -{ - switch (key) - { - case 'a': - print_file_header = true; - print_program_header = true; - print_relocations = true; - print_section_header = true; - print_symbol_table = true; - print_version_info = true; - print_dynamic_table = true; - print_section_groups = true; - print_histogram = true; - print_arch = true; - print_notes = true; - any_control_option = true; - break; - case 'A': - print_arch = true; - any_control_option = true; - break; - case 'd': - print_dynamic_table = true; - any_control_option = true; - break; - case 'g': - print_section_groups = true; - any_control_option = true; - break; - case 'h': - print_file_header = true; - any_control_option = true; - break; - case 'I': - print_histogram = true; - any_control_option = true; - break; - case 'l': - print_program_header = true; - any_control_option = true; - break; - case 'n': - print_notes = true; - any_control_option = true; - break; - case 'r': - print_relocations = true; - any_control_option = true; - break; - case 'S': - print_section_header = true; - any_control_option = true; - break; - case 's': - print_symbol_table = true; - any_control_option = true; - break; - case 'V': - print_version_info = true; - any_control_option = true; - break; - case 'w': - if (arg == NULL) - print_debug_sections = section_all; - else if (strcmp (arg, "abbrev") == 0) - print_debug_sections |= section_abbrev; - else if (strcmp (arg, "aranges") == 0) - print_debug_sections |= section_aranges; - else if (strcmp (arg, "frame") == 0) - print_debug_sections |= section_frame; - else if (strcmp (arg, "info") == 0) - print_debug_sections |= section_info; - else if (strcmp (arg, "loc") == 0) - print_debug_sections |= section_loc; - else if (strcmp (arg, "line") == 0) - print_debug_sections |= section_line; - else if (strcmp (arg, "pubnames") == 0) - print_debug_sections |= section_pubnames; - else if (strcmp (arg, "str") == 0) - print_debug_sections |= section_str; - else if (strcmp (arg, "macinfo") == 0) - print_debug_sections |= section_macinfo; - else - { - fprintf (stderr, gettext ("Unknown DWARF debug section `%s'.\n"), - arg); - argp_help (&argp, stderr, ARGP_HELP_SEE, - program_invocation_short_name); - exit (1); - } - break; - default: - return ARGP_ERR_UNKNOWN; - } - return 0; -} - - -static char * -more_help (int key, const char *text, void *input) -{ - char *buf; - - switch (key) - { - case ARGP_KEY_HELP_EXTRA: - /* We print some extra information. */ - if (asprintf (&buf, gettext ("Please report bugs to %s.\n"), - PACKAGE_BUGREPORT) < 0) - buf = NULL; - return buf; - - default: - break; - } - return (char *) text; -} - - -/* Print the version information. */ -static void -print_version (FILE *stream, struct argp_state *state) -{ - fprintf (stream, "readelf (%s) %s\n", PACKAGE_NAME, VERSION); - fprintf (stream, gettext ("\ -Copyright (C) %s Red Hat, Inc.\n\ -This is free software; see the source for copying conditions. There is NO\n\ -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ -"), "2004"); - fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper"); -} - - -/* Process one file. */ -static void -process_file (int fd, Elf *elf, const char *prefix, const char *fname, - bool only_one) -{ - /* We can handle two types of files: ELF files and archives. */ - Elf_Kind kind = elf_kind (elf); - struct stat64 st; - - switch (kind) - { - case ELF_K_ELF: - /* Yes! It's an ELF file. */ - process_elf_file (elf, prefix, fname, only_one); - break; - - case ELF_K_AR: - { - Elf *subelf; - Elf_Cmd cmd = ELF_C_READ_MMAP; - size_t prefix_len = prefix == NULL ? 0 : strlen (prefix); - size_t fname_len = strlen (fname) + 1; - char new_prefix[prefix_len + 1 + fname_len]; - char *cp = new_prefix; - - /* Create the full name of the file. */ - if (prefix != NULL) - { - cp = mempcpy (cp, prefix, prefix_len); - *cp++ = ':'; - } - memcpy (cp, fname, fname_len); - - /* It's an archive. We process each file in it. */ - while ((subelf = elf_begin (fd, cmd, elf)) != NULL) - { - kind = elf_kind (subelf); - - /* Call this function recursively. */ - if (kind == ELF_K_ELF || kind == ELF_K_AR) - { - Elf_Arhdr *arhdr = elf_getarhdr (subelf); - assert (arhdr != NULL); - - process_file (fd, subelf, new_prefix, arhdr->ar_name, false); - } - - /* Get next archive element. */ - cmd = elf_next (subelf); - if (elf_end (subelf) != 0) - error (0, 0, - gettext (" error while freeing sub-ELF descriptor: %s\n"), - elf_errmsg (-1)); - } - } - break; - - default: - if (fstat64 (fd, &st) != 0) - error (0, errno, gettext ("cannot stat input file")); - else if (st.st_size == 0) - error (0, 0, gettext ("input file is empty")); - else - /* We cannot do anything. */ - error (0, 0, gettext ("\ -Not an ELF file - it has the wrong magic bytes at the start")); - break; - } -} - - -/* Process one file. */ -static void -process_elf_file (Elf *elf, const char *prefix, const char *fname, - bool only_one) -{ - GElf_Ehdr ehdr_mem; - GElf_Ehdr *ehdr = gelf_getehdr (elf, &ehdr_mem); - Ebl *ebl; - - /* Print the file name. */ - if (!only_one) - { - if (prefix != NULL) - printf ("\n%s(%s):\n\n", prefix, fname); - else - printf ("\n%s:\n\n", fname); - } - - if (ehdr == NULL) - { - error (0, 0, gettext ("cannot read ELF header: %s"), elf_errmsg (-1)); - return; - } - - ebl = ebl_openbackend (elf); - if (ebl == NULL) - { - error (0, errno, gettext ("cannot create EBL handle")); - return; - } - - /* Determine the number of sections. */ - if (elf_getshnum (ebl->elf, &shnum) < 0) - error (EXIT_FAILURE, 0, - gettext ("cannot determine number of sections: %s"), - elf_errmsg (-1)); - - if (print_file_header) - print_ehdr (ebl, ehdr); - if (print_section_header) - print_shdr (ebl, ehdr); - if (print_program_header) - print_phdr (ebl, ehdr); - if (print_section_groups) - print_scngrp (ebl, ehdr); - if (print_dynamic_table) - print_dynamic (ebl, ehdr); - if (print_relocations) - print_relocs (ebl, ehdr); - if (print_histogram) - handle_hash (ebl, ehdr); - if (print_symbol_table) - print_symtab (ebl, ehdr, SHT_DYNSYM); - if (print_version_info) - print_verinfo (ebl, ehdr); - if (print_symbol_table) - print_symtab (ebl, ehdr, SHT_SYMTAB); - if (print_arch) - print_liblist (ebl, ehdr); - if (print_debug_sections != 0) - print_debug (ebl, ehdr); - if (print_notes) - handle_notes (ebl, ehdr); - - ebl_closebackend (ebl); -} - - -/* Print file type. */ -static void -print_file_type (unsigned short int e_type) -{ - if (e_type <= ET_CORE) - { - static const char *knowntypes[] = - { - N_("NONE (None)"), - N_("REL (Relocatable file)"), - N_("EXEC (Executable file)"), - N_("DYN (Shared object file)"), - N_("CORE (Core file)") - }; - puts (gettext (knowntypes[e_type])); - } - else if (e_type >= ET_LOOS && e_type <= ET_HIOS) - printf (gettext ("OS Specific: (%x)\n"), e_type); - else if (e_type >= ET_LOPROC /* && e_type <= ET_HIPROC always true */) - printf (gettext ("Processor Specific: (%x)\n"), e_type); - else - puts ("???"); -} - - -/* Print ELF header. */ -static void -print_ehdr (Ebl *ebl, GElf_Ehdr *ehdr) -{ - char buf[512]; - size_t cnt; - - fputs_unlocked (gettext ("ELF Header:\n Magic: "), stdout); - for (cnt = 0; cnt < EI_NIDENT; ++cnt) - printf (" %02hhx", ehdr->e_ident[cnt]); - - printf (gettext ("\n Class: %s\n"), - ehdr->e_ident[EI_CLASS] == ELFCLASS32 ? "ELF32" - : ehdr->e_ident[EI_CLASS] == ELFCLASS64 ? "ELF64" - : "\?\?\?"); - - printf (gettext (" Data: %s\n"), - ehdr->e_ident[EI_DATA] == ELFDATA2LSB - ? "2's complement, little endian" - : ehdr->e_ident[EI_DATA] == ELFDATA2MSB - ? "2's complement, big endian" : "\?\?\?"); - - printf (gettext (" Version: %hhd %s\n"), - ehdr->e_ident[EI_VERSION], - ehdr->e_ident[EI_VERSION] == EV_CURRENT ? gettext ("(current)") - : "(\?\?\?)"); - - printf (gettext (" OS/ABI: %s\n"), - ebl_osabi_name (ebl, ehdr->e_ident[EI_OSABI], buf, sizeof (buf))); - - printf (gettext (" ABI Version: %hhd\n"), - ehdr->e_ident[EI_ABIVERSION]); - - fputs_unlocked (gettext (" Type: "), stdout); - print_file_type (ehdr->e_type); - - printf (gettext (" Machine: %s\n"), ebl->name); - - printf (gettext (" Version: %d %s\n"), - ehdr->e_version, - ehdr->e_version == EV_CURRENT ? gettext ("(current)") : "(\?\?\?)"); - - printf (gettext (" Entry point address: %#" PRIx64 "\n"), - ehdr->e_entry); - - printf (gettext (" Start of program headers: %" PRId64 " %s\n"), - ehdr->e_phoff, gettext ("(bytes into file)")); - - printf (gettext (" Start of section headers: %" PRId64 " %s\n"), - ehdr->e_shoff, gettext ("(bytes into file)")); - - printf (gettext (" Flags: %s\n"), - ebl_machine_flag_name (ebl, ehdr->e_flags, buf, sizeof (buf))); - - printf (gettext (" Size of this header: %" PRId16 " %s\n"), - ehdr->e_ehsize, gettext ("(bytes)")); - - printf (gettext (" Size of program header entries: %" PRId16 " %s\n"), - ehdr->e_phentsize, gettext ("(bytes)")); - - printf (gettext (" Number of program headers entries: %" PRId16 "\n"), - ehdr->e_phnum); - - printf (gettext (" Size of section header entries: %" PRId16 " %s\n"), - ehdr->e_shentsize, gettext ("(bytes)")); - - printf (gettext (" Number of section headers entries: %" PRId16), - ehdr->e_shnum); - if (ehdr->e_shnum == 0) - { - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - - shdr = gelf_getshdr (elf_getscn (ebl->elf, 0), &shdr_mem); - if (shdr != NULL) - printf (gettext (" (%" PRIu32 " in [0].sh_size)"), - (uint32_t) shdr->sh_size); - else - fputs_unlocked (gettext (" ([0] not available)"), stdout); - } - fputc_unlocked ('\n', stdout); - - if (ehdr->e_shstrndx == SHN_XINDEX) - { - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - - shdr = gelf_getshdr (elf_getscn (ebl->elf, 0), &shdr_mem); - if (shdr != NULL) - /* We managed to get the zeroth section. */ - snprintf (buf, sizeof (buf), gettext (" (%" PRIu32 " in [0].sh_link)"), - (uint32_t) shdr->sh_link); - else - { - strncpy (buf, gettext (" ([0] not available)"), sizeof (buf)); - buf[sizeof (buf) - 1] = '\0'; - } - - printf (gettext (" Section header string table index: XINDEX%s\n\n"), - buf); - } - else - printf (gettext (" Section header string table index: %" PRId16 "\n\n"), - ehdr->e_shstrndx); -} - - -static const char * -get_visibility_type (int value) -{ - switch (value) - { - case STV_DEFAULT: - return "DEFAULT"; - case STV_INTERNAL: - return "INTERNAL"; - case STV_HIDDEN: - return "HIDDEN"; - case STV_PROTECTED: - return "PROTECTED"; - default: - return "???"; - } -} - - -/* Print the section headers. */ -static void -print_shdr (Ebl *ebl, GElf_Ehdr *ehdr) -{ - size_t cnt; - size_t shstrndx; - - if (! print_file_header) - printf (gettext ("\ -There are %d section headers, starting at offset %#" PRIx64 ":\n\ -\n"), - ehdr->e_shnum, ehdr->e_shoff); - - /* Get the section header string table index. */ - if (elf_getshstrndx (ebl->elf, &shstrndx) < 0) - error (EXIT_FAILURE, 0, - gettext ("cannot get section header string table index")); - - puts (gettext ("Section Headers:")); - - if (ehdr->e_ident[EI_CLASS] == ELFCLASS32) - puts (gettext ("[Nr] Name Type Addr Off Size ES Flags Lk Inf Al")); - else - puts (gettext ("[Nr] Name Type Addr Off Size ES Flags Lk Inf Al")); - - for (cnt = 0; cnt < shnum; ++cnt) - { - char buf[128]; - char flagbuf[20]; - char *cp; - Elf_Scn *scn = elf_getscn (ebl->elf, cnt); - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - - if (scn == NULL) - error (EXIT_FAILURE, 0, gettext ("cannot get section: %s"), - elf_errmsg (-1)); - - /* Get the section header. */ - shdr = gelf_getshdr (scn, &shdr_mem); - if (shdr == NULL) - error (EXIT_FAILURE, 0, gettext ("cannot get section header: %s"), - elf_errmsg (-1)); - - cp = flagbuf; - if (shdr->sh_flags & SHF_WRITE) - *cp++ = 'W'; - if (shdr->sh_flags & SHF_ALLOC) - *cp++ = 'A'; - if (shdr->sh_flags & SHF_EXECINSTR) - *cp++ = 'X'; - if (shdr->sh_flags & SHF_MERGE) - *cp++ = 'M'; - if (shdr->sh_flags & SHF_STRINGS) - *cp++ = 'S'; - if (shdr->sh_flags & SHF_INFO_LINK) - *cp++ = 'I'; - if (shdr->sh_flags & SHF_LINK_ORDER) - *cp++ = 'L'; - if (shdr->sh_flags & SHF_OS_NONCONFORMING) - *cp++ = 'N'; - if (shdr->sh_flags & SHF_GROUP) - *cp++ = 'G'; - if (shdr->sh_flags & SHF_TLS) - *cp++ = 'T'; - if (shdr->sh_flags & SHF_ORDERED) - *cp++ = 'O'; - if (shdr->sh_flags & SHF_EXCLUDE) - *cp++ = 'E'; - *cp = '\0'; - - printf ("[%2zu] %-20s %-12s %0*" PRIx64 " %0*" PRIx64 " %0*" PRIx64 - " %2" PRId64 " %-5s %2" PRId32 " %3" PRId32 - " %2" PRId64 "\n", - cnt, - elf_strptr (ebl->elf, shstrndx, shdr->sh_name) - ?: "<corrupt>", - ebl_section_type_name (ebl, shdr->sh_type, buf, sizeof (buf)), - ehdr->e_ident[EI_CLASS] == ELFCLASS32 ? 8 : 16, shdr->sh_addr, - ehdr->e_ident[EI_CLASS] == ELFCLASS32 ? 6 : 8, shdr->sh_offset, - ehdr->e_ident[EI_CLASS] == ELFCLASS32 ? 6 : 8, shdr->sh_size, - shdr->sh_entsize, flagbuf, shdr->sh_link, shdr->sh_info, - shdr->sh_addralign); - } - - fputc_unlocked ('\n', stdout); -} - - -/* Print the program header. */ -static void -print_phdr (Ebl *ebl, GElf_Ehdr *ehdr) -{ - size_t cnt; - size_t shstrndx; - - if (ehdr->e_phnum == 0) - /* No program header, this is OK in relocatable objects. */ - return; - - puts (gettext ("Program Headers:")); - if (ehdr->e_ident[EI_CLASS] == ELFCLASS32) - puts (gettext ("\ - Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align")); - else - puts (gettext ("\ - Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align")); - - /* Process all program headers. */ - bool has_relro = false; - GElf_Addr relro_from = 0; - GElf_Addr relro_to = 0; - for (cnt = 0; cnt < ehdr->e_phnum; ++cnt) - { - char buf[128]; - GElf_Phdr mem; - GElf_Phdr *phdr = gelf_getphdr (ebl->elf, cnt, &mem); - - /* If for some reason the header cannot be returned show this. */ - if (phdr == NULL) - { - puts (" ???"); - continue; - } - - printf (" %-14s 0x%06" PRIx64 " 0x%0*" PRIx64 " 0x%0*" PRIx64 - " 0x%06" PRIx64 " 0x%06" PRIx64 " %c%c%c 0x%" PRIx64 "\n", - ebl_segment_type_name (ebl, phdr->p_type, buf, sizeof (buf)), - phdr->p_offset, - ehdr->e_ident[EI_CLASS] == ELFCLASS32 ? 8 : 16, phdr->p_vaddr, - ehdr->e_ident[EI_CLASS] == ELFCLASS32 ? 8 : 16, phdr->p_paddr, - phdr->p_filesz, - phdr->p_memsz, - phdr->p_flags & PF_R ? 'R' : ' ', - phdr->p_flags & PF_W ? 'W' : ' ', - phdr->p_flags & PF_X ? 'E' : ' ', - phdr->p_align); - - if (phdr->p_type == PT_INTERP) - { - /* We can show the user the name of the interpreter. */ - size_t maxsize; - char *filedata = elf_rawfile (ebl->elf, &maxsize); - - if (filedata != NULL && phdr->p_offset < maxsize) - printf (gettext ("\t[Requesting program interpreter: %s]\n"), - filedata + phdr->p_offset); - } - else if (phdr->p_type == PT_GNU_RELRO) - { - has_relro = true; - relro_from = phdr->p_vaddr; - relro_to = relro_from + phdr->p_memsz; - } - } - - /* Get the section header string table index. */ - if (elf_getshstrndx (ebl->elf, &shstrndx) < 0) - error (EXIT_FAILURE, 0, - gettext ("cannot get section header string table index")); - - puts (gettext ("\n Section to Segment mapping:\n Segment Sections...")); - - for (cnt = 0; cnt < ehdr->e_phnum; ++cnt) - { - GElf_Phdr phdr_mem; - GElf_Phdr *phdr = gelf_getphdr (ebl->elf, cnt, &phdr_mem); - size_t inner; - - /* Print the segment number. */ - printf (" %2.2zu ", cnt); - - /* This must not happen. */ - if (phdr == NULL) - error (EXIT_FAILURE, 0, gettext ("cannot get program header: %s"), - elf_errmsg (-1)); - - /* Iterate over the sections. */ - bool in_relro = false; - for (inner = 1; inner < shnum; ++inner) - { - Elf_Scn *scn = elf_getscn (ebl->elf, inner); - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - - /* It should not happen. */ - if (scn == NULL) - error (EXIT_FAILURE, 0, gettext ("cannot get section: %s"), - elf_errmsg (-1)); - - /* Get the section header. */ - shdr = gelf_getshdr (scn, &shdr_mem); - if (shdr == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot get section header: %s"), - elf_errmsg (-1)); - - if (shdr->sh_size > 0 - /* Compare allocated sections by VMA, unallocated - sections by file offset. */ - && (shdr->sh_flags & SHF_ALLOC - ? (shdr->sh_addr >= phdr->p_vaddr - && (shdr->sh_addr + shdr->sh_size - <= phdr->p_vaddr + phdr->p_memsz)) - : (shdr->sh_offset >= phdr->p_offset - && (shdr->sh_offset + shdr->sh_size - <= phdr->p_offset + phdr->p_filesz)))) - { - if (has_relro && !in_relro - && shdr->sh_addr >= relro_from - && shdr->sh_addr + shdr->sh_size <= relro_to) - { - fputs_unlocked (" [RELRO:", stdout); - in_relro = true; - } - else if (has_relro && in_relro && shdr->sh_addr >= relro_to) - { - fputs_unlocked ("]", stdout); - in_relro = false; - } - else if (has_relro && in_relro - && shdr->sh_addr + shdr->sh_size > relro_to) - fputs_unlocked ("] <RELRO:", stdout); - - printf (" %s", - elf_strptr (ebl->elf, shstrndx, shdr->sh_name)); - - /* Signal that this sectin is only partially covered. */ - if (has_relro && in_relro - && shdr->sh_addr + shdr->sh_size > relro_to) - { - fputs_unlocked (">", stdout); - in_relro = false; - } - } - } - if (in_relro) - fputs_unlocked ("]", stdout); - - /* Finish the line. */ - fputc_unlocked ('\n', stdout); - } -} - - -static void -handle_scngrp (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr) -{ - Elf_Data *data; - Elf32_Word *grpref; - Elf_Scn *symscn; - GElf_Shdr symshdr_mem; - GElf_Shdr *symshdr; - Elf_Data *symdata; - GElf_Sym sym_mem; - size_t cnt; - size_t shstrndx; - - /* Get the data of the section. */ - data = elf_getdata (scn, NULL); - - symscn = elf_getscn (ebl->elf, shdr->sh_link); - symshdr = gelf_getshdr (symscn, &symshdr_mem); - symdata = elf_getdata (symscn, NULL); - - if (data == NULL || data->d_size < sizeof (Elf32_Word) || symshdr == NULL - || symdata == NULL) - return; - - /* Get the section header string table index. */ - if (elf_getshstrndx (ebl->elf, &shstrndx) < 0) - error (EXIT_FAILURE, 0, - gettext ("cannot get section header string table index")); - - grpref = (Elf32_Word *) data->d_buf; - - printf ((grpref[0] & GRP_COMDAT) - ? ngettext ("\ -\nCOMDAT section group [%2zu] '%s' with signature '%s' contains %zu entry:\n", - "\ -\nCOMDAT section group [%2zu] '%s' with signature '%s' contains %zu entries:\n", - data->d_size / sizeof (Elf32_Word) - 1) - : ngettext ("\ -\nSection group [%2zu] '%s' with signature '%s' contains %zu entry:\n", "\ -\nSection group [%2zu] '%s' with signature '%s' contains %zu entries:\n", - data->d_size / sizeof (Elf32_Word) - 1), - elf_ndxscn (scn), - elf_strptr (ebl->elf, shstrndx, shdr->sh_name), - elf_strptr (ebl->elf, symshdr->sh_link, - gelf_getsym (symdata, shdr->sh_info, &sym_mem)->st_name) - ?: gettext ("<INVALID SYMBOL>"), - data->d_size / sizeof (Elf32_Word) - 1); - - for (cnt = 1; cnt < data->d_size / sizeof (Elf32_Word); ++cnt) - { - GElf_Shdr grpshdr_mem; - GElf_Shdr *grpshdr; - - grpshdr = gelf_getshdr (elf_getscn (ebl->elf, grpref[cnt]), - &grpshdr_mem); - - if (grpshdr == NULL) - printf (gettext (" [%2u] <INVALID SECTION>\n"), grpref[cnt]); - else - printf (" [%2u] %s\n", - grpref[cnt], - elf_strptr (ebl->elf, shstrndx, grpshdr->sh_name) - ?: gettext ("<INVALID SECTION>")); - } -} - - -static void -print_scngrp (Ebl *ebl, GElf_Ehdr *ehdr) -{ - /* Find all relocation sections and handle them. */ - Elf_Scn *scn = NULL; - - while ((scn = elf_nextscn (ebl->elf, scn)) != NULL) - { - /* Handle the section if it is a symbol table. */ - GElf_Shdr shdr_mem; - GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); - - if (shdr != NULL && shdr->sh_type == SHT_GROUP) - handle_scngrp (ebl, ehdr, scn, shdr); - } -} - - -static const struct flags -{ - int mask; - const char *str; -} dt_flags[] = - { - { DF_ORIGIN, "ORIGIN" }, - { DF_SYMBOLIC, "SYMBOLIC" }, - { DF_TEXTREL, "TEXTREL" }, - { DF_BIND_NOW, "BIND_NOW" }, - { DF_STATIC_TLS, "STATIC_TLS" } - }; -static const int ndt_flags = sizeof (dt_flags) / sizeof (dt_flags[0]); - -static const struct flags dt_flags_1[] = - { - { DF_1_NOW, "NOW" }, - { DF_1_GLOBAL, "GLOBAL" }, - { DF_1_GROUP, "GROUP" }, - { DF_1_NODELETE, "NODELETE" }, - { DF_1_LOADFLTR, "LOADFLTR" }, - { DF_1_INITFIRST, "INITFIRST" }, - { DF_1_NOOPEN, "NOOPEN" }, - { DF_1_ORIGIN, "ORIGIN" }, - { DF_1_DIRECT, "DIRECT" }, - { DF_1_TRANS, "TRANS" }, - { DF_1_INTERPOSE, "INTERPOSE" }, - { DF_1_NODEFLIB, "NODEFLIB" }, - { DF_1_NODUMP, "NODUMP" }, - { DF_1_CONFALT, "CONFALT" }, - { DF_1_ENDFILTEE, "ENDFILTEE" }, - { DF_1_DISPRELDNE, "DISPRELDNE" }, - { DF_1_DISPRELPND, "DISPRELPND" }, - }; -static const int ndt_flags_1 = sizeof (dt_flags_1) / sizeof (dt_flags_1[0]); - -static const struct flags dt_feature_1[] = - { - { DTF_1_PARINIT, "PARINIT" }, - { DTF_1_CONFEXP, "CONFEXP" } - }; -static const int ndt_feature_1 = (sizeof (dt_feature_1) - / sizeof (dt_feature_1[0])); - -static const struct flags dt_posflag_1[] = - { - { DF_P1_LAZYLOAD, "LAZYLOAD" }, - { DF_P1_GROUPPERM, "GROUPPERM" } - }; -static const int ndt_posflag_1 = (sizeof (dt_posflag_1) - / sizeof (dt_posflag_1[0])); - - -static void -print_flags (int class, GElf_Xword d_val, const struct flags *flags, - int nflags) -{ - bool first = true; - int cnt; - - for (cnt = 0; cnt < nflags; ++cnt) - if (d_val & flags[cnt].mask) - { - if (!first) - putchar_unlocked (' '); - fputs_unlocked (flags[cnt].str, stdout); - d_val &= ~flags[cnt].mask; - first = false; - } - - if (d_val != 0) - { - if (!first) - putchar_unlocked (' '); - printf ("%#0*" PRIx64, class == ELFCLASS32 ? 10 : 18, d_val); - } - - putchar_unlocked ('\n'); -} - - -static void -print_dt_flags (int class, GElf_Xword d_val) -{ - print_flags (class, d_val, dt_flags, ndt_flags); -} - - -static void -print_dt_flags_1 (int class, GElf_Xword d_val) -{ - print_flags (class, d_val, dt_flags_1, ndt_flags_1); -} - - -static void -print_dt_feature_1 (int class, GElf_Xword d_val) -{ - print_flags (class, d_val, dt_feature_1, ndt_feature_1); -} - - -static void -print_dt_posflag_1 (int class, GElf_Xword d_val) -{ - print_flags (class, d_val, dt_posflag_1, ndt_posflag_1); -} - - -static void -handle_dynamic (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr) -{ - int class = gelf_getclass (ebl->elf); - GElf_Shdr glink; - Elf_Data *data; - size_t cnt; - size_t shstrndx; - - /* Get the data of the section. */ - data = elf_getdata (scn, NULL); - if (data == NULL) - return; - - /* Get the section header string table index. */ - if (elf_getshstrndx (ebl->elf, &shstrndx) < 0) - error (EXIT_FAILURE, 0, - gettext ("cannot get section header string table index")); - - printf (ngettext ("\ -\nDynamic segment contains %lu entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n", - "\ -\nDynamic segment contains %lu entries:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n", - shdr->sh_size / shdr->sh_entsize), - (unsigned long int) (shdr->sh_size / shdr->sh_entsize), - class == ELFCLASS32 ? 10 : 18, shdr->sh_addr, - shdr->sh_offset, - (int) shdr->sh_link, - elf_strptr (ebl->elf, shstrndx, - gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), - &glink)->sh_name)); - fputs_unlocked (gettext (" Type Value\n"), stdout); - - for (cnt = 0; cnt < shdr->sh_size / shdr->sh_entsize; ++cnt) - { - char buf[64]; - GElf_Dyn dynmem; - GElf_Dyn *dyn; - - dyn = gelf_getdyn (data, cnt, &dynmem); - if (dyn == NULL) - break; - - printf (" %-17s ", - ebl_dynamic_tag_name (ebl, dyn->d_tag, buf, sizeof (buf))); - - switch (dyn->d_tag) - { - case DT_NULL: - case DT_DEBUG: - case DT_BIND_NOW: - case DT_TEXTREL: - /* No further output. */ - fputc ('\n', stdout); - break; - - case DT_NEEDED: - printf (gettext ("Shared library: [%s]\n"), - elf_strptr (ebl->elf, shdr->sh_link, dyn->d_un.d_val)); - break; - - case DT_SONAME: - printf (gettext ("Library soname: [%s]\n"), - elf_strptr (ebl->elf, shdr->sh_link, dyn->d_un.d_val)); - break; - - case DT_RPATH: - printf (gettext ("Library rpath: [%s]\n"), - elf_strptr (ebl->elf, shdr->sh_link, dyn->d_un.d_val)); - break; - - case DT_RUNPATH: - printf (gettext ("Library runpath: [%s]\n"), - elf_strptr (ebl->elf, shdr->sh_link, dyn->d_un.d_val)); - break; - - case DT_PLTRELSZ: - case DT_RELASZ: - case DT_STRSZ: - case DT_RELSZ: - case DT_RELAENT: - case DT_SYMENT: - case DT_RELENT: - case DT_PLTPADSZ: - case DT_MOVEENT: - case DT_MOVESZ: - case DT_INIT_ARRAYSZ: - case DT_FINI_ARRAYSZ: - case DT_SYMINSZ: - case DT_SYMINENT: - case DT_GNU_CONFLICTSZ: - case DT_GNU_LIBLISTSZ: - printf (gettext ("%" PRId64 " (bytes)\n"), dyn->d_un.d_val); - break; - - case DT_VERDEFNUM: - case DT_VERNEEDNUM: - case DT_RELACOUNT: - case DT_RELCOUNT: - printf ("%" PRId64 "\n", dyn->d_un.d_val); - break; - - case DT_PLTREL: - puts (ebl_dynamic_tag_name (ebl, dyn->d_un.d_val, NULL, 0)); - break; - - case DT_FLAGS: - print_dt_flags (class, dyn->d_un.d_val); - break; - - case DT_FLAGS_1: - print_dt_flags_1 (class, dyn->d_un.d_val); - break; - - case DT_FEATURE_1: - print_dt_feature_1 (class, dyn->d_un.d_val); - break; - - case DT_POSFLAG_1: - print_dt_posflag_1 (class, dyn->d_un.d_val); - break; - - default: - printf ("%#0*" PRIx64 "\n", - class == ELFCLASS32 ? 10 : 18, dyn->d_un.d_val); - break; - } - } -} - - -/* Print the dynamic segment. */ -static void -print_dynamic (Ebl *ebl, GElf_Ehdr *ehdr) -{ - /* Find all relocation sections and handle them. */ - Elf_Scn *scn = NULL; - - while ((scn = elf_nextscn (ebl->elf, scn)) != NULL) - { - /* Handle the section if it is a symbol table. */ - GElf_Shdr shdr_mem; - GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); - - if (shdr != NULL && shdr->sh_type == SHT_DYNAMIC) - { - handle_dynamic (ebl, ehdr, scn, shdr); - break; - } - } -} - - -/* Print relocations. */ -static void -print_relocs (Ebl *ebl, GElf_Ehdr *ehdr) -{ - /* Find all relocation sections and handle them. */ - Elf_Scn *scn = NULL; - - while ((scn = elf_nextscn (ebl->elf, scn)) != NULL) - { - /* Handle the section if it is a symbol table. */ - GElf_Shdr shdr_mem; - GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); - - if (shdr != NULL) - { - if (shdr->sh_type == SHT_REL) - handle_relocs_rel (ebl, ehdr, scn, shdr); - else if (shdr->sh_type == SHT_RELA) - handle_relocs_rela (ebl, ehdr, scn, shdr); - } - } -} - - -/* Handle a relocation section. */ -static void -handle_relocs_rel (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr) -{ - int class = gelf_getclass (ebl->elf); - int nentries = shdr->sh_size / shdr->sh_entsize; - int cnt; - Elf_Data *data; - Elf_Scn *symscn; - GElf_Shdr symshdr_mem; - GElf_Shdr *symshdr; - Elf_Data *symdata; - GElf_Shdr destshdr_mem; - GElf_Shdr *destshdr; - Elf_Scn *xndxscn; - Elf_Data *xndxdata = NULL; - size_t shstrndx; - - /* Get the data of the section. */ - data = elf_getdata (scn, NULL); - if (data == NULL) - return; - - /* Get the symbol table information. */ - symscn = elf_getscn (ebl->elf, shdr->sh_link); - symshdr = gelf_getshdr (symscn, &symshdr_mem); - symdata = elf_getdata (symscn, NULL); - - /* Get the section header of the section the relocations are for. */ - destshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_info), - &destshdr_mem); - - if (symshdr == NULL || symdata == NULL || destshdr == NULL) - { - printf (gettext ("\nInvalid symbol table at offset %#0" PRIx64 "\n"), - shdr->sh_offset); - return; - } - - /* Search for the optional extended section index table. */ - xndxscn = NULL; - while ((xndxscn = elf_nextscn (ebl->elf, xndxscn)) != NULL) - { - GElf_Shdr xndxshdr_mem; - GElf_Shdr *xndxshdr; - - xndxshdr = gelf_getshdr (xndxscn, &xndxshdr_mem); - if (xndxshdr != NULL && xndxshdr->sh_type == SHT_SYMTAB_SHNDX - && xndxshdr->sh_link == elf_ndxscn (symscn)) - { - /* Found it. */ - xndxdata = elf_getdata (xndxscn, NULL); - break; - } - } - - /* Get the section header string table index. */ - if (elf_getshstrndx (ebl->elf, &shstrndx) < 0) - error (EXIT_FAILURE, 0, - gettext ("cannot get section header string table index")); - - if (shdr->sh_info != 0) - printf (ngettext ("\ -\nRelocation section [%2u] '%s' for section [%2u] '%s' at offset %#0" PRIx64 " contains %d entry:\n", - "\ -\nRelocation section [%2u] '%s' for section [%2u] '%s' at offset %#0" PRIx64 " contains %d entries:\n", - nentries), - (unsigned int) elf_ndxscn (scn), - elf_strptr (ebl->elf, shstrndx, shdr->sh_name), - (unsigned int) shdr->sh_info, - elf_strptr (ebl->elf, shstrndx, destshdr->sh_name), - shdr->sh_offset, - nentries); - else - /* The .rel.dyn section does not refer to a specific section but - instead of section index zero. Do not try to print a section - name. */ - printf (ngettext ("\ -\nRelocation section [%2u] '%s' at offset %#0" PRIx64 " contains %d entry:\n", - "\ -\nRelocation section [%2u] '%s' at offset %#0" PRIx64 " contains %d entries:\n", - nentries), - (unsigned int) elf_ndxscn (scn), - elf_strptr (ebl->elf, shstrndx, shdr->sh_name), - shdr->sh_offset, - nentries); - fputs_unlocked (class == ELFCLASS32 - ? gettext ("\ - Offset Type Value Name\n") - : gettext ("\ - Offset Type Value Name\n"), - stdout); - - for (cnt = 0; cnt < nentries; ++cnt) - { - GElf_Rel relmem; - GElf_Rel *rel; - - rel = gelf_getrel (data, cnt, &relmem); - if (rel != NULL) - { - char buf[128]; - GElf_Sym symmem; - GElf_Sym *sym; - Elf32_Word xndx; - - sym = gelf_getsymshndx (symdata, xndxdata, GELF_R_SYM (rel->r_info), - &symmem, &xndx); - if (sym == NULL) - printf (" %#0*" PRIx64 " %-20s <%s %ld>\n", - class == ELFCLASS32 ? 10 : 18, rel->r_offset, - ebl_reloc_type_check (ebl, GELF_R_TYPE (rel->r_info)) - /* Avoid the leading R_ which isn't carrying any - information. */ - ? ebl_reloc_type_name (ebl, GELF_R_TYPE (rel->r_info), - buf, sizeof (buf)) + 2 - : gettext ("<INVALID RELOC>"), - gettext ("INVALID SYMBOL"), - (long int) GELF_R_SYM (rel->r_info)); - else if (GELF_ST_TYPE (sym->st_info) != STT_SECTION) - printf (" %#0*" PRIx64 " %-20s %#0*" PRIx64 " %s\n", - class == ELFCLASS32 ? 10 : 18, rel->r_offset, - ebl_reloc_type_check (ebl, GELF_R_TYPE (rel->r_info)) - /* Avoid the leading R_ which isn't carrying any - information. */ - ? ebl_reloc_type_name (ebl, GELF_R_TYPE (rel->r_info), - buf, sizeof (buf)) + 2 - : gettext ("<INVALID RELOC>"), - class == ELFCLASS32 ? 10 : 18, sym->st_value, - elf_strptr (ebl->elf, symshdr->sh_link, sym->st_name)); - else - { - destshdr = gelf_getshdr (elf_getscn (ebl->elf, - sym->st_shndx == SHN_XINDEX - ? xndx : sym->st_shndx), - &destshdr_mem); - - if (shdr == NULL) - printf (" %#0*" PRIx64 " %-20s <%s %ld>\n", - class == ELFCLASS32 ? 10 : 18, rel->r_offset, - ebl_reloc_type_check (ebl, GELF_R_TYPE (rel->r_info)) - /* Avoid the leading R_ which isn't carrying any - information. */ - ? ebl_reloc_type_name (ebl, GELF_R_TYPE (rel->r_info), - buf, sizeof (buf)) + 2 - : gettext ("<INVALID RELOC>"), - gettext ("INVALID SECTION"), - (long int) (sym->st_shndx == SHN_XINDEX - ? xndx : sym->st_shndx)); - else - printf (" %#0*" PRIx64 " %-20s %#0*" PRIx64 " %s\n", - class == ELFCLASS32 ? 10 : 18, rel->r_offset, - ebl_reloc_type_check (ebl, GELF_R_TYPE (rel->r_info)) - /* Avoid the leading R_ which isn't carrying any - information. */ - ? ebl_reloc_type_name (ebl, GELF_R_TYPE (rel->r_info), - buf, sizeof (buf)) + 2 - : gettext ("<INVALID RELOC>"), - class == ELFCLASS32 ? 10 : 18, sym->st_value, - elf_strptr (ebl->elf, shstrndx, destshdr->sh_name)); - } - } - } -} - - -/* Handle a relocation section. */ -static void -handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr) -{ - int class = gelf_getclass (ebl->elf); - int nentries = shdr->sh_size / shdr->sh_entsize; - - /* Get the data of the section. */ - Elf_Data *data = elf_getdata (scn, NULL); - if (data == NULL) - return; - - /* Get the symbol table information. */ - Elf_Scn *symscn = elf_getscn (ebl->elf, shdr->sh_link); - GElf_Shdr symshdr_mem; - GElf_Shdr *symshdr = gelf_getshdr (symscn, &symshdr_mem); - Elf_Data *symdata = elf_getdata (symscn, NULL); - - /* Get the section header of the section the relocations are for. */ - GElf_Shdr destshdr_mem; - GElf_Shdr *destshdr = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_info), - &destshdr_mem); - - if (symshdr == NULL || symdata == NULL || destshdr == NULL) - { - printf (gettext ("\nInvalid symbol table at offset %#0" PRIx64 "\n"), - shdr->sh_offset); - return; - } - - /* Search for the optional extended section index table. */ - Elf_Data *xndxdata = NULL; - Elf_Scn *xndxscn = NULL; - while ((xndxscn = elf_nextscn (ebl->elf, xndxscn)) != NULL) - { - GElf_Shdr xndxshdr_mem; - GElf_Shdr *xndxshdr; - - xndxshdr = gelf_getshdr (xndxscn, &xndxshdr_mem); - if (xndxshdr != NULL && xndxshdr->sh_type == SHT_SYMTAB_SHNDX - && xndxshdr->sh_link == elf_ndxscn (symscn)) - { - /* Found it. */ - xndxdata = elf_getdata (xndxscn, NULL); - break; - } - } - - /* Get the section header string table index. */ - size_t shstrndx; - if (elf_getshstrndx (ebl->elf, &shstrndx) < 0) - error (EXIT_FAILURE, 0, - gettext ("cannot get section header string table index")); - - printf (ngettext ("\ -\nRelocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0" PRIx64 " contains %d entry:\n", - "\ -\nRelocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0" PRIx64 " contains %d entries:\n", - nentries), - elf_ndxscn (scn), - elf_strptr (ebl->elf, shstrndx, shdr->sh_name), - (unsigned int) shdr->sh_info, - elf_strptr (ebl->elf, shstrndx, destshdr->sh_name), - shdr->sh_offset, - nentries); - fputs_unlocked (class == ELFCLASS32 - ? gettext ("\ - Offset Type Value Addend Name\n") - : gettext ("\ - Offset Type Value Addend Name\n"), - stdout); - - for (int cnt = 0; cnt < nentries; ++cnt) - { - GElf_Rela relmem; - GElf_Rela *rel = gelf_getrela (data, cnt, &relmem); - if (rel != NULL) - { - char buf[64]; - GElf_Sym symmem; - GElf_Sym *sym; - Elf32_Word xndx; - - sym = gelf_getsymshndx (symdata, xndxdata, GELF_R_SYM (rel->r_info), - &symmem, &xndx); - - if (sym == NULL) - printf (" %#0*" PRIx64 " %-15s <%s %ld>\n", - class == ELFCLASS32 ? 10 : 18, rel->r_offset, - ebl_reloc_type_check (ebl, GELF_R_TYPE (rel->r_info)) - /* Avoid the leading R_ which isn't carrying any - information. */ - ? ebl_reloc_type_name (ebl, GELF_R_TYPE (rel->r_info), - buf, sizeof (buf)) + 2 - : gettext ("<INVALID RELOC>"), - gettext ("INVALID SYMBOL"), - (long int) GELF_R_SYM (rel->r_info)); - else if (GELF_ST_TYPE (sym->st_info) != STT_SECTION) - printf ("\ - %#0*" PRIx64 " %-15s %#0*" PRIx64 " +%5" PRId64 " %s\n", - class == ELFCLASS32 ? 10 : 18, rel->r_offset, - ebl_reloc_type_check (ebl, GELF_R_TYPE (rel->r_info)) - /* Avoid the leading R_ which isn't carrying any - information. */ - ? ebl_reloc_type_name (ebl, GELF_R_TYPE (rel->r_info), - buf, sizeof (buf)) + 2 - : gettext ("<INVALID RELOC>"), - class == ELFCLASS32 ? 10 : 18, sym->st_value, - rel->r_addend, - elf_strptr (ebl->elf, symshdr->sh_link, sym->st_name)); - else - { - destshdr = gelf_getshdr (elf_getscn (ebl->elf, - sym->st_shndx == SHN_XINDEX - ? xndx : sym->st_shndx), - &destshdr_mem); - - if (shdr == NULL) - printf (" %#0*" PRIx64 " %-15s <%s %ld>\n", - class == ELFCLASS32 ? 10 : 18, rel->r_offset, - ebl_reloc_type_check (ebl, GELF_R_TYPE (rel->r_info)) - /* Avoid the leading R_ which isn't carrying any - information. */ - ? ebl_reloc_type_name (ebl, GELF_R_TYPE (rel->r_info), - buf, sizeof (buf)) + 2 - : gettext ("<INVALID RELOC>"), - gettext ("INVALID SECTION"), - (long int) (sym->st_shndx == SHN_XINDEX - ? xndx : sym->st_shndx)); - else - printf ("\ - %#0*" PRIx64 " %-15s %#0*" PRIx64 " +%5" PRId64 " %s\n", - class == ELFCLASS32 ? 10 : 18, rel->r_offset, - ebl_reloc_type_check (ebl, GELF_R_TYPE (rel->r_info)) - /* Avoid the leading R_ which isn't carrying any - information. */ - ? ebl_reloc_type_name (ebl, GELF_R_TYPE (rel->r_info), - buf, sizeof (buf)) + 2 - : gettext ("<INVALID RELOC>"), - class == ELFCLASS32 ? 10 : 18, sym->st_value, - rel->r_addend, - elf_strptr (ebl->elf, shstrndx, destshdr->sh_name)); - } - } - } -} - - -/* Print the program header. */ -static void -print_symtab (Ebl *ebl, GElf_Ehdr *ehdr, int type) -{ - /* Find the symbol table(s). For this we have to search through the - section table. */ - Elf_Scn *scn = NULL; - - while ((scn = elf_nextscn (ebl->elf, scn)) != NULL) - { - /* Handle the section if it is a symbol table. */ - GElf_Shdr shdr_mem; - GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); - - if (shdr != NULL && shdr->sh_type == (GElf_Word) type) - handle_symtab (ebl, ehdr, scn, shdr); - } -} - - -static void -handle_symtab (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr) -{ - Elf_Data *versym_data = NULL; - Elf_Data *verneed_data = NULL; - Elf_Data *verdef_data = NULL; - Elf_Data *xndx_data = NULL; - Elf_Scn *runscn; - Elf_Data *data; - int class = gelf_getclass (ebl->elf); - unsigned int nsyms; - unsigned int cnt; - Elf32_Word verneed_stridx = 0; - Elf32_Word verdef_stridx = 0; - GElf_Shdr glink; - size_t shstrndx; - - /* Get the data of the section. */ - data = elf_getdata (scn, NULL); - if (data == NULL) - return; - - /* Find out whether we have other sections we might need. */ - runscn = NULL; - while ((runscn = elf_nextscn (ebl->elf, runscn)) != NULL) - { - GElf_Shdr runshdr_mem; - GElf_Shdr *runshdr = gelf_getshdr (runscn, &runshdr_mem); - - if (runshdr != NULL) - { - if (runshdr->sh_type == SHT_GNU_versym - && runshdr->sh_link == elf_ndxscn (scn)) - /* Bingo, found the version information. Now get the data. */ - versym_data = elf_getdata (runscn, NULL); - else if (runshdr->sh_type == SHT_GNU_verneed) - { - /* This is the information about the needed versions. */ - verneed_data = elf_getdata (runscn, NULL); - verneed_stridx = runshdr->sh_link; - } - else if (runshdr->sh_type == SHT_GNU_verdef) - { - /* This is the information about the defined versions. */ - verdef_data = elf_getdata (runscn, NULL); - verdef_stridx = runshdr->sh_link; - } - else if (runshdr->sh_type == SHT_SYMTAB_SHNDX - && runshdr->sh_link == elf_ndxscn (scn)) - /* Extended section index. */ - xndx_data = elf_getdata (runscn, NULL); - } - } - - /* Get the section header string table index. */ - if (elf_getshstrndx (ebl->elf, &shstrndx) < 0) - error (EXIT_FAILURE, 0, - gettext ("cannot get section header string table index")); - - /* Now we can compute the number of entries in the section. */ - nsyms = data->d_size / (class == ELFCLASS32 - ? sizeof (Elf32_Sym) : sizeof (Elf64_Sym)); - - printf (ngettext ("\nSymbol table [%2u] '%s' contains %u entry:\n", - "\nSymbol table [%2u] '%s' contains %u entries:\n", - nsyms), - (unsigned int) elf_ndxscn (scn), - elf_strptr (ebl->elf, shstrndx, shdr->sh_name), nsyms); - printf (ngettext (" %lu local symbol String table: [%2u] '%s'\n", - " %lu local symbols String table: [%2u] '%s'\n", - shdr->sh_info), - (unsigned long int) shdr->sh_info, - (unsigned int) shdr->sh_link, - elf_strptr (ebl->elf, shstrndx, - gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), - &glink)->sh_name)); - - fputs_unlocked (class == ELFCLASS32 - ? gettext ("\ - Num: Value Size Type Bind Vis Ndx Name\n") - : gettext ("\ - Num: Value Size Type Bind Vis Ndx Name\n"), - stdout); - - for (cnt = 0; cnt < nsyms; ++cnt) - { - char typebuf[64]; - char bindbuf[64]; - char scnbuf[64]; - Elf32_Word xndx; - GElf_Sym sym_mem; - GElf_Sym *sym = gelf_getsymshndx (data, xndx_data, cnt, &sym_mem, &xndx); - - if (sym == NULL) - continue; - - /* Determine the real section index. */ - if (sym->st_shndx != SHN_XINDEX) - xndx = sym->st_shndx; - - printf (gettext ("\ -%5u: %0*" PRIx64 " %6" PRId64 " %-7s %-6s %-9s %6s %s"), - cnt, - class == ELFCLASS32 ? 8 : 16, - sym->st_value, - sym->st_size, - ebl_symbol_type_name (ebl, GELF_ST_TYPE (sym->st_info), - typebuf, sizeof (typebuf)), - ebl_symbol_binding_name (ebl, GELF_ST_BIND (sym->st_info), - bindbuf, sizeof (bindbuf)), - get_visibility_type (GELF_ST_VISIBILITY (sym->st_other)), - ebl_section_name (ebl, sym->st_shndx, xndx, scnbuf, - sizeof (scnbuf), NULL, shnum), - elf_strptr (ebl->elf, shdr->sh_link, sym->st_name)); - - if (versym_data != NULL) - { - /* Get the version information. */ - GElf_Versym versym_mem; - GElf_Versym *versym; - - versym = gelf_getversym (versym_data, cnt, &versym_mem); - - if (versym != NULL && ((*versym & 0x8000) != 0 || *versym > 1)) - { - bool is_nobits = false; - bool check_def = xndx != SHN_UNDEF; - - if (xndx < SHN_LORESERVE || sym->st_shndx == SHN_XINDEX) - { - GElf_Shdr symshdr_mem; - GElf_Shdr *symshdr = - gelf_getshdr (elf_getscn (ebl->elf, xndx), &symshdr_mem); - - is_nobits = (symshdr != NULL - && symshdr->sh_type == SHT_NOBITS); - } - - if (is_nobits || ! check_def) - { - /* We must test both. */ - GElf_Verneed verneed_mem; - GElf_Verneed *verneed; - GElf_Vernaux vernaux_mem; - GElf_Vernaux *vernaux = NULL; - size_t vn_offset = 0; - - verneed = gelf_getverneed (verneed_data, 0, &verneed_mem); - while (verneed != NULL) - { - size_t vna_offset = vn_offset; - - vernaux = gelf_getvernaux (verneed_data, - vna_offset += verneed->vn_aux, - &vernaux_mem); - while (vernaux != NULL - && vernaux->vna_other != *versym - && vernaux->vna_next != 0) - { - /* Update the offset. */ - vna_offset += vernaux->vna_next; - - vernaux = (vernaux->vna_next == 0 - ? NULL - : gelf_getvernaux (verneed_data, - vna_offset, - &vernaux_mem)); - } - - /* Check whether we found the version. */ - if (vernaux != NULL && vernaux->vna_other == *versym) - /* Found it. */ - break; - - vn_offset += verneed->vn_next; - verneed = (verneed->vn_next == 0 - ? NULL - : gelf_getverneed (verneed_data, vn_offset, - &verneed_mem)); - } - - if (vernaux != NULL && vernaux->vna_other == *versym) - { - printf ("@%s (%u)", - elf_strptr (ebl->elf, verneed_stridx, - vernaux->vna_name), - (unsigned int) vernaux->vna_other); - check_def = 0; - } - else if (! is_nobits) - error (0, 0, gettext ("bad dynamic symbol")); - else - check_def = 1; - } - - if (check_def && *versym != 0x8001) - { - /* We must test both. */ - GElf_Verdef verdef_mem; - GElf_Verdef *verdef; - size_t vd_offset = 0; - - verdef = gelf_getverdef (verdef_data, 0, &verdef_mem); - while (verdef != NULL) - { - if (verdef->vd_ndx == (*versym & 0x7fff)) - /* Found the definition. */ - break; - - vd_offset += verdef->vd_next; - verdef = (verdef->vd_next == 0 - ? NULL - : gelf_getverdef (verdef_data, vd_offset, - &verdef_mem)); - } - - if (verdef != NULL) - { - GElf_Verdaux verdaux_mem; - GElf_Verdaux *verdaux; - - verdaux = gelf_getverdaux (verdef_data, - vd_offset + verdef->vd_aux, - &verdaux_mem); - - if (verdaux != NULL) - printf ((*versym & 0x8000) ? "@%s" : "@@%s", - elf_strptr (ebl->elf, verdef_stridx, - verdaux->vda_name)); - } - } - } - } - - putchar ('\n'); - } -} - - -/* Print version information. */ -static void -print_verinfo (Ebl *ebl, GElf_Ehdr *ehdr) -{ - /* Find the version information sections. For this we have to - search through the section table. */ - Elf_Scn *scn = NULL; - - while ((scn = elf_nextscn (ebl->elf, scn)) != NULL) - { - /* Handle the section if it is part of the versioning handling. */ - GElf_Shdr shdr_mem; - GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); - - if (shdr != NULL) - { - if (shdr->sh_type == SHT_GNU_verneed) - handle_verneed (ebl, ehdr, scn, shdr); - else if (shdr->sh_type == SHT_GNU_verdef) - handle_verdef (ebl, ehdr, scn, shdr); - else if (shdr->sh_type == SHT_GNU_versym) - handle_versym (ebl, ehdr, scn, shdr); - } - } -} - - -static const char * -get_ver_flags (unsigned int flags) -{ - static char buf[32]; - char *endp; - - if (flags == 0) - return gettext ("none"); - - if (flags & VER_FLG_BASE) - endp = stpcpy (buf, "BASE "); - else - endp = buf; - - if (flags & VER_FLG_WEAK) - { - if (endp != buf) - endp = stpcpy (endp, "| "); - - endp = stpcpy (endp, "WEAK "); - } - - if (flags & ~(VER_FLG_BASE | VER_FLG_WEAK)) - { - strncpy (endp, gettext ("| <unknown>"), buf + sizeof (buf) - endp); - buf[sizeof (buf) - 1] = '\0'; - } - - return buf; -} - - -static void -handle_verneed (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr) -{ - Elf_Data *data; - int class = gelf_getclass (ebl->elf); - GElf_Shdr glink; - int cnt; - unsigned int offset; - size_t shstrndx; - - /* Get the data of the section. */ - data = elf_getdata (scn, NULL); - if (data == NULL) - return; - - /* Get the section header string table index. */ - if (elf_getshstrndx (ebl->elf, &shstrndx) < 0) - error (EXIT_FAILURE, 0, - gettext ("cannot get section header string table index")); - - printf (ngettext ("\ -\nVersion needs section [%2u] '%s' contains %d entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n", - "\ -\nVersion needs section [%2u] '%s' contains %d entries:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n", - shdr->sh_info), - (unsigned int) elf_ndxscn (scn), - elf_strptr (ebl->elf, shstrndx, shdr->sh_name), shdr->sh_info, - class == ELFCLASS32 ? 10 : 18, shdr->sh_addr, - shdr->sh_offset, - (unsigned int) shdr->sh_link, - elf_strptr (ebl->elf, shstrndx, - gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), - &glink)->sh_name)); - - offset = 0; - for (cnt = shdr->sh_info; --cnt >= 0; ) - { - GElf_Verneed needmem; - GElf_Verneed *need; - unsigned int auxoffset; - int cnt2; - - /* Get the data at the next offset. */ - need = gelf_getverneed (data, offset, &needmem); - if (need == NULL) - break; - - printf (gettext (" %#06x: Version: %hu File: %s Cnt: %hu\n"), - offset, (unsigned short int) need->vn_version, - elf_strptr (ebl->elf, shdr->sh_link, need->vn_file), - (unsigned short int) need->vn_cnt); - - auxoffset = offset + need->vn_aux; - for (cnt2 = need->vn_cnt; --cnt2 >= 0; ) - { - GElf_Vernaux auxmem; - GElf_Vernaux *aux; - - aux = gelf_getvernaux (data, auxoffset, &auxmem); - if (aux == NULL) - break; - - printf (gettext (" %#06x: Name: %s Flags: %s Version: %hu\n"), - auxoffset, - elf_strptr (ebl->elf, shdr->sh_link, aux->vna_name), - get_ver_flags (aux->vna_flags), - (unsigned short int) aux->vna_other); - - auxoffset += aux->vna_next; - } - - /* Find the next offset. */ - offset += need->vn_next; - } -} - - -static void -handle_verdef (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr) -{ - Elf_Data *data; - int class = gelf_getclass (ebl->elf); - GElf_Shdr glink; - int cnt; - unsigned int offset; - size_t shstrndx; - - /* Get the data of the section. */ - data = elf_getdata (scn, NULL); - if (data == NULL) - return; - - /* Get the section header string table index. */ - if (elf_getshstrndx (ebl->elf, &shstrndx) < 0) - error (EXIT_FAILURE, 0, - gettext ("cannot get section header string table index")); - - printf (ngettext ("\ -\nVersion definition section [%2u] '%s' contains %d entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n", - "\ -\nVersion definition section [%2u] '%s' contains %d entries:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n", - shdr->sh_info), - (unsigned int) elf_ndxscn (scn), - elf_strptr (ebl->elf, shstrndx, shdr->sh_name), - shdr->sh_info, - class == ELFCLASS32 ? 10 : 18, shdr->sh_addr, - shdr->sh_offset, - (unsigned int) shdr->sh_link, - elf_strptr (ebl->elf, shstrndx, - gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), - &glink)->sh_name)); - - offset = 0; - for (cnt = shdr->sh_info; --cnt >= 0; ) - { - GElf_Verdef defmem; - GElf_Verdef *def; - GElf_Verdaux auxmem; - GElf_Verdaux *aux; - unsigned int auxoffset; - int cnt2; - - /* Get the data at the next offset. */ - def = gelf_getverdef (data, offset, &defmem); - if (def == NULL) - break; - - auxoffset = offset + def->vd_aux; - aux = gelf_getverdaux (data, auxoffset, &auxmem); - if (aux == NULL) - break; - - printf (gettext ("\ - %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n"), - offset, def->vd_version, - get_ver_flags (def->vd_flags), - def->vd_ndx, - def->vd_cnt, - elf_strptr (ebl->elf, shdr->sh_link, aux->vda_name)); - - auxoffset += aux->vda_next; - for (cnt2 = 1; cnt2 < def->vd_cnt; ++cnt2) - { - aux = gelf_getverdaux (data, auxoffset, &auxmem); - if (aux == NULL) - break; - - printf (gettext (" %#06x: Parent %d: %s\n"), - auxoffset, cnt2, - elf_strptr (ebl->elf, shdr->sh_link, aux->vda_name)); - - auxoffset += aux->vda_next; - } - - /* Find the next offset. */ - offset += def->vd_next; - } -} - - -static void -handle_versym (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr) -{ - Elf_Data *data; - int class = gelf_getclass (ebl->elf); - Elf_Scn *verscn; - GElf_Shdr glink; - Elf_Scn *defscn; - Elf_Scn *needscn; - const char **vername; - const char **filename; - size_t nvername; - unsigned int cnt; - size_t shstrndx; - - /* Get the data of the section. */ - data = elf_getdata (scn, NULL); - if (data == NULL) - return; - - /* Get the section header string table index. */ - if (elf_getshstrndx (ebl->elf, &shstrndx) < 0) - error (EXIT_FAILURE, 0, - gettext ("cannot get section header string table index")); - - /* We have to find the version definition section and extract the - version names. */ - defscn = NULL; - needscn = NULL; - - verscn = NULL; - while ((verscn = elf_nextscn (ebl->elf, verscn)) != NULL) - { - GElf_Shdr vershdr_mem; - GElf_Shdr *vershdr = gelf_getshdr (verscn, &vershdr_mem); - - if (vershdr != NULL) - { - if (vershdr->sh_type == SHT_GNU_verdef) - defscn = verscn; - else if (vershdr->sh_type == SHT_GNU_verneed) - needscn = verscn; - } - } - - if (defscn != NULL || needscn != NULL) - { - /* We have a version information (better should have). Now get - the version names. First find the maximum version number. */ - nvername = 0; - if (defscn != NULL) - { - /* Run through the version definitions and find the highest - index. */ - unsigned int offset = 0; - Elf_Data *defdata; - GElf_Shdr defshdrmem; - GElf_Shdr *defshdr; - - defdata = elf_getdata (defscn, NULL); - if (defdata == NULL) - return; - - defshdr = gelf_getshdr (defscn, &defshdrmem); - if (defshdr == NULL) - return; - - for (cnt = 0; cnt < defshdr->sh_info; ++cnt) - { - GElf_Verdef defmem; - GElf_Verdef *def; - - /* Get the data at the next offset. */ - def = gelf_getverdef (defdata, offset, &defmem); - if (def == NULL) - break; - - nvername = MAX (nvername, (size_t) (def->vd_ndx & 0x7fff)); - - offset += def->vd_next; - } - } - if (needscn != NULL) - { - unsigned int offset = 0; - Elf_Data *needdata; - GElf_Shdr needshdrmem; - GElf_Shdr *needshdr; - - needdata = elf_getdata (needscn, NULL); - if (needdata == NULL) - return; - - needshdr = gelf_getshdr (needscn, &needshdrmem); - if (needshdr == NULL) - return; - - for (cnt = 0; cnt < needshdr->sh_info; ++cnt) - { - GElf_Verneed needmem; - GElf_Verneed *need; - unsigned int auxoffset; - int cnt2; - - /* Get the data at the next offset. */ - need = gelf_getverneed (needdata, offset, &needmem); - if (need == NULL) - break; - - /* Run through the auxiliary entries. */ - auxoffset = offset + need->vn_aux; - for (cnt2 = need->vn_cnt; --cnt2 >= 0; ) - { - GElf_Vernaux auxmem; - GElf_Vernaux *aux; - - aux = gelf_getvernaux (needdata, auxoffset, &auxmem); - if (aux == NULL) - break; - - nvername = MAX (nvername, - (size_t) (aux->vna_other & 0x7fff)); - - auxoffset += aux->vna_next; - } - - offset += need->vn_next; - } - } - - /* This is the number of versions we know about. */ - ++nvername; - - /* Allocate the array. */ - vername = (const char **) alloca (nvername * sizeof (const char *)); - filename = (const char **) alloca (nvername * sizeof (const char *)); - - /* Run through the data structures again and collect the strings. */ - if (defscn != NULL) - { - /* Run through the version definitions and find the highest - index. */ - unsigned int offset = 0; - Elf_Data *defdata; - GElf_Shdr defshdrmem; - GElf_Shdr *defshdr; - - defdata = elf_getdata (defscn, NULL); - if (defdata == NULL) - return; - - defshdr = gelf_getshdr (defscn, &defshdrmem); - if (defshdr == NULL) - return; - - for (cnt = 0; cnt < defshdr->sh_info; ++cnt) - { - GElf_Verdef defmem; - GElf_Verdef *def; - GElf_Verdaux auxmem; - GElf_Verdaux *aux; - - /* Get the data at the next offset. */ - def = gelf_getverdef (defdata, offset, &defmem); - if (def == NULL) - break; - - aux = gelf_getverdaux (defdata, offset + def->vd_aux, &auxmem); - if (aux == NULL) - break; - - vername[def->vd_ndx & 0x7fff] - = elf_strptr (ebl->elf, defshdr->sh_link, aux->vda_name); - filename[def->vd_ndx & 0x7fff] = NULL; - - offset += def->vd_next; - } - } - if (needscn != NULL) - { - unsigned int offset = 0; - Elf_Data *needdata; - GElf_Shdr needshdrmem; - GElf_Shdr *needshdr; - - needdata = elf_getdata (needscn, NULL); - if (needdata == NULL) - return; - - needshdr = gelf_getshdr (needscn, &needshdrmem); - if (needshdr == NULL) - return; - - for (cnt = 0; cnt < needshdr->sh_info; ++cnt) - { - GElf_Verneed needmem; - GElf_Verneed *need; - unsigned int auxoffset; - int cnt2; - - /* Get the data at the next offset. */ - need = gelf_getverneed (needdata, offset, &needmem); - if (need == NULL) - break; - - /* Run through the auxiliary entries. */ - auxoffset = offset + need->vn_aux; - for (cnt2 = need->vn_cnt; --cnt2 >= 0; ) - { - GElf_Vernaux auxmem; - GElf_Vernaux *aux; - - aux = gelf_getvernaux (needdata, auxoffset, &auxmem); - if (aux == NULL) - break; - - vername[aux->vna_other & 0x7fff] - = elf_strptr (ebl->elf, needshdr->sh_link, aux->vna_name); - filename[aux->vna_other & 0x7fff] - = elf_strptr (ebl->elf, needshdr->sh_link, need->vn_file); - - auxoffset += aux->vna_next; - } - - offset += need->vn_next; - } - } - } - else - { - vername = NULL; - nvername = 1; - filename = NULL; - } - - /* Print the header. */ - printf (ngettext ("\ -\nVersion symbols section [%2u] '%s' contains %d entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'", - "\ -\nVersion symbols section [%2u] '%s' contains %d entries:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'", - shdr->sh_size / shdr->sh_entsize), - (unsigned int) elf_ndxscn (scn), - elf_strptr (ebl->elf, shstrndx, shdr->sh_name), - (int) (shdr->sh_size / shdr->sh_entsize), - class == ELFCLASS32 ? 10 : 18, shdr->sh_addr, - shdr->sh_offset, - (unsigned int) shdr->sh_link, - elf_strptr (ebl->elf, shstrndx, - gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), - &glink)->sh_name)); - - /* Now we can finally look at the actual contents of this section. */ - for (cnt = 0; cnt < shdr->sh_size / shdr->sh_entsize; ++cnt) - { - GElf_Versym symmem; - GElf_Versym *sym; - ssize_t n; - - if (cnt % 2 == 0) - printf ("\n %4d:", cnt); - - sym = gelf_getversym (data, cnt, &symmem); - if (sym == NULL) - break; - - switch (*sym) - { - case 0: - fputs_unlocked (gettext (" 0 *local* "), - stdout); - break; - - case 1: - fputs_unlocked (gettext (" 1 *global* "), - stdout); - break; - - default: - n = printf ("%4d%c%s", - *sym & 0x7fff, *sym & 0x8000 ? 'h' : ' ', - (unsigned int) (*sym & 0x7fff) < nvername - ? vername[*sym & 0x7fff] : "???"); - if ((unsigned int) (*sym & 0x7fff) < nvername - && filename[*sym & 0x7fff] != NULL) - n += printf ("(%s)", filename[*sym & 0x7fff]); - printf ("%*s", MAX (0, 33 - (int) n), " "); - break; - } - } - putchar ('\n'); -} - - -static void -handle_hash (Ebl *ebl, GElf_Ehdr *ehdr) -{ - /* Find the symbol table(s). For this we have to search through the - section table. */ - Elf_Scn *scn = NULL; - size_t shstrndx; - - /* Get the section header string table index. */ - if (elf_getshstrndx (ebl->elf, &shstrndx) < 0) - error (EXIT_FAILURE, 0, - gettext ("cannot get section header string table index")); - - while ((scn = elf_nextscn (ebl->elf, scn)) != NULL) - { - /* Handle the section if it is a symbol table. */ - GElf_Shdr shdr_mem; - GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); - - if (shdr != NULL && shdr->sh_type == SHT_HASH) - { - Elf_Data *data = elf_getdata (scn, NULL); - Elf32_Word nbucket; - Elf32_Word nchain; - Elf32_Word *bucket; - Elf32_Word *chain; - uint32_t *lengths; - uint32_t *counts; - Elf32_Word cnt; - Elf32_Word maxlength = 0; - Elf32_Word nsyms = 0; - uint64_t nzero_counts = 0; - GElf_Shdr glink; - - if (data == NULL) - { - error (0, 0, gettext ("cannot get data for section %d: %s"), - (int) elf_ndxscn (scn), elf_errmsg (-1)); - continue; - } - - nbucket = ((Elf32_Word *) data->d_buf)[0]; - nchain = ((Elf32_Word *) data->d_buf)[1]; - bucket = &((Elf32_Word *) data->d_buf)[2]; - chain = &((Elf32_Word *) data->d_buf)[2 + nbucket]; - - printf (ngettext ("\ -\nHistogram for bucket list length in section [%2u] '%s' (total of %d bucket):\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n", - "\ -\nHistogram for bucket list length in section [%2u] '%s' (total of %d buckets):\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n", - nbucket), - (unsigned int) elf_ndxscn (scn), - elf_strptr (ebl->elf, shstrndx, shdr->sh_name), - (int) nbucket, - gelf_getclass (ebl->elf) == ELFCLASS32 ? 10 : 18, - shdr->sh_addr, - shdr->sh_offset, - (unsigned int) shdr->sh_link, - elf_strptr (ebl->elf, shstrndx, - gelf_getshdr (elf_getscn (ebl->elf, - shdr->sh_link), - &glink)->sh_name)); - - lengths = (uint32_t *) xcalloc (nbucket, sizeof (uint32_t)); - - for (cnt = 0; cnt < nbucket; ++cnt) - if (bucket[cnt] != 0) - { - Elf32_Word inner; - - inner = bucket[cnt]; - while (inner > 0 && inner < nchain) - { - ++nsyms; - if (maxlength < ++lengths[cnt]) - ++maxlength; - - inner = chain[inner]; - } - } - - counts = (uint32_t *) xcalloc (maxlength + 1, sizeof (uint32_t)); - - for (cnt = 0; cnt < nbucket; ++cnt) - ++counts[lengths[cnt]]; - - if (nbucket > 0) - { - uint64_t success = 0; - Elf32_Word acc; - - puts (gettext (" Length Number % of total Coverage")); - printf (gettext (" 0 %6" PRIu32 " %5.1f%%\n"), - counts[0], (counts[0] * 100.0) / nbucket); - - for (cnt = 1; cnt <= maxlength; ++cnt) - { - nzero_counts += counts[cnt] * cnt; - printf (gettext ("\ -%7d %6" PRIu32 " %5.1f%% %5.1f%%\n"), - (int) cnt, - counts[cnt], (counts[cnt] * 100.0) / nbucket, - (nzero_counts * 100.0) / nsyms); - } - - acc = 0; - for (cnt = 1; cnt <= maxlength; ++cnt) - { - acc += cnt; - success += counts[cnt] * acc; - } - - printf (gettext ("\ - Average number of tests: successful lookup: %f\n\ - unsuccessful lookup: %f\n"), - (double) success / (double) nzero_counts, - (double) nzero_counts / (double) nbucket); - } - - free (counts); - free (lengths); - } - } -} - - -static void -print_liblist (Ebl *ebl, GElf_Ehdr *ehdr) -{ - /* Find the library list sections. For this we have to search - through the section table. */ - Elf_Scn *scn = NULL; - - /* Get the section header string table index. */ - size_t shstrndx; - if (elf_getshstrndx (ebl->elf, &shstrndx) < 0) - error (EXIT_FAILURE, 0, - gettext ("cannot get section header string table index")); - - while ((scn = elf_nextscn (ebl->elf, scn)) != NULL) - { - GElf_Shdr shdr_mem; - GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); - - if (shdr != NULL && shdr->sh_type == SHT_GNU_LIBLIST) - { - int nentries = shdr->sh_size / shdr->sh_entsize; - printf (ngettext ("\ -\nLibrary list section [%2zu] '%s' at offset %#0" PRIx64 " contains %d entry:\n", - "\ -\nLibrary list section [%2zu] '%s' at offset %#0" PRIx64 " contains %d entries:\n", - nentries), - elf_ndxscn (scn), - elf_strptr (ebl->elf, shstrndx, shdr->sh_name), - shdr->sh_offset, - nentries); - - Elf_Data *data = elf_getdata (scn, NULL); - if (data == NULL) - return; - - puts (gettext ("\ - Library Time Stamp Checksum Version Flags")); - - for (int cnt = 0; cnt < nentries; ++cnt) - { - GElf_Lib lib_mem; - GElf_Lib *lib = gelf_getlib (data, cnt, &lib_mem); - if (lib == NULL) - continue; - - time_t t = (time_t) lib->l_time_stamp; - struct tm *tm = gmtime (&t); - if (tm == NULL) - continue; - - printf (" [%2d] %-29s %04u-%02u-%02uT%02u:%02u:%02u %08x %-7u %u\n", - cnt, elf_strptr (ebl->elf, shdr->sh_link, lib->l_name), - tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, - tm->tm_hour, tm->tm_min, tm->tm_sec, - (unsigned int) lib->l_checksum, - (unsigned int) lib->l_version, - (unsigned int) lib->l_flags); - } - } - } -} - - -static const char * -dwarf_tag_string (unsigned int tag) -{ - static const char *known_tags[] = - { - [DW_TAG_array_type] = "array_type", - [DW_TAG_class_type] = "class_type", - [DW_TAG_entry_point] = "entry_point", - [DW_TAG_enumeration_type] = "enumeration_type", - [DW_TAG_formal_parameter] = "formal_parameter", - [DW_TAG_imported_declaration] = "imported_declaration", - [DW_TAG_label] = "label", - [DW_TAG_lexical_block] = "lexical_block", - [DW_TAG_member] = "member", - [DW_TAG_pointer_type] = "pointer_type", - [DW_TAG_reference_type] = "reference_type", - [DW_TAG_compile_unit] = "compile_unit", - [DW_TAG_string_type] = "string_type", - [DW_TAG_structure_type] = "structure_type", - [DW_TAG_subroutine_type] = "subroutine_type", - [DW_TAG_typedef] = "typedef", - [DW_TAG_union_type] = "union_type", - [DW_TAG_unspecified_parameters] = "unspecified_parameters", - [DW_TAG_variant] = "variant", - [DW_TAG_common_block] = "common_block", - [DW_TAG_common_inclusion] = "common_inclusion", - [DW_TAG_inheritance] = "inheritance", - [DW_TAG_inlined_subroutine] = "inlined_subroutine", - [DW_TAG_module] = "module", - [DW_TAG_ptr_to_member_type] = "ptr_to_member_type", - [DW_TAG_set_type] = "set_type", - [DW_TAG_subrange_type] = "subrange_type", - [DW_TAG_with_stmt] = "with_stmt", - [DW_TAG_access_declaration] = "access_declaration", - [DW_TAG_base_type] = "base_type", - [DW_TAG_catch_block] = "catch_block", - [DW_TAG_const_type] = "const_type", - [DW_TAG_constant] = "constant", - [DW_TAG_enumerator] = "enumerator", - [DW_TAG_file_type] = "file_type", - [DW_TAG_friend] = "friend", - [DW_TAG_namelist] = "namelist", - [DW_TAG_namelist_item] = "namelist_item", - [DW_TAG_packed_type] = "packed_type", - [DW_TAG_subprogram] = "subprogram", - [DW_TAG_template_type_param] = "template_type_param", - [DW_TAG_template_value_param] = "template_value_param", - [DW_TAG_thrown_type] = "thrown_type", - [DW_TAG_try_block] = "try_block", - [DW_TAG_variant_part] = "variant_part", - [DW_TAG_variable] = "variable", - [DW_TAG_volatile_type] = "volatile_type", - }; - const unsigned int nknown_tags = (sizeof (known_tags) - / sizeof (known_tags[0])); - static char buf[40]; - const char *result = NULL; - - if (tag < nknown_tags) - result = known_tags[tag]; - - if (result == NULL) - /* There are a few known extensions. */ - switch (tag) - { - case DW_TAG_MIPS_loop: - result = "MIPS_loop"; - break; - - case DW_TAG_format_label: - result = "format_label"; - break; - - case DW_TAG_function_template: - result = "function_template"; - break; - - case DW_TAG_class_template: - result = "class_template"; - break; - - default: - if (tag < DW_TAG_lo_user) - snprintf (buf, sizeof buf, gettext ("unknown tag %hx"), tag); - else - snprintf (buf, sizeof buf, gettext ("unknown user tag %hx"), tag); - result = buf; - break; - } - - return result; -} - - -static const char * -dwarf_attr_string (unsigned int attrnum) -{ - static const char *known_attrs[] = - { - [DW_AT_sibling] = "sibling", - [DW_AT_location] = "location", - [DW_AT_name] = "name", - [DW_AT_ordering] = "ordering", - [DW_AT_subscr_data] = "subscr_data", - [DW_AT_byte_size] = "byte_size", - [DW_AT_bit_offset] = "bit_offset", - [DW_AT_bit_size] = "bit_size", - [DW_AT_element_list] = "element_list", - [DW_AT_stmt_list] = "stmt_list", - [DW_AT_low_pc] = "low_pc", - [DW_AT_high_pc] = "high_pc", - [DW_AT_language] = "language", - [DW_AT_member] = "member", - [DW_AT_discr] = "discr", - [DW_AT_discr_value] = "discr_value", - [DW_AT_visibility] = "visibility", - [DW_AT_import] = "import", - [DW_AT_string_length] = "string_length", - [DW_AT_common_reference] = "common_reference", - [DW_AT_comp_dir] = "comp_dir", - [DW_AT_const_value] = "const_value", - [DW_AT_containing_type] = "containing_type", - [DW_AT_default_value] = "default_value", - [DW_AT_inline] = "inline", - [DW_AT_is_optional] = "is_optional", - [DW_AT_lower_bound] = "lower_bound", - [DW_AT_producer] = "producer", - [DW_AT_prototyped] = "prototyped", - [DW_AT_return_addr] = "return_addr", - [DW_AT_start_scope] = "start_scope", - [DW_AT_stride_size] = "stride_size", - [DW_AT_upper_bound] = "upper_bound", - [DW_AT_abstract_origin] = "abstract_origin", - [DW_AT_accessibility] = "accessibility", - [DW_AT_address_class] = "address_class", - [DW_AT_artificial] = "artificial", - [DW_AT_base_types] = "base_types", - [DW_AT_calling_convention] = "calling_convention", - [DW_AT_count] = "count", - [DW_AT_data_member_location] = "data_member_location", - [DW_AT_decl_column] = "decl_column", - [DW_AT_decl_file] = "decl_file", - [DW_AT_decl_line] = "decl_line", - [DW_AT_declaration] = "declaration", - [DW_AT_discr_list] = "discr_list", - [DW_AT_encoding] = "encoding", - [DW_AT_external] = "external", - [DW_AT_frame_base] = "frame_base", - [DW_AT_friend] = "friend", - [DW_AT_identifier_case] = "identifier_case", - [DW_AT_macro_info] = "macro_info", - [DW_AT_namelist_items] = "namelist_items", - [DW_AT_priority] = "priority", - [DW_AT_segment] = "segment", - [DW_AT_specification] = "specification", - [DW_AT_static_link] = "static_link", - [DW_AT_type] = "type", - [DW_AT_use_location] = "use_location", - [DW_AT_variable_parameter] = "variable_parameter", - [DW_AT_virtuality] = "virtuality", - [DW_AT_vtable_elem_location] = "vtable_elem_location" - }; - const unsigned int nknown_attrs = (sizeof (known_attrs) - / sizeof (known_attrs[0])); - static char buf[40]; - const char *result = NULL; - - if (attrnum < nknown_attrs) - result = known_attrs[attrnum]; - - if (result == NULL) - /* There are a few known extensions. */ - switch (attrnum) - { - case DW_AT_MIPS_fde: - result = "MIPS_fde"; - break; - - case DW_AT_MIPS_loop_begin: - result = "MIPS_loop_begin"; - break; - - case DW_AT_MIPS_tail_loop_begin: - result = "MIPS_tail_loop_begin"; - break; - - case DW_AT_MIPS_epilog_begin: - result = "MIPS_epilog_begin"; - break; - - case DW_AT_MIPS_loop_unroll_factor: - result = "MIPS_loop_unroll_factor"; - break; - - case DW_AT_MIPS_software_pipeline_depth: - result = "MIPS_software_pipeline_depth"; - break; - - case DW_AT_MIPS_linkage_name: - result = "MIPS_linkage_name"; - break; - - case DW_AT_MIPS_stride: - result = "MIPS_stride"; - break; - - case DW_AT_MIPS_abstract_name: - result = "MIPS_abstract_name"; - break; - - case DW_AT_MIPS_clone_origin: - result = "MIPS_clone_origin"; - break; - - case DW_AT_MIPS_has_inlines: - result = "MIPS_has_inlines"; - break; - - case DW_AT_MIPS_stride_byte: - result = "MIPS_stride_byte"; - break; - - case DW_AT_MIPS_stride_elem: - result = "MIPS_stride_elem"; - break; - - case DW_AT_MIPS_ptr_dopetype: - result = "MIPS_ptr_dopetype"; - break; - - case DW_AT_MIPS_allocatable_dopetype: - result = "MIPS_allocatable_dopetype"; - break; - - case DW_AT_MIPS_assumed_shape_dopetype: - result = "MIPS_assumed_shape_dopetype"; - break; - - case DW_AT_MIPS_assumed_size: - result = "MIPS_assumed_size"; - break; - - case DW_AT_sf_names: - result = "sf_names"; - break; - - case DW_AT_src_info: - result = "src_info"; - break; - - case DW_AT_mac_info: - result = "mac_info"; - break; - - case DW_AT_src_coords: - result = "src_coords"; - break; - - case DW_AT_body_begin: - result = "body_begin"; - break; - - case DW_AT_body_end: - result = "body_end"; - break; - - default: - if (attrnum < DW_AT_lo_user) - snprintf (buf, sizeof buf, gettext ("unknown attribute %hx"), - attrnum); - else - snprintf (buf, sizeof buf, gettext ("unknown user attribute %hx"), - attrnum); - result = buf; - break; - } - - return result; -} - - -static const char * -dwarf_form_string (unsigned int form) -{ - static const char *known_forms[] = - { - [DW_FORM_addr] = "addr", - [DW_FORM_block2] = "block2", - [DW_FORM_block4] = "block4", - [DW_FORM_data2] = "data2", - [DW_FORM_data4] = "data4", - [DW_FORM_data8] = "data8", - [DW_FORM_string] = "string", - [DW_FORM_block] = "block", - [DW_FORM_block1] = "block1", - [DW_FORM_data1] = "data1", - [DW_FORM_flag] = "flag", - [DW_FORM_sdata] = "sdata", - [DW_FORM_strp] = "strp", - [DW_FORM_udata] = "udata", - [DW_FORM_ref_addr] = "ref_addr", - [DW_FORM_ref1] = "ref1", - [DW_FORM_ref2] = "ref2", - [DW_FORM_ref4] = "ref4", - [DW_FORM_ref8] = "ref8", - [DW_FORM_ref_udata] = "ref_udata", - [DW_FORM_indirect] = "indirect" - }; - const unsigned int nknown_forms = (sizeof (known_forms) - / sizeof (known_forms[0])); - static char buf[40]; - const char *result = NULL; - - if (form < nknown_forms) - result = known_forms[form]; - - if (result == NULL) - snprintf (buf, sizeof buf, gettext ("unknown form %" PRIx64), - (uint64_t) form); - - return result; -} - - -static const char * -dwarf_lang_string (unsigned int lang) -{ - static const char *known[] = - { - [DW_LANG_C89] = "ISO C89", - [DW_LANG_C] = "C", - [DW_LANG_Ada83] = "Ada83", - [DW_LANG_C_plus_plus ] = "C++", - [DW_LANG_Cobol74] = "Cobol74", - [DW_LANG_Cobol85] = "Cobol85", - [DW_LANG_Fortran77] = "Fortran77", - [DW_LANG_Fortran90] = "Fortran90", - [DW_LANG_Pascal83] = "Pascal83", - [DW_LANG_Modula2] = "Modula2", - [DW_LANG_Java] = "Java", - [DW_LANG_C99] = "ISO C99", - [DW_LANG_Ada95] = "Ada95", - [DW_LANG_Fortran95] = "Fortran95", - [DW_LANG_PL1] = "PL1" - }; - - if (lang < sizeof (known) / sizeof (known[0])) - return known[lang]; - else if (lang == DW_LANG_Mips_Assembler) - /* This language tag is used for assembler in general. */ - return "Assembler"; - - if (lang >= DW_LANG_lo_user && lang <= DW_LANG_hi_user) - { - static char buf[100]; - snprintf (buf, sizeof (buf), "lo_user+%u", lang - DW_LANG_lo_user); - return buf; - } - - return "???"; -} - - -static void -print_ops (Dwarf *dbg, int level, unsigned int addrsize, Dwarf_Word len, - unsigned char *data) -{ - static const char *known[] = - { - [DW_OP_addr] = "addr", - [DW_OP_deref] = "deref", - [DW_OP_const1u] = "const1u", - [DW_OP_const1s] = "const1s", - [DW_OP_const2u] = "const2u", - [DW_OP_const2s] = "const2s", - [DW_OP_const4u] = "const4u", - [DW_OP_const4s] = "const4s", - [DW_OP_const8u] = "const8u", - [DW_OP_const8s] = "const8s", - [DW_OP_constu] = "constu", - [DW_OP_consts] = "consts", - [DW_OP_dup] = "dup", - [DW_OP_drop] = "drop", - [DW_OP_over] = "over", - [DW_OP_pick] = "pick", - [DW_OP_swap] = "swap", - [DW_OP_rot] = "rot", - [DW_OP_xderef] = "xderef", - [DW_OP_abs] = "abs", - [DW_OP_and] = "and", - [DW_OP_div] = "div", - [DW_OP_minus] = "minus", - [DW_OP_mod] = "mod", - [DW_OP_mul] = "mul", - [DW_OP_neg] = "neg", - [DW_OP_not] = "not", - [DW_OP_or] = "or", - [DW_OP_plus] = "plus", - [DW_OP_plus_uconst] = "plus_uconst", - [DW_OP_shl] = "shl", - [DW_OP_shr] = "shr", - [DW_OP_shra] = "shra", - [DW_OP_xor] = "xor", - [DW_OP_bra] = "bra", - [DW_OP_eq] = "eq", - [DW_OP_ge] = "ge", - [DW_OP_gt] = "gt", - [DW_OP_le] = "le", - [DW_OP_lt] = "lt", - [DW_OP_ne] = "ne", - [DW_OP_skip] = "skip", - [DW_OP_lit0] = "lit0", - [DW_OP_lit1] = "lit1", - [DW_OP_lit2] = "lit2", - [DW_OP_lit3] = "lit3", - [DW_OP_lit4] = "lit4", - [DW_OP_lit5] = "lit5", - [DW_OP_lit6] = "lit6", - [DW_OP_lit7] = "lit7", - [DW_OP_lit8] = "lit8", - [DW_OP_lit9] = "lit9", - [DW_OP_lit10] = "lit10", - [DW_OP_lit11] = "lit11", - [DW_OP_lit12] = "lit12", - [DW_OP_lit13] = "lit13", - [DW_OP_lit14] = "lit14", - [DW_OP_lit15] = "lit15", - [DW_OP_lit16] = "lit16", - [DW_OP_lit17] = "lit17", - [DW_OP_lit18] = "lit18", - [DW_OP_lit19] = "lit19", - [DW_OP_lit20] = "lit20", - [DW_OP_lit21] = "lit21", - [DW_OP_lit22] = "lit22", - [DW_OP_lit23] = "lit23", - [DW_OP_lit24] = "lit24", - [DW_OP_lit25] = "lit25", - [DW_OP_lit26] = "lit26", - [DW_OP_lit27] = "lit27", - [DW_OP_lit28] = "lit28", - [DW_OP_lit29] = "lit29", - [DW_OP_lit30] = "lit30", - [DW_OP_lit31] = "lit31", - [DW_OP_reg0] = "reg0", - [DW_OP_reg1] = "reg1", - [DW_OP_reg2] = "reg2", - [DW_OP_reg3] = "reg3", - [DW_OP_reg4] = "reg4", - [DW_OP_reg5] = "reg5", - [DW_OP_reg6] = "reg6", - [DW_OP_reg7] = "reg7", - [DW_OP_reg8] = "reg8", - [DW_OP_reg9] = "reg9", - [DW_OP_reg10] = "reg10", - [DW_OP_reg11] = "reg11", - [DW_OP_reg12] = "reg12", - [DW_OP_reg13] = "reg13", - [DW_OP_reg14] = "reg14", - [DW_OP_reg15] = "reg15", - [DW_OP_reg16] = "reg16", - [DW_OP_reg17] = "reg17", - [DW_OP_reg18] = "reg18", - [DW_OP_reg19] = "reg19", - [DW_OP_reg20] = "reg20", - [DW_OP_reg21] = "reg21", - [DW_OP_reg22] = "reg22", - [DW_OP_reg23] = "reg23", - [DW_OP_reg24] = "reg24", - [DW_OP_reg25] = "reg25", - [DW_OP_reg26] = "reg26", - [DW_OP_reg27] = "reg27", - [DW_OP_reg28] = "reg28", - [DW_OP_reg29] = "reg29", - [DW_OP_reg30] = "reg30", - [DW_OP_reg31] = "reg31", - [DW_OP_breg0] = "breg0", - [DW_OP_breg1] = "breg1", - [DW_OP_breg2] = "breg2", - [DW_OP_breg3] = "breg3", - [DW_OP_breg4] = "breg4", - [DW_OP_breg5] = "breg5", - [DW_OP_breg6] = "breg6", - [DW_OP_breg7] = "breg7", - [DW_OP_breg8] = "breg8", - [DW_OP_breg9] = "breg9", - [DW_OP_breg10] = "breg10", - [DW_OP_breg11] = "breg11", - [DW_OP_breg12] = "breg12", - [DW_OP_breg13] = "breg13", - [DW_OP_breg14] = "breg14", - [DW_OP_breg15] = "breg15", - [DW_OP_breg16] = "breg16", - [DW_OP_breg17] = "breg17", - [DW_OP_breg18] = "breg18", - [DW_OP_breg19] = "breg19", - [DW_OP_breg20] = "breg20", - [DW_OP_breg21] = "breg21", - [DW_OP_breg22] = "breg22", - [DW_OP_breg23] = "breg23", - [DW_OP_breg24] = "breg24", - [DW_OP_breg25] = "breg25", - [DW_OP_breg26] = "breg26", - [DW_OP_breg27] = "breg27", - [DW_OP_breg28] = "breg28", - [DW_OP_breg29] = "breg29", - [DW_OP_breg30] = "breg30", - [DW_OP_breg31] = "breg31", - [DW_OP_regx] = "regx", - [DW_OP_fbreg] = "fbreg", - [DW_OP_bregx] = "bregx", - [DW_OP_piece] = "piece", - [DW_OP_deref_size] = "deref_size", - [DW_OP_xderef_size] = "xderef_size", - [DW_OP_nop] = "nop", - [DW_OP_push_object_address] = "push_object_address", - [DW_OP_call2] = "call2", - [DW_OP_call4] = "call4", - [DW_OP_call_ref] = "call_ref", - }; - - Dwarf_Word offset = 0; - while (len-- > 0) - { - size_t op = *((unsigned char *) data); - ++data; - - switch (op) - { - case DW_OP_call_ref: - case DW_OP_addr:; - /* Address operand. */ - Dwarf_Word addr; - if (addrsize == 4) - addr = read_4ubyte_unaligned (dbg, data); - else - { - assert (addrsize == 8); - addr = read_8ubyte_unaligned (dbg, data); - } - data += addrsize; - len -= addrsize; - - printf (" %*s [%4" PRIuMAX "] %s %" PRIuMAX "\n", - (int) (20 + level * 2), "", (uintmax_t) offset, - known[op] ?: "???", (uintmax_t) addr); - offset += 1 + addrsize; - break; - - case DW_OP_deref_size: /* XXX Correct? */ - case DW_OP_xderef_size: /* XXX Correct? */ - case DW_OP_pick: - case DW_OP_const1u: - printf (" %*s [%4" PRIuMAX "] %s %" PRIu8 "\n", - (int) (20 + level * 2), "", (uintmax_t) offset, - known[op] ?: "???", *((uint8_t *) data)); - ++data; - --len; - offset += 2; - break; - - case DW_OP_const2u: - printf (" %*s [%4" PRIuMAX "] %s %" PRIu16 "\n", - (int) (20 + level * 2), "", (uintmax_t) offset, - known[op] ?: "???", read_2ubyte_unaligned (dbg, data)); - len -= 2; - data += 2; - offset += 3; - break; - - case DW_OP_const4u: - printf (" %*s [%4" PRIuMAX "] %s %" PRIu32 "\n", - (int) (20 + level * 2), "", (uintmax_t) offset, - known[op] ?: "???", read_4ubyte_unaligned (dbg, data)); - len -= 4; - data += 4; - offset += 5; - break; - - case DW_OP_const8u: - printf (" %*s [%4" PRIuMAX "] %s %" PRIu64 "\n", - (int) (20 + level * 2), "", (uintmax_t) offset, - known[op] ?: "???", read_8ubyte_unaligned (dbg, data)); - len -= 8; - data += 8; - offset += 9; - break; - - case DW_OP_const1s: - printf (" %*s [%4" PRIuMAX "] %s %" PRId8 "\n", - (int) (20 + level * 2), "", (uintmax_t) offset, - known[op] ?: "???", *((int8_t *) data)); - ++data; - --len; - offset += 2; - break; - - case DW_OP_const2s: - printf (" %*s [%4" PRIuMAX "] %s %" PRId16 "\n", - (int) (20 + level * 2), "", (uintmax_t) offset, - known[op] ?: "???", read_2sbyte_unaligned (dbg, data)); - len -= 2; - data += 2; - offset += 3; - break; - - case DW_OP_const4s: - printf (" %*s [%4" PRIuMAX "] %s %" PRId32 "\n", - (int) (20 + level * 2), "", (uintmax_t) offset, - known[op] ?: "???", read_4sbyte_unaligned (dbg, data)); - len -= 4; - data += 4; - offset += 5; - break; - - case DW_OP_const8s: - printf (" %*s [%4" PRIuMAX "] %s %" PRId64 "\n", - (int) (20 + level * 2), "", (uintmax_t) offset, - known[op] ?: "???", read_8sbyte_unaligned (dbg, data)); - len -= 8; - data += 8; - offset += 9; - break; - - case DW_OP_piece: /* XXX Correct? */ - case DW_OP_regx: - case DW_OP_plus_uconst: - case DW_OP_constu:; - unsigned char *start = data; - unsigned int uleb; - get_uleb128 (uleb, data); - printf (" %*s [%4" PRIuMAX "] %s %u\n", - (int) (20 + level * 2), "", (uintmax_t) offset, - known[op] ?: "???", uleb); - len -= data - start; - offset += 1 + (data - start); - break; - - case DW_OP_fbreg: - case DW_OP_breg0 ... DW_OP_breg31: - case DW_OP_consts: - start = data; - unsigned int sleb; - get_sleb128 (sleb, data); - printf (" %*s [%4" PRIuMAX "] %s %d\n", - (int) (20 + level * 2), "", (uintmax_t) offset, - known[op] ?: "???", sleb); - len -= data - start; - offset += 1 + (data - start); - break; - - case DW_OP_bregx: - start = data; - get_uleb128 (uleb, data); - get_sleb128 (sleb, data); - printf (" %*s [%4" PRIuMAX "] %s %u %d\n", - (int) (20 + level * 2), "", (uintmax_t) offset, - known[op] ?: "???", uleb, sleb); - len -= data - start; - offset += 1 + (data - start); - break; - - case DW_OP_call2: - case DW_OP_call4: - case DW_OP_skip: - case DW_OP_bra: - printf (" %*s [%4" PRIuMAX "] %s %" PRIuMAX "\n", - (int) (20 + level * 2), "", (uintmax_t) offset, - known[op] ?: "???", - (uintmax_t) (offset + read_2sbyte_unaligned (dbg, data))); - len -= 2; - data += 2; - offset += 3; - break; - - default: - /* No Operand. */ - printf (" %*s [%4" PRIuMAX "] %s\n", - (int) (20 + level * 2), "", (uintmax_t) offset, - known[op] ?: "???"); - ++offset; - break; - } - } -} - - -static void -print_debug_abbrev_section (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, - GElf_Shdr *shdr, Dwarf *dbg) -{ - printf (gettext ("\nDWARF section '%s' at offset %#" PRIx64 ":\n" - " [ Code]\n"), - ".debug_abbrev", (uint64_t) shdr->sh_offset); - - Dwarf_Off offset = 0; - while (1) - { - size_t length; - Dwarf_Abbrev abbrev; - - if (dwarf_offabbrev (dbg, offset, &length, &abbrev) != 0) - { - printf (gettext (" *** error while reading abbreviation: %s\n"), - dwarf_errmsg (-1)); - break; - } - - if (length == 1) - /* This is the NUL byte at the end of the section. */ - break; - - /* We know these calls can never fail. */ - unsigned int code = dwarf_getabbrevcode (&abbrev); - unsigned int tag = dwarf_getabbrevtag (&abbrev); - int has_children = dwarf_abbrevhaschildren (&abbrev); - - printf (gettext (" [%5u] offset: %" PRId64 - ", children: %s, tag: %s\n"), - code, (int64_t) offset, - has_children ? gettext ("yes") : gettext ("no"), - dwarf_tag_string (tag)); - - size_t cnt = 0; - unsigned int name; - unsigned int form; - Dwarf_Off enoffset; - while (dwarf_getabbrevattr (&abbrev, cnt, &name, &form, &enoffset) == 0) - { - printf (" attr: %s, form: %s, offset: %#" PRIx64 "\n", - dwarf_attr_string (name), dwarf_form_string (form), - (uint64_t) enoffset); - - ++cnt; - } - - offset += length; - } -} - - -/* Print content of DWARF .debug_aranges section. We fortunately do - not have to know a bit about the structure of the section, libdwarf - takes care of it. */ -static void -print_debug_aranges_section (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, - GElf_Shdr *shdr, Dwarf *dbg) -{ - Dwarf_Aranges *aranges; - size_t cnt; - if (dwarf_getaranges (dbg, &aranges, &cnt) != 0) - { - error (0, 0, gettext ("cannot get .debug_aranges content: %s"), - dwarf_errmsg (-1)); - return; - } - - printf (ngettext ("\ -\nDWARF section '%s' at offset %#" PRIx64 " contains %zu entry:\n", - "\ -\nDWARF section '%s' at offset %#" PRIx64 " contains %zu entries:\n", - cnt), - ".debug_aranges", (uint64_t) shdr->sh_offset, cnt); - - /* Compute floor(log16(cnt)). */ - size_t tmp = cnt; - int digits = 1; - while (tmp >= 16) - { - ++digits; - tmp >>= 4; - } - - for (size_t n = 0; n < cnt; ++n) - { - Dwarf_Arange *runp = dwarf_onearange (aranges, n); - if (runp == NULL) - { - printf ("cannot get arange %zu: %s\n", n, dwarf_errmsg (-1)); - return; - } - - Dwarf_Addr start; - Dwarf_Word length; - Dwarf_Off offset; - - if (dwarf_getarangeinfo (runp, &start, &length, &offset) != 0) - printf (gettext (" [%*zu] ???\n"), digits, n); - else - printf (gettext (" [%*zu] start: %0#*" PRIx64 - ", length: %5" PRIu64 ", CU DIE offset: %6" - PRId64 "\n"), - digits, n, ehdr->e_ident[EI_CLASS] == ELFCLASS32 ? 10 : 18, - (uint64_t) start, (uint64_t) length, (int64_t) offset); - } -} - - -static void -print_debug_frame_section (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, - GElf_Shdr *shdr, Dwarf *dbg) -{ -} - - -struct attrcb_args -{ - Dwarf *dbg; - int level; - unsigned int addrsize; - Dwarf_Off cu_offset; -}; - - -static int -attr_callback (Dwarf_Attribute *attrp, void *arg) -{ - struct attrcb_args *cbargs = (struct attrcb_args *) arg; - const int level = cbargs->level; - - unsigned int attr = dwarf_whatattr (attrp); - if (unlikely (attr == 0)) - { - error (0, 0, gettext ("cannot get attribute code: %s"), - dwarf_errmsg (-1)); - return DWARF_CB_ABORT; - } - - unsigned int form = dwarf_whatform (attrp); - if (unlikely (form == 0)) - { - error (0, 0, gettext ("cannot get attribute form: %s"), - dwarf_errmsg (-1)); - return DWARF_CB_ABORT; - } - - switch (form) - { - case DW_FORM_addr:; - Dwarf_Addr addr; - if (unlikely (dwarf_formaddr (attrp, &addr) != 0)) - { - attrval_out: - error (0, 0, gettext ("cannot get attribute value: %s"), - dwarf_errmsg (-1)); - return DWARF_CB_ABORT; - } - printf (" %*s%-20s %#0*" PRIxMAX "\n", - (int) (level * 2), "", dwarf_attr_string (attr), - (int) (cbargs->addrsize * 2), (uintmax_t) addr); - break; - - case DW_FORM_indirect: - case DW_FORM_strp: - case DW_FORM_string:; - const char *str = dwarf_formstring (attrp); - if (unlikely (str == NULL)) - goto attrval_out; - printf (" %*s%-20s \"%s\"\n", - (int) (level * 2), "", dwarf_attr_string (attr), str); - break; - - case DW_FORM_ref_addr: - case DW_FORM_ref_udata: - case DW_FORM_ref8: - case DW_FORM_ref4: - case DW_FORM_ref2: - case DW_FORM_ref1:; - Dwarf_Off ref; - if (unlikely (dwarf_formref (attrp, &ref) != 0)) - goto attrval_out; - - printf (" %*s%-20s [%6" PRIxMAX "]\n", - (int) (level * 2), "", dwarf_attr_string (attr), - (uintmax_t) (ref + cbargs->cu_offset)); - break; - - case DW_FORM_udata: - case DW_FORM_sdata: - case DW_FORM_data8: - case DW_FORM_data4: - case DW_FORM_data2: - case DW_FORM_data1:; - Dwarf_Word num; - if (unlikely (dwarf_formudata (attrp, &num) != 0)) - goto attrval_out; - - if (attr == DW_AT_language) - { - printf (" %*s%-20s %s (%d)\n", - (int) (level * 2), "", dwarf_attr_string (attr), - dwarf_lang_string (num), (int) num); - break; - } - - printf (" %*s%-20s %" PRIuMAX "\n", - (int) (level * 2), "", dwarf_attr_string (attr), - (uintmax_t) num); - break; - - case DW_FORM_flag:; - bool flag; - if (unlikely (dwarf_formflag (attrp, &flag) != 0)) - goto attrval_out; - - printf (" %*s%-20s %s\n", - (int) (level * 2), "", dwarf_attr_string (attr), - nl_langinfo (flag ? YESSTR : NOSTR)); - break; - - case DW_FORM_block4: - case DW_FORM_block2: - case DW_FORM_block1: - case DW_FORM_block:; - Dwarf_Block block; - if (unlikely (dwarf_formblock (attrp, &block) != 0)) - goto attrval_out; - - printf (" %*s%-20s %" PRIxMAX " byte block\n", - (int) (level * 2), "", dwarf_attr_string (attr), - (uintmax_t) block.length); - - if (attr == DW_AT_data_member_location) - print_ops (cbargs->dbg, level, cbargs->addrsize, block.length, - block.data); - break; - - default: - printf (" %*s%-20s [form: %d] ???\n", - (int) (level * 2), "", dwarf_attr_string (attr), - (int) form); - break; - } - - return DWARF_CB_OK; -} - - -static void -print_debug_info_section (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, - GElf_Shdr *shdr, Dwarf *dbg) -{ - printf (gettext ("\ -\nDWARF section '%s' at offset %#" PRIx64 ":\n [Offset]\n"), - ".debug_info", (uint64_t) shdr->sh_offset); - - /* If the section is empty we don't have to do anything. */ - if (shdr->sh_size == 0) - return; - - size_t maxdies = 20; - Dwarf_Die *dies = (Dwarf_Die *) xmalloc (maxdies * sizeof (Dwarf_Die)); - - Dwarf_Off offset = 0; - - /* New compilation unit. */ - size_t cuhl; - //Dwarf_Half version; - Dwarf_Off abbroffset; - uint8_t addrsize; - uint8_t offsize; - Dwarf_Off nextcu; - next_cu: - if (dwarf_nextcu (dbg, offset, &nextcu, &cuhl, &abbroffset, &addrsize, - &offsize) != 0) - goto do_return; - - printf (gettext (" Compilation unit at offset %" PRIu64 ":\n" - " Version: %" PRIu16 ", Abbreviation section offset: %" - PRIu64 ", Address size: %" PRIu8 ", Offset size: %" PRIu8 "\n"), - (uint64_t) offset, /*version*/2, abbroffset, addrsize, offsize); - - - struct attrcb_args args; - args.dbg = dbg; - args.addrsize = addrsize; - args.cu_offset = offset; - - offset += cuhl; - - int level = 0; - - if (unlikely (dwarf_offdie (dbg, offset, &dies[level]) == NULL)) - { - error (0, 0, gettext ("cannot get DIE at offset %" PRIu64 - " in section '%s': %s"), - (uint64_t) offset, ".debug_info", dwarf_errmsg (-1)); - goto do_return; - } - - do - { - offset = dwarf_dieoffset (&dies[level]); - if (offset == -1l) - { - error (0, 0, gettext ("cannot get DIE offset: %s"), - dwarf_errmsg (-1)); - goto do_return; - } - - int tag = dwarf_tag (&dies[level]); - if (tag == DW_TAG_invalid) - { - error (0, 0, gettext ("cannot get tag of DIE at offset %" PRIu64 - " in section '%s': %s"), - (uint64_t) offset, ".debug_info", dwarf_errmsg (-1)); - goto do_return; - } - - static const char *const lowtags[] = - { - [DW_TAG_array_type] = "array_type", - [DW_TAG_class_type] = "class_type", - [DW_TAG_entry_point] = "entry_point", - [DW_TAG_enumeration_type] = "enumeration_type", - [DW_TAG_formal_parameter] = "formal_parameter", - [DW_TAG_imported_declaration] = "imported_declaration", - [DW_TAG_label] = "label", - [DW_TAG_lexical_block] = "lexical_block", - [DW_TAG_member] = "member", - [DW_TAG_pointer_type] = "pointer_type", - [DW_TAG_reference_type] = "reference_type", - [DW_TAG_compile_unit] = "compile_unit", - [DW_TAG_string_type] = "string_type", - [DW_TAG_structure_type] = "structure_type", - [DW_TAG_subroutine_type] = "subroutine_type", - [DW_TAG_typedef] = "typedef", - [DW_TAG_union_type] = "union_type", - [DW_TAG_unspecified_parameters] = "unspecified_parameters", - [DW_TAG_variant] = "variant", - [DW_TAG_common_block] = "common_block", - [DW_TAG_common_inclusion] = "common_inclusion", - [DW_TAG_inheritance] = "inheritance", - [DW_TAG_inlined_subroutine] = "inlined_subroutine", - [DW_TAG_module] = "module", - [DW_TAG_ptr_to_member_type] = "ptr_to_member_type", - [DW_TAG_set_type] = "set_type", - [DW_TAG_subrange_type] = "subrange_type", - [DW_TAG_with_stmt] = "with_stmt", - [DW_TAG_access_declaration] = "access_declaration", - [DW_TAG_base_type] = "base_type", - [DW_TAG_catch_block] = "catch_block", - [DW_TAG_const_type] = "const_type", - [DW_TAG_constant] = "constant", - [DW_TAG_enumerator] = "enumerator", - [DW_TAG_file_type] = "file_type", - [DW_TAG_friend] = "friend", - [DW_TAG_namelist] = "namelist", - [DW_TAG_namelist_item] = "namelist_item", - [DW_TAG_packed_type] = "packed_type", - [DW_TAG_subprogram] = "subprogram", - [DW_TAG_template_type_param] = "template_type_param", - [DW_TAG_template_value_param] = "template_value_param", - [DW_TAG_thrown_type] = "thrown_type", - [DW_TAG_try_block] = "try_block", - [DW_TAG_variant_part] = "variant_part", - [DW_TAG_variable] = "variable", - [DW_TAG_volatile_type] = "volatile_type" - }; - - const char *tagstr; - switch (tag) - { - case DW_TAG_lo_user: - tagstr = "lo_user"; - break; - - case DW_TAG_MIPS_loop: - tagstr = "MIPS_loop"; - break; - - case DW_TAG_format_label: - tagstr = "format_label"; - break; - - case DW_TAG_function_template: - tagstr = "function_template"; - break; - - case DW_TAG_class_template: - tagstr = "class_template"; - break; - case DW_TAG_hi_user: - tagstr = "hi_user"; - break; - - default: - if (tag < sizeof (lowtags) / sizeof (lowtags[0])) - tagstr = lowtags[tag]; - else - tagstr = "???"; - break; - } - - printf (" [%6" PRIx64 "] %*s%s\n", - (uint64_t) offset, (int) (level * 2), "", tagstr); - - /* Print the attribute values. */ - args.level = level; - (void) dwarf_getattrs (&dies[level], attr_callback, &args, 0); - - /* Make room for the next level's DIE. */ - if (level + 1 == maxdies) - dies = (Dwarf_Die *) xrealloc (dies, - (maxdies += 10) - * sizeof (Dwarf_Die)); - - int res = dwarf_child (&dies[level], &dies[level + 1]); - if (res > 0) - { - while ((res = dwarf_siblingof (&dies[level], &dies[level])) == 1) - if (level-- == 0) - break; - - if (res == -1) - { - error (0, 0, gettext ("cannot get next DIE: %s\n"), - dwarf_errmsg (-1)); - goto do_return; - } - } - else if (unlikely (res < 0)) - { - error (0, 0, gettext ("cannot get next DIE: %s"), - dwarf_errmsg (-1)); - goto do_return; - } - else - ++level; - } - while (level >= 0); - - offset = nextcu; - if (offset != 0) - goto next_cu; - - do_return: - free (dies); -} - - -static void -print_debug_line_section (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, - GElf_Shdr *shdr, Dwarf *dbg) -{ - printf (gettext ("\ -\nDWARF section '%s' at offset %#" PRIx64 ":\n"), - ".debug_line", (uint64_t) shdr->sh_offset); - - if (shdr->sh_size == 0) - return; - - /* There is no functionality in libdw to read the information in the - way it is represented here. Hardcode the decoder. */ - Elf_Data *data = elf_getdata (scn, NULL); - if (data == NULL || data->d_buf == NULL) - { - error (0, 0, gettext ("cannot get line data section data: %s"), - elf_errmsg (-1)); - return; - } - - const unsigned char *linep = (const unsigned char *) data->d_buf; - const unsigned char *lineendp; - - while (linep - < (lineendp = (const unsigned char *) data->d_buf + data->d_size)) - { - size_t start_offset = linep - (const unsigned char *) data->d_buf; - - Dwarf_Word unit_length = read_4ubyte_unaligned_inc (dbg, linep); - unsigned int length = 4; - if (unlikely (unit_length == 0xffffffff)) - { - if (unlikely (linep + 8 > lineendp)) - { - invalid_data: - error (0, 0, gettext ("invalid data in section [%zu] '%s'"), - elf_ndxscn (scn), ".debug_line"); - return; - } - unit_length = read_8ubyte_unaligned_inc (dbg, linep); - length = 8; - } - - /* Check whether we have enough room in the section. */ - if (unit_length < 2 + length + 5 * 1 - || unlikely (linep + unit_length > lineendp)) - goto invalid_data; - lineendp = linep + unit_length; - - /* The next element of the header is the version identifier. */ - uint_fast16_t version = read_2ubyte_unaligned_inc (dbg, linep); - - /* Next comes the header length. */ - Dwarf_Word header_length; - if (length == 4) - header_length = read_4ubyte_unaligned_inc (dbg, linep); - else - header_length = read_8ubyte_unaligned_inc (dbg, linep); - //const unsigned char *header_start = linep; - - /* Next the minimum instruction length. */ - uint_fast8_t minimum_instr_len = *linep++; - - /* Then the flag determining the default value of the is_stmt - register. */ - uint_fast8_t default_is_stmt = *linep++; - - /* Now the line base. */ - int_fast8_t line_base = *((const int_fast8_t *) linep); - ++linep; - - /* And the line range. */ - uint_fast8_t line_range = *linep++; - - /* The opcode base. */ - uint_fast8_t opcode_base = *linep++; - - /* Print what we got so far. */ - printf (gettext ("\n" - " Length: %" PRIu64 "\n" - " DWARF version: %" PRIuFAST16 "\n" - " Prologue length: %" PRIu64 "\n" - " Minimum instruction length: %" PRIuFAST8 "\n" - " Initial value if '%s': %" PRIuFAST8 "\n" - " Line base: %" PRIdFAST8 "\n" - " Line range: %" PRIuFAST8 "\n" - " Opcode base: %" PRIuFAST8 "\n" - "\n" - "Opcodes:\n"), - (uint64_t) unit_length, version, (uint64_t) header_length, - minimum_instr_len, "is_stmt", default_is_stmt, line_base, - line_range, opcode_base); - - if (unlikely (linep + opcode_base - 1 >= lineendp)) - goto invalid_data; - int opcode_base_l10 = 1; - unsigned int tmp = opcode_base; - while (tmp > 10) - { - tmp /= 10; - ++opcode_base_l10; - } - const uint8_t *standard_opcode_lengths = linep - 1; - for (uint_fast8_t cnt = 1; cnt < opcode_base; ++cnt) - printf (ngettext (" [%*" PRIuFAST8 "] %hhu argument\n", - " [%*" PRIuFAST8 "] %hhu arguments\n", - (int) linep[cnt - 1]), - opcode_base_l10, cnt, linep[cnt - 1]); - linep += opcode_base - 1; - if (unlikely (linep >= lineendp)) - goto invalid_data; - - puts (gettext ("\nDirectory table:")); - while (*linep != 0) - { - unsigned char *endp = memchr (linep, '\0', lineendp - linep); - if (endp == NULL) - goto invalid_data; - - printf (" %s\n", (char *) linep); - - linep = endp + 1; - } - /* Skip the final NUL byte. */ - ++linep; - - if (unlikely (linep >= lineendp)) - goto invalid_data; - puts (gettext ("\nFile name table:\n" - " Entry Dir Time Size Name")); - for (unsigned int cnt = 1; *linep != 0; ++cnt) - { - /* First comes the file name. */ - char *fname = (char *) linep; - unsigned char *endp = memchr (fname, '\0', lineendp - linep); - if (endp == NULL) - goto invalid_data; - linep = endp + 1; - - /* Then the index. */ - unsigned int diridx; - get_uleb128 (diridx, linep); - - /* Next comes the modification time. */ - unsigned int mtime; - get_uleb128 (mtime, linep); - - /* Finally the length of the file. */ - unsigned int fsize; - get_uleb128 (fsize, linep); - - printf (" %-5u %-5u %-9u %-9u %s\n", - cnt, diridx, mtime, fsize, fname); - } - /* Skip the final NUL byte. */ - ++linep; - - puts (gettext ("\nLine number statements:")); - Dwarf_Word address = 0; - size_t line = 1; - uint_fast8_t is_stmt = default_is_stmt; - - /* Default address value, in case we do not find the CU. */ - size_t address_size - = elf_getident (ebl->elf, NULL)[EI_CLASS] == ELFCLASS32 ? 4 : 8; - - /* Determine the CU this block is for. */ - Dwarf_Off cuoffset; - Dwarf_Off ncuoffset = 0; - size_t hsize; - while (dwarf_nextcu (dbg, cuoffset = ncuoffset, &ncuoffset, &hsize, - NULL, NULL, NULL) == 0) - { - Dwarf_Die cudie; - if (dwarf_offdie (dbg, cuoffset + hsize, &cudie) == NULL) - continue; - Dwarf_Attribute stmt_list; - if (dwarf_attr (&cudie, DW_AT_stmt_list, &stmt_list) == NULL) - continue; - Dwarf_Word lineoff; - if (dwarf_formudata (&stmt_list, &lineoff) != 0) - continue; - if (lineoff == start_offset) - { - /* Found the CU. */ - address_size = cudie.cu->address_size; - break; - } - } - - while (linep < lineendp) - { - unsigned int u128; - int s128; - - /* Read the opcode. */ - unsigned int opcode = *linep++; - - /* Is this a special opcode? */ - if (likely (opcode >= opcode_base)) - { - /* Yes. Handling this is quite easy since the opcode value - is computed with - - opcode = (desired line increment - line_base) - + (line_range * address advance) + opcode_base - */ - int line_increment = (line_base - + (opcode - opcode_base) % line_range); - unsigned int address_increment = (minimum_instr_len - * ((opcode - opcode_base) - / line_range)); - - /* Perform the increments. */ - line += line_increment; - address += address_increment; - - printf (gettext ("\ - special opcode %u: address+%u = %#" PRIx64 ", line%+d = %zu\n"), - opcode, address_increment, (uint64_t) address, - line_increment, line); - } - else if (opcode == 0) - { - /* This an extended opcode. */ - if (unlikely (linep + 2 > lineendp)) - goto invalid_data; - - /* The length. */ - unsigned int len = *linep++; - - if (unlikely (linep + len > lineendp)) - goto invalid_data; - - /* The sub-opcode. */ - opcode = *linep++; - - printf (gettext (" extended opcode %u: "), opcode); - - switch (opcode) - { - case DW_LNE_end_sequence: - puts (gettext ("end of sequence")); - - /* Reset the registers we care about. */ - address = 0; - line = 1; - is_stmt = default_is_stmt; - break; - - case DW_LNE_set_address: - if (address_size == 4) - address = read_4ubyte_unaligned_inc (dbg, linep); - else - address = read_8ubyte_unaligned_inc (dbg, linep); - printf (gettext ("set address to %#" PRIx64 "\n"), - (uint64_t) address); - break; - - case DW_LNE_define_file: - { - char *fname = (char *) linep; - unsigned char *endp = memchr (linep, '\0', - lineendp - linep); - if (endp == NULL) - goto invalid_data; - linep = endp + 1; - - unsigned int diridx; - get_uleb128 (diridx, linep); - Dwarf_Word mtime; - get_uleb128 (mtime, linep); - Dwarf_Word filelength; - get_uleb128 (filelength, linep); - - printf (gettext ("\ -define new file: dir=%u, mtime=%" PRIu64 ", length=%" PRIu64 ", name=%s\n"), - diridx, (uint64_t) mtime, (uint64_t) filelength, - fname); - } - break; - - default: - /* Unknown, ignore it. */ - puts (gettext ("unknown opcode")); - linep += len - 1; - break; - } - } - else if (opcode <= DW_LNS_set_epilog_begin) - { - /* This is a known standard opcode. */ - switch (opcode) - { - case DW_LNS_copy: - /* Takes no argument. */ - puts (gettext (" copy")); - break; - - case DW_LNS_advance_pc: - /* Takes one uleb128 parameter which is added to the - address. */ - get_uleb128 (u128, linep); - address += minimum_instr_len * u128; - printf (gettext ("\ - advance address by %u to %#" PRIx64 "\n"), - u128, (uint64_t) address); - break; - - case DW_LNS_advance_line: - /* Takes one sleb128 parameter which is added to the - line. */ - get_sleb128 (s128, linep); - line += s128; - printf (gettext ("\ - advance line by constant %d to %" PRId64 "\n"), - s128, (int64_t) line); - break; - - case DW_LNS_set_file: - /* Takes one uleb128 parameter which is stored in file. */ - get_uleb128 (u128, linep); - printf (gettext (" set file to %" PRIu64 "\n"), - (uint64_t) u128); - break; - - case DW_LNS_set_column: - /* Takes one uleb128 parameter which is stored in column. */ - if (unlikely (standard_opcode_lengths[opcode] != 1)) - goto invalid_data; - - get_uleb128 (u128, linep); - printf (gettext (" set column to %" PRIu64 "\n"), - (uint64_t) u128); - break; - - case DW_LNS_negate_stmt: - /* Takes no argument. */ - is_stmt = 1 - is_stmt; - printf (gettext (" set '%s' to %" PRIuFAST8 "\n"), - "is_stmt", is_stmt); - break; - - case DW_LNS_set_basic_block: - /* Takes no argument. */ - puts (gettext (" set basic block flag")); - break; - - case DW_LNS_const_add_pc: - /* Takes no argument. */ - u128 = (minimum_instr_len - * ((255 - opcode_base) / line_range)); - address += u128; - printf (gettext ("\ - advance address by constant %u to %#" PRIx64 "\n"), - u128, (uint64_t) address); - break; - - case DW_LNS_fixed_advance_pc: - /* Takes one 16 bit parameter which is added to the - address. */ - if (unlikely (standard_opcode_lengths[opcode] != 1)) - goto invalid_data; - - u128 = read_2ubyte_unaligned_inc (dbg, linep); - address += u128; - printf (gettext ("\ - advance address by fixed value %u to %#" PRIx64 "\n"), - u128, (uint64_t) address); - break; - - case DW_LNS_set_prologue_end: - /* Takes no argument. */ - puts (gettext (" set prologue end flag")); - break; - - case DW_LNS_set_epilog_begin: - /* Takes no argument. */ - puts (gettext (" set epilogue begin flag")); - break; - } - } - else - { - /* This is a new opcode the generator but not we know about. - Read the parameters associated with it but then discard - everything. Read all the parameters for this opcode. */ - printf (ngettext (" unknown opcode with %" PRIu8 " parameter:", - " unknown opcode with %" PRIu8 " parameters:", - standard_opcode_lengths[opcode]), - standard_opcode_lengths[opcode]); - for (int n = standard_opcode_lengths[opcode]; n > 0; --n) - { - get_uleb128 (u128, linep); - if (n != standard_opcode_lengths[opcode]) - putc_unlocked (',', stdout); - printf (" %u", u128); - } - - /* Next round, ignore this opcode. */ - continue; - } - } - } - - /* There must only be one data block. */ - assert (elf_getdata (scn, data) == NULL); -} - - -static void -print_debug_loc_section (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, - GElf_Shdr *shdr, Dwarf *dbg) -{ - printf (gettext ("\ -\nDWARF section '%s' at offset %#" PRIx64 ":\n"), - ".debug_loc", (uint64_t) shdr->sh_offset); - - // XXX add something -} - - -struct mac_culist -{ - Dwarf_Die die; - Dwarf_Off offset; - Dwarf_Files *files; - struct mac_culist *next; -}; - - -static int -mac_compare (const void *p1, const void *p2) -{ - struct mac_culist *m1 = (struct mac_culist *) p1; - struct mac_culist *m2 = (struct mac_culist *) p2; - - if (m1->offset < m2->offset) - return -1; - if (m1->offset > m2->offset) - return 1; - return 0; -} - - -static void -print_debug_macinfo_section (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, - GElf_Shdr *shdr, Dwarf *dbg) -{ - printf (gettext ("\ -\nDWARF section '%s' at offset %#" PRIx64 ":\n"), - ".debug_macinfo", (uint64_t) shdr->sh_offset); - putc_unlocked ('\n', stdout); - - /* There is no function in libdw to iterate over the raw content of - the section but it is easy enough to do. */ - Elf_Data *data = elf_getdata (scn, NULL); - if (data == NULL || data->d_buf == NULL) - { - error (0, 0, gettext ("cannot get macro information section data: %s"), - elf_errmsg (-1)); - return; - } - - /* Get the source file information for all CUs. */ - Dwarf_Off offset; - Dwarf_Off ncu = 0; - size_t hsize; - struct mac_culist *culist = NULL; - size_t nculist = 0; - while (dwarf_nextcu (dbg, offset = ncu, &ncu, &hsize, NULL, NULL, NULL) == 0) - { - Dwarf_Die cudie; - if (dwarf_offdie (dbg, offset + hsize, &cudie) == NULL) - continue; - - Dwarf_Attribute attr; - if (dwarf_attr (&cudie, DW_AT_macro_info, &attr) == NULL) - continue; - - Dwarf_Word macoff; - if (dwarf_formudata (&attr, &macoff) != 0) - continue; - - struct mac_culist *newp = (struct mac_culist *) alloca (sizeof (*newp)); - newp->die = cudie; - newp->offset = macoff; - newp->files = NULL; - newp->next = culist; - culist = newp; - ++nculist; - } - - /* Convert the list into an array for easier consumption. */ - struct mac_culist *cus = (struct mac_culist *) alloca ((nculist + 1) - * sizeof (*cus)); - /* Add sentinel. */ - cus[nculist].offset = data->d_size; - if (nculist > 0) - { - for (size_t cnt = nculist - 1; culist != NULL; --cnt) - { - assert (cnt < nculist); - cus[cnt] = *culist; - culist = culist->next; - } - - /* Sort the array according to the offset in the .debug_macinfo - section. Note we keep the sentinel at the end. */ - qsort (cus, nculist, sizeof (*cus), mac_compare); - } - - const unsigned char *readp = (const unsigned char *) data->d_buf; - const unsigned char *readendp = readp + data->d_size; - int level = 1; - - while (readp < readendp) - { - unsigned int opcode = *readp++; - unsigned int u128; - unsigned int u128_2; - const unsigned char *endp; - - switch (opcode) - { - case DW_MACINFO_define: - case DW_MACINFO_undef: - case DW_MACINFO_vendor_ext: - /* For the first two opcodes the parameters are - line, string - For the latter - number, string. - We can treat these cases together. */ - get_uleb128 (u128, readp); - - endp = memchr (readp, '\0', readendp - readp); - if (endp == NULL) - { - printf (gettext ("\ -%*s*** non-terminated string at end of section"), - level, ""); - return; - } - - if (opcode == DW_MACINFO_define) - printf ("%*s#define %s, line %u\n", - level, "", (char *) readp, u128); - else if (opcode == DW_MACINFO_undef) - printf ("%*s#undef %s, line %u\n", - level, "", (char *) readp, u128); - else - printf (" #vendor-ext %s, number %u\n", (char *) readp, u128); - - readp = endp + 1; - break; - - case DW_MACINFO_start_file: - /* The two parameters are line and file index, in this order. */ - get_uleb128 (u128, readp); - get_uleb128 (u128_2, readp); - - /* Find the CU DIE for this file. */ - ptrdiff_t macoff = readp - (const unsigned char *) data->d_buf; - const char *fname = "???"; - if (macoff >= cus[0].offset) - { - while (macoff >= cus[1].offset) - ++cus; - - if (cus[0].files == NULL - && dwarf_getsrcfiles (&cus[0].die, &cus[0].files, NULL) != 0) - cus[0].files = (Dwarf_Files *) -1l; - - if (cus[0].files != (Dwarf_Files *) -1l) - fname = (dwarf_filesrc (cus[0].files, u128_2, NULL, NULL) - ?: "???"); - } - - printf ("%*sstart_file %u, [%u] %s\n", - level, "", u128, u128_2, fname); - ++level; - break; - - case DW_MACINFO_end_file: - --level; - printf ("%*send_file\n", level, ""); - /* Nothing more to do. */ - break; - - default: - // XXX gcc seems to generate files with a trailing zero. - if (opcode != 0 || readp != readendp) - printf ("%*s*** invalid opcode %u\n", level, "", opcode); - break; - } - } -} - - -/* Callback for printing global names. */ -static int -print_pubnames (Dwarf *dbg, Dwarf_Global *global, void *arg) -{ - int *np = (int *) arg; - - printf (gettext (" [%5d] DIE offset: %6" PRId64 - ", CU DIE offset: %6" PRId64 ", name: %s\n"), - (*np)++, global->die_offset, global->cu_offset, global->name); - - return 0; -} - - -/* Print the known exported symbols in the DWARF section '.debug_pubnames'. */ -static void -print_debug_pubnames_section (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, - GElf_Shdr *shdr, Dwarf *dbg) -{ - printf (gettext ("\nDWARF section '%s' at offset %#" PRIx64 ":\n"), - ".debug_pubnames", (uint64_t) shdr->sh_offset); - - int n = 0; - (void) dwarf_getpubnames (dbg, print_pubnames, &n, 0); -} - -/* Print the content of the DWARF string section '.debug_str'. */ -static void -print_debug_str_section (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, - GElf_Shdr *shdr, Dwarf *dbg) -{ - /* Compute floor(log16(shdr->sh_size)). */ - GElf_Addr tmp = shdr->sh_size; - int digits = 1; - while (tmp >= 16) - { - ++digits; - tmp >>= 4; - } - digits = MAX (4, digits); - - printf (gettext ("\nDWARF section '%s' at offset %#" PRIx64 ":\n" - " %*s String\n"), - ".debug_str", (uint64_t) shdr->sh_offset, - /* TRANS: the debugstr| prefix makes the string unique. */ - digits + 2, sgettext ("debugstr|Offset")); - - Dwarf_Off offset = 0; - while (offset < shdr->sh_size) - { - size_t len; - const char *str = dwarf_getstring (dbg, offset, &len); - if (str == NULL) - { - printf (gettext (" *** error while reading strings: %s\n"), - dwarf_errmsg (-1)); - break; - } - - printf (" [%*" PRIx64 "] \"%s\"\n", digits, (uint64_t) offset, str); - - offset += len + 1; - } -} - - -static void -print_debug (Ebl *ebl, GElf_Ehdr *ehdr) -{ - /* Find the version information sections. For this we have to - search through the section table. */ - Dwarf *dbg; - Elf_Scn *scn; - size_t shstrndx; - - /* Before we start the real work get a debug context descriptor. */ - dbg = dwarf_begin_elf (ebl->elf, DWARF_C_READ, NULL); - if (dbg == NULL) - { - error (0, 0, gettext ("cannot get debug context descriptor: %s"), - dwarf_errmsg (-1)); - return; - } - - /* Get the section header string table index. */ - if (elf_getshstrndx (ebl->elf, &shstrndx) < 0) - error (EXIT_FAILURE, 0, - gettext ("cannot get section header string table index")); - - scn = NULL; - while ((scn = elf_nextscn (ebl->elf, scn)) != NULL) - { - /* Handle the section if it is part of the versioning handling. */ - GElf_Shdr shdr_mem; - GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); - - if (shdr != NULL || shdr->sh_type != SHT_PROGBITS) - { - static const struct - { - const char *name; - enum section_e bitmask; - void (*fp) (Ebl *, GElf_Ehdr *, Elf_Scn *, GElf_Shdr *, Dwarf *); - } debug_sections[] = - { -#define NEW_SECTION(name) \ - { ".debug_" #name, section_##name, print_debug_##name##_section } - NEW_SECTION (abbrev), - NEW_SECTION (aranges), - NEW_SECTION (frame), - NEW_SECTION (info), - NEW_SECTION (line), - NEW_SECTION (loc), - NEW_SECTION (pubnames), - NEW_SECTION (str), - NEW_SECTION (macinfo), - { ".eh_frame", section_frame, print_debug_frame_section } - }; - const int ndebug_sections = (sizeof (debug_sections) - / sizeof (debug_sections[0])); - const char *name = elf_strptr (ebl->elf, shstrndx, - shdr->sh_name); - int n; - - for (n = 0; n < ndebug_sections; ++n) - if (strcmp (name, debug_sections[n].name) == 0) - { - if (print_debug_sections & debug_sections[n].bitmask) - debug_sections[n].fp (ebl, ehdr, scn, shdr, dbg); - break; - } - } - } - - /* We are done with the DWARF handling. */ - dwarf_end (dbg); -} - - -static void -handle_notes (Ebl *ebl, GElf_Ehdr *ehdr) -{ - int class = gelf_getclass (ebl->elf); - size_t cnt; - - /* We have to look through the program header to find the note - sections. There can be more than one. */ - for (cnt = 0; cnt < ehdr->e_phnum; ++cnt) - { - GElf_Phdr mem; - GElf_Phdr *phdr = gelf_getphdr (ebl->elf, cnt, &mem); - - if (phdr == NULL || phdr->p_type != PT_NOTE) - /* Not what we are looking for. */ - continue; - - printf (gettext ("\ -\nNote segment of %" PRId64 " bytes at offset %#0" PRIx64 ":\n"), - phdr->p_filesz, phdr->p_offset); - - char *notemem = gelf_rawchunk (ebl->elf, phdr->p_offset, phdr->p_filesz); - if (notemem == NULL) - error (EXIT_FAILURE, 0, - gettext ("cannot get content of note section: %s"), - elf_errmsg (-1)); - - fputs_unlocked (gettext (" Owner Data size Type\n"), stdout); - - - /* Handle the note section content. It consists of one or more - entries each of which consists of five parts: - - - a 32-bit name length - - a 32-bit descriptor length - - a 32-bit type field - - the NUL-terminated name, length as specified in the first field - - the descriptor, length as specified in the second field - - The variable sized fields are padded to 32- or 64-bits - depending on whether the file is a 32- or 64-bit ELF file. - */ - size_t align = class == ELFCLASS32 ? 4 : 8; -#define ALIGNED_LEN(len) (((len) + align - 1) & ~(align - 1)) - - size_t idx = 0; - while (idx < phdr->p_filesz) - { - /* XXX Handle 64-bit note section entries correctly. */ - struct - { - uint32_t namesz; - uint32_t descsz; - uint32_t type; - char name[0]; - } *noteentry = (__typeof (noteentry)) (notemem + idx); - - if (idx + 12 > phdr->p_filesz - || (idx + 12 + ALIGNED_LEN (noteentry->namesz) - + ALIGNED_LEN (noteentry->descsz) > phdr->p_filesz)) - /* This entry isn't completely contained in the note - section. Ignore it. */ - break; - - char buf[100]; - char buf2[100]; - printf (gettext (" %-13.*s %9" PRId32 " %s\n"), - (int) noteentry->namesz, noteentry->name, - noteentry->descsz, - ehdr->e_type == ET_CORE - ? ebl_core_note_type_name (ebl, noteentry->type, - buf, sizeof (buf)) - : ebl_object_note_type_name (ebl, noteentry->type, - buf2, sizeof (buf2))); - - /* Filter out invalid entries. */ - if (memchr (noteentry->name, '\0', noteentry->namesz) != NULL - /* XXX For now help broken Linux kernels. */ - || 1) - { - if (ehdr->e_type == ET_CORE) - ebl_core_note (ebl, noteentry->name, noteentry->type, - noteentry->descsz, - ¬eentry->name[ALIGNED_LEN (noteentry->namesz)]); - else - ebl_object_note (ebl, noteentry->name, noteentry->type, - noteentry->descsz, - ¬eentry->name[ALIGNED_LEN (noteentry->namesz)]); - } - - /* Move to the next entry. */ - idx += (12 + ALIGNED_LEN (noteentry->namesz) - + ALIGNED_LEN (noteentry->descsz)); - } - - gelf_freechunk (ebl->elf, notemem); - } -} diff --git a/src/sectionhash.c b/src/sectionhash.c deleted file mode 100644 index dc559409..00000000 --- a/src/sectionhash.c +++ /dev/null @@ -1,69 +0,0 @@ -/* Section hash table implementation. - Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <string.h> - -#include <elf-knowledge.h> -#include <ld.h> - - -/* Comparison function for sections. */ -static int -scnhead_compare (struct scnhead *one, struct scnhead *two) -{ - int result = strcmp (one->name, two->name); - - if (result == 0) - { - result = one->type - two->type; - - if (result == 0) - { - GElf_Xword diff = (SH_FLAGS_IMPORTANT (one->flags) - - SH_FLAGS_IMPORTANT (two->flags)); - result = diff < 0 ? -1 : diff == 0 ? 0 : 1; - - if (result == 0) - { - result = one->entsize - two->entsize; - - if (result == 0) - { - result = (one->grp_signature == NULL - ? (two->grp_signature == NULL ? 0 : -1) - : (two->grp_signature == NULL - ? 1 : strcmp (one->grp_signature, - two->grp_signature))); - - if (result == 0) - result = one->kind - two->kind; - } - } - } - } - - return result; -} - -/* Definitions for the section hash table. */ -#define TYPE struct scnhead * -#define NAME ld_section_tab -#define ITERATE 1 -#define COMPARE(a, b) scnhead_compare (a, b) - -#include "../lib/dynamicsizehash.c" diff --git a/src/sectionhash.h b/src/sectionhash.h deleted file mode 100644 index 50bcb9c8..00000000 --- a/src/sectionhash.h +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef SECTIONHASH_H -#define SECTIONHASH_H 1 - -/* Definitions for the section hash table. */ -#define TYPE struct scnhead * -#define NAME ld_section_tab -#define ITERATE 1 -#include <dynamicsizehash.h> - -#endif /* sectionhash.h */ diff --git a/src/size.c b/src/size.c deleted file mode 100644 index e9edb677..00000000 --- a/src/size.c +++ /dev/null @@ -1,698 +0,0 @@ -/* Print size information from ELF file. - Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <argp.h> -#include <error.h> -#include <fcntl.h> -#include <gelf.h> -#include <inttypes.h> -#include <libelf.h> -#include <libintl.h> -#include <locale.h> -#include <mcheck.h> -#include <stdbool.h> -#include <stdio.h> -#include <stdio_ext.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <sys/param.h> - -#include <system.h> - - -/* Name and version of program. */ -static void print_version (FILE *stream, struct argp_state *state); -void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version; - - -/* Values for the parameters which have no short form. */ -#define OPT_FORMAT 0x100 -#define OPT_RADIX 0x101 - -/* Definitions of arguments for argp functions. */ -static const struct argp_option options[] = -{ - { NULL, 0, NULL, 0, N_("Output format:") }, - { "format", OPT_FORMAT, "FORMAT", 0, N_("Use the output format FORMAT. FORMAT can be `bsd' or `sysv'. The default is `bsd'") }, - { NULL, 'A', NULL, 0, N_("Same as `--format=sysv'") }, - { NULL, 'B', NULL, 0, N_("Same as `--format=bsd'") }, - { "radix", OPT_RADIX, "RADIX", 0, N_("Use RADIX for printing symbol values") }, - { NULL, 'd', NULL, 0, N_("Same as `--radix=10'") }, - { NULL, 'o', NULL, 0, N_("Same as `--radix=8'") }, - { NULL, 'x', NULL, 0, N_("Same as `--radix=16'") }, - { NULL, 'f', NULL, 0, N_("Similar to `--format=sysv' output but in one line") }, - - { NULL, 0, NULL, 0, N_("Output options:") }, - { NULL, 'F', NULL, 0, N_("Print size and permission flags for loadable segments") }, - { "totals", 't', NULL, 0, N_("Display the total sizes (bsd only)") }, - { NULL, 0, NULL, 0, NULL } -}; - -/* Short description of program. */ -static const char doc[] = N_("\ -List section sizes of FILEs (a.out by default)."); - -/* Strings for arguments in help texts. */ -static const char args_doc[] = N_("[FILE...]"); - -/* Prototype for option handler. */ -static error_t parse_opt (int key, char *arg, struct argp_state *state); - -/* Function to print some extra text in the help message. */ -static char *more_help (int key, const char *text, void *input); - -/* Data structure to communicate with argp functions. */ -static struct argp argp = -{ - options, parse_opt, args_doc, doc, NULL, more_help -}; - - -/* Print symbols in file named FNAME. */ -static int process_file (const char *fname); - -/* Handle content of archive. */ -static int handle_ar (int fd, Elf *elf, const char *prefix, const char *fname); - -/* Handle ELF file. */ -static void handle_elf (Elf *elf, const char *fullname, const char *fname); - -/* Show total size. */ -static void show_bsd_totals (void); - -#define INTERNAL_ERROR(fname) \ - error (EXIT_FAILURE, 0, gettext ("%s: INTERNAL ERROR %d (%s-%s): %s"), \ - fname, __LINE__, VERSION, __DATE__, elf_errmsg (-1)) - - -/* User-selectable options. */ - -/* The selected output format. */ -static enum -{ - format_bsd = 0, - format_sysv, - format_sysv_one_line, - format_segments -} format; - -/* Radix for printed numbers. */ -static enum -{ - radix_decimal = 0, - radix_hex, - radix_octal -} radix; - - -/* Mapping of radix and binary class to length. */ -static const int length_map[2][3] = -{ - [ELFCLASS32 - 1] = - { - [radix_hex] = 8, - [radix_decimal] = 10, - [radix_octal] = 11 - }, - [ELFCLASS64 - 1] = - { - [radix_hex] = 16, - [radix_decimal] = 20, - [radix_octal] = 22 - } -}; - -/* True if total sizes should be printed. */ -static bool totals; -/* To print the total sizes in a reasonable format remember the higest - "class" of ELF binaries processed. */ -static int totals_class; - - -int -main (int argc, char *argv[]) -{ - int remaining; - int result = 0; - - /* Make memory leak detection possible. */ - mtrace (); - - /* We use no threads here which can interfere with handling a stream. */ - __fsetlocking (stdin, FSETLOCKING_BYCALLER); - __fsetlocking (stdout, FSETLOCKING_BYCALLER); - __fsetlocking (stderr, FSETLOCKING_BYCALLER); - - /* Set locale. */ - setlocale (LC_ALL, ""); - - /* Make sure the message catalog can be found. */ - bindtextdomain (PACKAGE, LOCALEDIR); - - /* Initialize the message catalog. */ - textdomain (PACKAGE); - - /* Parse and process arguments. */ - argp_parse (&argp, argc, argv, 0, &remaining, NULL); - - - /* Tell the library which version we are expecting. */ - elf_version (EV_CURRENT); - - if (remaining == argc) - /* The user didn't specify a name so we use a.out. */ - result = process_file ("a.out"); - else - /* Process all the remaining files. */ - do - result |= process_file (argv[remaining]); - while (++remaining < argc); - - /* Print the total sizes but only if the output format is BSD and at - least one file has been correctly read (i.e., we recognized the - class). */ - if (totals && format == format_bsd && totals_class != 0) - show_bsd_totals (); - - return result; -} - - -/* Print the version information. */ -static void -print_version (FILE *stream, struct argp_state *state) -{ - fprintf (stream, "size (%s) %s\n", PACKAGE_NAME, VERSION); - fprintf (stream, gettext ("\ -Copyright (C) %s Red Hat, Inc.\n\ -This is free software; see the source for copying conditions. There is NO\n\ -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ -"), "2004"); - fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper"); -} - - -/* Handle program arguments. */ -static error_t -parse_opt (int key, char *arg, struct argp_state *state) -{ - switch (key) - { - case 'd': - radix = radix_decimal; - break; - - case 'f': - format = format_sysv_one_line; - break; - - case 'o': - radix = radix_octal; - break; - - case 'x': - radix = radix_hex; - break; - - case 'A': - format = format_sysv; - break; - - case 'B': - format = format_bsd; - break; - - case 'F': - format = format_segments; - break; - - case OPT_FORMAT: - if (strcmp (arg, "bsd") == 0 || strcmp (arg, "berkeley") == 0) - format = format_bsd; - else if (strcmp (arg, "sysv") == 0) - format = format_sysv; - else - error (EXIT_FAILURE, 0, gettext ("Invalid format: %s"), arg); - break; - - case OPT_RADIX: - if (strcmp (arg, "x") == 0 || strcmp (arg, "16") == 0) - radix = radix_hex; - else if (strcmp (arg, "d") == 0 || strcmp (arg, "10") == 0) - radix = radix_decimal; - else if (strcmp (arg, "o") == 0 || strcmp (arg, "8") == 0) - radix = radix_octal; - else - error (EXIT_FAILURE, 0, gettext ("Invalid radix: %s"), arg); - break; - - case 't': - totals = true; - break; - - default: - return ARGP_ERR_UNKNOWN; - } - return 0; -} - - -static char * -more_help (int key, const char *text, void *input) -{ - char *buf; - - switch (key) - { - case ARGP_KEY_HELP_EXTRA: - /* We print some extra information. */ - if (asprintf (&buf, gettext ("Please report bugs to %s.\n"), - PACKAGE_BUGREPORT) < 0) - buf = NULL; - return buf; - - default: - break; - } - return (char *) text; -} - - -static int -process_file (const char *fname) -{ - /* Open the file and determine the type. */ - int fd; - Elf *elf; - - /* Open the file. */ - fd = open (fname, O_RDONLY); - if (fd == -1) - { - error (0, errno, fname); - return 1; - } - - /* Now get the ELF descriptor. */ - elf = elf_begin (fd, ELF_C_READ_MMAP, NULL); - if (elf != NULL) - { - if (elf_kind (elf) == ELF_K_ELF) - { - handle_elf (elf, NULL, fname); - - if (elf_end (elf) != 0) - INTERNAL_ERROR (fname); - - if (close (fd) != 0) - error (EXIT_FAILURE, errno, gettext ("while close `%s'"), fname); - - return 0; - } - else - return handle_ar (fd, elf, NULL, fname); - - /* We cannot handle this type. Close the descriptor anyway. */ - if (elf_end (elf) != 0) - INTERNAL_ERROR (fname); - } - - error (0, 0, gettext ("%s: file format not recognized"), fname); - - return 1; -} - - -/* Print the BSD-style header. This is done exactly once. */ -static void -print_header (Elf *elf) -{ - static int done; - - if (! done) - { - int ddigits = length_map[gelf_getclass (elf) - 1][radix_decimal]; - int xdigits = length_map[gelf_getclass (elf) - 1][radix_hex]; - - printf ("%*s %*s %*s %*s %*s %s\n", - ddigits - 2, sgettext ("bsd|text"), - ddigits - 2, sgettext ("bsd|data"), - ddigits - 2, sgettext ("bsd|bss"), - ddigits - 2, sgettext ("bsd|dec"), - xdigits - 2, sgettext ("bsd|hex"), - sgettext ("bsd|filename")); - - done = 1; - } -} - - -static int -handle_ar (int fd, Elf *elf, const char *prefix, const char *fname) -{ - Elf *subelf; - Elf_Cmd cmd = ELF_C_READ_MMAP; - size_t prefix_len = prefix == NULL ? 0 : strlen (prefix); - size_t fname_len = strlen (fname) + 1; - char new_prefix[prefix_len + 1 + fname_len]; - int result = 0; - char *cp = new_prefix; - - /* Create the full name of the file. */ - if (prefix != NULL) - { - cp = mempcpy (cp, prefix, prefix_len); - *cp++ = ':'; - } - memcpy (cp, fname, fname_len); - - /* Process all the files contained in the archive. */ - while ((subelf = elf_begin (fd, cmd, elf)) != NULL) - { - /* The the header for this element. */ - Elf_Arhdr *arhdr = elf_getarhdr (subelf); - - if (elf_kind (subelf) == ELF_K_ELF) - handle_elf (subelf, new_prefix, arhdr->ar_name); - else if (elf_kind (subelf) == ELF_K_AR) - result |= handle_ar (fd, subelf, new_prefix, arhdr->ar_name); - /* else signal error??? */ - - /* Get next archive element. */ - cmd = elf_next (subelf); - if (elf_end (subelf) != 0) - INTERNAL_ERROR (fname); - } - - if (elf_end (elf) != 0) - INTERNAL_ERROR (fname); - - if (close (fd) != 0) - error (EXIT_FAILURE, errno, gettext ("while closing `%s'"), fname); - - return result; -} - - -/* Show sizes in SysV format. */ -static void -show_sysv (Elf *elf, const char *prefix, const char *fname, - const char *fullname) -{ - size_t shstrndx; - Elf_Scn *scn = NULL; - GElf_Shdr shdr_mem; - int maxlen = 10; - int digits = length_map[gelf_getclass (elf) - 1][radix]; - const char *fmtstr; - GElf_Off total = 0; - - /* Get the section header string table index. */ - if (elf_getshstrndx (elf, &shstrndx) < 0) - error (EXIT_FAILURE, 0, - gettext ("cannot get section header string table index")); - - /* First round over the sections: determine the longest section name. */ - while ((scn = elf_nextscn (elf, scn)) != NULL) - { - GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); - - if (shdr == NULL) - INTERNAL_ERROR (fullname); - - /* Ignore all sections which are not used at runtime. */ - if ((shdr->sh_flags & SHF_ALLOC) != 0) - maxlen = MAX (maxlen, - strlen (elf_strptr (elf, shstrndx, shdr->sh_name))); - } - - fputs_unlocked (fname, stdout); - if (prefix != NULL) - printf (gettext (" (ex %s)"), prefix); - printf (":\n%-*s %*s %*s\n", - maxlen, sgettext ("sysv|section"), - digits - 2, sgettext ("sysv|size"), - digits, sgettext ("sysv|addr")); - - if (radix == radix_hex) - fmtstr = "%-*s %*" PRIx64 " %*" PRIx64 "\n"; - else if (radix == radix_decimal) - fmtstr = "%-*s %*" PRId64 " %*" PRId64 "\n"; - else - fmtstr = "%-*s %*" PRIo64 " %*" PRIo64 "\n"; - - /* Iterate over all sections. */ - while ((scn = elf_nextscn (elf, scn)) != NULL) - { - GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); - - /* Ignore all sections which are not used at runtime. */ - if ((shdr->sh_flags & SHF_ALLOC) != 0) - { - printf (fmtstr, - maxlen, elf_strptr (elf, shstrndx, shdr->sh_name), - digits - 2, shdr->sh_size, - digits, shdr->sh_addr); - - total += shdr->sh_size; - } - } - - if (radix == radix_hex) - printf ("%-*s %*" PRIx64 "\n\n\n", maxlen, sgettext ("sysv|Total"), - digits - 2, total); - else if (radix == radix_decimal) - printf ("%-*s %*" PRId64 "\n\n\n", maxlen, sgettext ("sysv|Total"), - digits - 2, total); - else - printf ("%-*s %*" PRIo64 "\n\n\n", maxlen, sgettext ("sysv|Total"), - digits - 2, total); -} - - -/* Show sizes in SysV format in one line. */ -static void -show_sysv_one_line (Elf *elf, const char *prefix, const char *fname, - const char *fullname) -{ - size_t shstrndx; - Elf_Scn *scn = NULL; - GElf_Shdr shdr_mem; - const char *fmtstr; - GElf_Off total = 0; - int first = 1; - - /* Get the section header string table index. */ - if (elf_getshstrndx (elf, &shstrndx) < 0) - error (EXIT_FAILURE, 0, - gettext ("cannot get section header string table index")); - - if (radix == radix_hex) - fmtstr = "%" PRIx64 "(%s)"; - else if (radix == radix_decimal) - fmtstr = "%" PRId64 "(%s)"; - else - fmtstr = "%" PRIo64 "(%s)"; - - /* Iterate over all sections. */ - while ((scn = elf_nextscn (elf, scn)) != NULL) - { - GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); - - /* Ignore all sections which are not used at runtime. */ - if ((shdr->sh_flags & SHF_ALLOC) == 0) - continue; - - if (! first) - fputs_unlocked (" + ", stdout); - first = 0; - - printf (fmtstr, shdr->sh_size, - elf_strptr (elf, shstrndx, shdr->sh_name)); - - total += shdr->sh_size; - } - - if (radix == radix_hex) - printf (" = %#" PRIx64 "\n", total); - else if (radix == radix_decimal) - printf (" = %" PRId64 "\n", total); - else - printf (" = %" PRIo64 "\n", total); -} - - -/* Variables to add up the sizes of all files. */ -static uintmax_t total_textsize; -static uintmax_t total_datasize; -static uintmax_t total_bsssize; - - -/* Show sizes in BSD format. */ -static void -show_bsd (Elf *elf, const char *prefix, const char *fname, - const char *fullname) -{ - Elf_Scn *scn = NULL; - GElf_Shdr shdr_mem; - GElf_Off textsize = 0; - GElf_Off datasize = 0; - GElf_Off bsssize = 0; - int ddigits = length_map[gelf_getclass (elf) - 1][radix_decimal]; - int xdigits = length_map[gelf_getclass (elf) - 1][radix_hex]; - - /* Iterate over all sections. */ - while ((scn = elf_nextscn (elf, scn)) != NULL) - { - GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); - - if (shdr == NULL) - INTERNAL_ERROR (fullname); - - /* Ignore all sections which are not marked as loaded. */ - if ((shdr->sh_flags & SHF_ALLOC) == 0) - continue; - - if ((shdr->sh_flags & SHF_WRITE) == 0) - textsize += shdr->sh_size; - else if (shdr->sh_type == SHT_NOBITS) - bsssize += shdr->sh_size; - else - datasize += shdr->sh_size; - } - - printf ("%*" PRId64 " %*" PRId64 " %*" PRId64 " %*" PRId64 " %*" - PRIx64 " %s", - ddigits - 2, textsize, - ddigits - 2, datasize, - ddigits - 2, bsssize, - ddigits - 2, textsize + datasize + bsssize, - xdigits - 2, textsize + datasize + bsssize, - fname); - if (prefix != NULL) - printf (gettext (" (ex %s)"), prefix); - fputs_unlocked ("\n", stdout); - - total_textsize += textsize; - total_datasize += datasize; - total_bsssize += bsssize; - - totals_class = MAX (totals_class, gelf_getclass (elf)); -} - - -/* Show total size. */ -static void -show_bsd_totals (void) -{ - int ddigits = length_map[totals_class - 1][radix_decimal]; - int xdigits = length_map[totals_class - 1][radix_hex]; - - printf ("%*" PRIuMAX " %*" PRIuMAX " %*" PRIuMAX " %*" PRIuMAX " %*" - PRIxMAX " %s", - ddigits - 2, total_textsize, - ddigits - 2, total_datasize, - ddigits - 2, total_bsssize, - ddigits - 2, total_textsize + total_datasize + total_bsssize, - xdigits - 2, total_textsize + total_datasize + total_bsssize, - gettext ("(TOTALS)\n")); -} - - -/* Show size and permission of loadable segments. */ -static void -show_segments (Elf *elf, const char *prefix, const char *fname, - const char *fullname) -{ - GElf_Ehdr ehdr_mem; - GElf_Ehdr *ehdr; - size_t cnt; - GElf_Off total = 0; - int first = 1; - - ehdr = gelf_getehdr (elf, &ehdr_mem); - if (ehdr == NULL) - INTERNAL_ERROR (fullname); - - for (cnt = 0; cnt < ehdr->e_phnum; ++cnt) - { - GElf_Phdr phdr_mem; - GElf_Phdr *phdr; - - phdr = gelf_getphdr (elf, cnt, &phdr_mem); - if (phdr == NULL) - INTERNAL_ERROR (fullname); - - if (phdr->p_type != PT_LOAD) - /* Only load segments. */ - continue; - - if (! first) - fputs_unlocked (" + ", stdout); - first = 0; - - printf (radix == radix_hex ? "%" PRIx64 "(%c%c%c)" - : (radix == radix_decimal ? "%" PRId64 "(%c%c%c)" - : "%" PRIo64 "(%c%c%c)"), - phdr->p_memsz, - (phdr->p_flags & PF_R) == 0 ? '-' : 'r', - (phdr->p_flags & PF_W) == 0 ? '-' : 'w', - (phdr->p_flags & PF_X) == 0 ? '-' : 'x'); - - total += phdr->p_memsz; - } - - if (radix == radix_hex) - printf (" = %#" PRIx64 "\n", total); - else if (radix == radix_decimal) - printf (" = %" PRId64 "\n", total); - else - printf (" = %" PRIo64 "\n", total); -} - - -static void -handle_elf (Elf *elf, const char *prefix, const char *fname) -{ - size_t prefix_len = prefix == NULL ? 0 : strlen (prefix); - size_t fname_len = strlen (fname) + 1; - char fullname[prefix_len + 1 + fname_len]; - char *cp = fullname; - - /* Create the full name of the file. */ - if (prefix != NULL) - { - cp = mempcpy (cp, prefix, prefix_len); - *cp++ = ':'; - } - memcpy (cp, fname, fname_len); - - if (format == format_sysv) - show_sysv (elf, prefix, fname, fullname); - else if (format == format_sysv_one_line) - show_sysv_one_line (elf, prefix, fname, fullname); - else if (format == format_segments) - show_segments (elf, prefix, fname, fullname); - else - { - print_header (elf); - - show_bsd (elf, prefix, fname, fullname); - } -} diff --git a/src/strip.c b/src/strip.c deleted file mode 100644 index e5c4289c..00000000 --- a/src/strip.c +++ /dev/null @@ -1,1769 +0,0 @@ -/* Discard section not used at runtime from object files. - Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <argp.h> -#include <assert.h> -#include <byteswap.h> -#include <endian.h> -#include <error.h> -#include <fcntl.h> -#include <gelf.h> -#include <libelf.h> -#include <libintl.h> -#include <locale.h> -#include <mcheck.h> -#include <stdbool.h> -#include <stdio.h> -#include <stdio_ext.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <sys/param.h> -#include <sys/time.h> - -#include <elf-knowledge.h> -#include <libebl.h> -#include <system.h> - - -/* Name and version of program. */ -static void print_version (FILE *stream, struct argp_state *state); -void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version; - - -/* Values for the parameters which have no short form. */ -#define OPT_REMOVE_COMMENT 0x100 -#define OPT_PERMISSIVE 0x101 - - -/* Definitions of arguments for argp functions. */ -static const struct argp_option options[] = -{ - { NULL, 0, NULL, 0, N_("Output selection:") }, - { NULL, 'o', "FILE", 0, N_("Place stripped output into FILE") }, - { NULL, 'f', "FILE", 0, N_("Extract the removed sections into FILE") }, - - { NULL, 0, NULL, 0, N_("Output options:") }, - { "strip-debug", 'g', NULL, 0, N_("Remove all debugging symbols") }, - { "preserve-dates", 'p', NULL, 0, - N_("Copy modified/access timestamps to the output") }, - { "remove-comment", OPT_REMOVE_COMMENT, NULL, 0, - N_("Remove .comment section") }, - { "permissive", OPT_PERMISSIVE, NULL, 0, - N_("Relax a few rules to handle slightly broken ELF files") }, - { NULL, 0, NULL, 0, NULL } -}; - -/* Short description of program. */ -static const char doc[] = N_("Discard symbols from object files."); - -/* Strings for arguments in help texts. */ -static const char args_doc[] = N_("[FILE...]"); - -/* Prototype for option handler. */ -static error_t parse_opt (int key, char *arg, struct argp_state *state); - -/* Function to print some extra text in the help message. */ -static char *more_help (int key, const char *text, void *input); - -/* Data structure to communicate with argp functions. */ -static struct argp argp = -{ - options, parse_opt, args_doc, doc, NULL, more_help -}; - - -/* Print symbols in file named FNAME. */ -static int process_file (const char *fname); - -/* Handle one ELF file. */ -static int handle_elf (int fd, Elf *elf, const char *prefix, - const char *fname, mode_t mode, struct timeval tvp[2]); - -/* Handle all files contained in the archive. */ -static int handle_ar (int fd, Elf *elf, const char *prefix, const char *fname, - struct timeval tvp[2]); - -#define INTERNAL_ERROR(fname) \ - error (EXIT_FAILURE, 0, gettext ("%s: INTERNAL ERROR %d (%s-%s): %s"), \ - fname, __LINE__, VERSION, __DATE__, elf_errmsg (-1)) - - -/* Name of the output file. */ -static const char *output_fname; - -/* Name of the debug output file. */ -static const char *debug_fname; - -/* If true output files shall have same date as the input file. */ -static bool preserve_dates; - -/* If true .comment sections will be removed. */ -static bool remove_comment; - -/* If true remove all debug sections. */ -static bool remove_debug; - -/* If true relax some ELF rules for input files. */ -static bool permissive; - - -int -main (int argc, char *argv[]) -{ - int remaining; - int result = 0; - - /* Make memory leak detection possible. */ - mtrace (); - - /* We use no threads here which can interfere with handling a stream. */ - __fsetlocking (stdin, FSETLOCKING_BYCALLER); - __fsetlocking (stdout, FSETLOCKING_BYCALLER); - __fsetlocking (stderr, FSETLOCKING_BYCALLER); - - /* Set locale. */ - setlocale (LC_ALL, ""); - - /* Make sure the message catalog can be found. */ - bindtextdomain (PACKAGE, LOCALEDIR); - - /* Initialize the message catalog. */ - textdomain (PACKAGE); - - /* Parse and process arguments. */ - argp_parse (&argp, argc, argv, 0, &remaining, NULL); - - /* Tell the library which version we are expecting. */ - elf_version (EV_CURRENT); - - if (remaining == argc) - /* The user didn't specify a name so we use a.out. */ - result = process_file ("a.out"); - else - { - /* If we have seen the `-o' or '-f' option there must be exactly one - input file. */ - if ((output_fname != NULL || debug_fname != NULL) - && remaining + 1 < argc) - error (EXIT_FAILURE, 0, gettext ("\ -Only one input file allowed together with '-o' and '-f'")); - - /* Process all the remaining files. */ - do - result |= process_file (argv[remaining]); - while (++remaining < argc); - } - - return result; -} - - -/* Print the version information. */ -static void -print_version (FILE *stream, struct argp_state *state) -{ - fprintf (stream, "strip (%s) %s\n", PACKAGE_NAME, VERSION); - fprintf (stream, gettext ("\ -Copyright (C) %s Red Hat, Inc.\n\ -This is free software; see the source for copying conditions. There is NO\n\ -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ -"), "2004"); - fprintf (stream, gettext ("Written by %s.\n"), "Ulrich Drepper"); -} - - -/* Handle program arguments. */ -static error_t -parse_opt (int key, char *arg, struct argp_state *state) -{ - switch (key) - { - case 'f': - debug_fname = arg; - break; - - case 'o': - output_fname = arg; - break; - - case 'p': - preserve_dates = true; - break; - - case OPT_REMOVE_COMMENT: - remove_comment = true; - break; - - case 'g': - remove_debug = true; - break; - - case OPT_PERMISSIVE: - permissive = true; - break; - - default: - return ARGP_ERR_UNKNOWN; - } - return 0; -} - - -static char * -more_help (int key, const char *text, void *input) -{ - char *buf; - - switch (key) - { - case ARGP_KEY_HELP_EXTRA: - /* We print some extra information. */ - if (asprintf (&buf, gettext ("Please report bugs to %s.\n"), - PACKAGE_BUGREPORT) < 0) - buf = NULL; - return buf; - - default: - break; - } - return (char *) text; -} - - -static int -process_file (const char *fname) -{ - /* If we have to preserve the modify and access timestamps get them - now. We cannot use fstat() after opening the file since the open - would change the access time. */ - struct stat64 pre_st; - struct timeval tv[2]; - again: - if (preserve_dates) - { - if (stat64 (fname, &pre_st) != 0) - { - error (0, errno, gettext ("cannot stat input file \"%s\""), fname); - return 1; - } - - /* If we have to preserve the timestamp, we need it in the - format utimes() understands. */ - TIMESPEC_TO_TIMEVAL (&tv[0], &pre_st.st_atim); - TIMESPEC_TO_TIMEVAL (&tv[1], &pre_st.st_mtim); - } - - /* Open the file. */ - int fd = open (fname, O_RDWR); - if (fd == -1) - { - error (0, errno, gettext ("while opening \"%s\""), fname); - return 1; - } - - /* We always use fstat() even if we called stat() before. This is - done to make sure the information returned by stat() is for the - same file. */ - struct stat64 st; - if (fstat64 (fd, &st) != 0) - { - error (0, errno, gettext ("cannot stat input file \"%s\""), fname); - return 1; - } - /* Paranoid mode on. */ - if (preserve_dates - && (st.st_ino != pre_st.st_ino || st.st_dev != pre_st.st_dev)) - { - /* We detected a race. Try again. */ - close (fd); - goto again; - } - - /* Now get the ELF descriptor. */ - Elf *elf = elf_begin (fd, ELF_C_RDWR, NULL); - int result; - switch (elf_kind (elf)) - { - case ELF_K_ELF: - result = handle_elf (fd, elf, NULL, fname, st.st_mode & ACCESSPERMS, - preserve_dates ? tv : NULL); - break; - - case ELF_K_AR: - /* It is not possible to strip the content of an archive direct - the output to a specific file. */ - if (unlikely (output_fname != NULL)) - { - error (0, 0, gettext ("%s: cannot use -o when stripping archive"), - fname); - result = 1; - } - else - result = handle_ar (fd, elf, NULL, fname, preserve_dates ? tv : NULL); - break; - - default: - error (0, 0, gettext ("%s: File format not recognized"), fname); - result = 1; - break; - } - - if (unlikely (elf_end (elf) != 0)) - INTERNAL_ERROR (fname); - - close (fd); - - return result; -} - - -/* Maximum size of array allocated on stack. */ -#define MAX_STACK_ALLOC (400 * 1024) - - -static uint32_t -crc32_file (int fd, uint32_t *resp) -{ - unsigned char buffer[1024 * 8]; - uint32_t crc = 0; - ssize_t count; - - /* We have to rewind. */ - if (lseek (fd, 0, SEEK_SET) < 0) - return 1; - - while ((count = TEMP_FAILURE_RETRY (read (fd, buffer, sizeof (buffer)))) > 0) - crc = crc32 (crc, buffer, count); - - *resp = crc; - - return count != 0; -} - - -static int -handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, - mode_t mode, struct timeval tvp[2]) -{ - size_t prefix_len = prefix == NULL ? 0 : strlen (prefix); - size_t fname_len = strlen (fname) + 1; - char *fullname = alloca (prefix_len + 1 + fname_len); - char *cp = fullname; - Elf *newelf; - Elf *debugelf = NULL; - char *tmp_debug_fname = NULL; - int result = 0; - GElf_Ehdr ehdr_mem; - GElf_Ehdr *ehdr; - size_t shstrndx; - size_t shnum; - struct shdr_info - { - Elf_Scn *scn; - GElf_Shdr shdr; - Elf_Data *data; - const char *name; - Elf32_Word idx; /* Index in new file. */ - Elf32_Word old_sh_link; /* Original value of shdr.sh_link. */ - Elf32_Word symtab_idx; - Elf32_Word version_idx; - Elf32_Word group_idx; - Elf32_Word group_cnt; - Elf_Scn *newscn; - struct Ebl_Strent *se; - Elf32_Word *newsymidx; - } *shdr_info = NULL; - Elf_Scn *scn; - size_t cnt; - size_t idx; - bool changes; - GElf_Ehdr newehdr_mem; - GElf_Ehdr *newehdr; - GElf_Ehdr debugehdr_mem; - GElf_Ehdr *debugehdr; - struct Ebl_Strtab *shst = NULL; - uint32_t debug_crc; - bool any_symtab_changes = false; - Elf_Data *shstrtab_data = NULL; - - /* Create the full name of the file. */ - if (prefix != NULL) - { - cp = mempcpy (cp, prefix, prefix_len); - *cp++ = ':'; - } - memcpy (cp, fname, fname_len); - - /* If we are not replacing the input file open a new file here. */ - if (output_fname != NULL) - { - fd = open (output_fname, O_RDWR | O_CREAT, mode); - if (unlikely (fd == -1)) - { - error (0, errno, gettext ("cannot open `%s'"), output_fname); - return 1; - } - } - - int debug_fd = -1; - - /* Get the EBL handling. The -g option is currently the only reason - we need EBL so dont open the backend unless necessary. */ - Ebl *ebl = NULL; - if (remove_debug) - { - ebl = ebl_openbackend (elf); - if (ebl == NULL) - { - error (0, errno, gettext ("cannot open EBL backend")); - result = 1; - goto fail; - } - } - - /* Open the additional file the debug information will be stored in. */ - if (debug_fname != NULL) - { - /* Create a temporary file name. We do not want to overwrite - the debug file if the file would not contain any - information. */ - size_t debug_fname_len = strlen (debug_fname); - tmp_debug_fname = (char *) alloca (debug_fname_len + sizeof (".XXXXXX")); - strcpy (mempcpy (tmp_debug_fname, debug_fname, debug_fname_len), - ".XXXXXX"); - - debug_fd = mkstemp (tmp_debug_fname); - if (unlikely (debug_fd == -1)) - { - error (0, errno, gettext ("cannot open `%s'"), debug_fname); - result = 1; - goto fail; - } - } - - /* Get the information from the old file. */ - ehdr = gelf_getehdr (elf, &ehdr_mem); - if (ehdr == NULL) - INTERNAL_ERROR (fname); - - /* Get the section header string table index. */ - if (unlikely (elf_getshstrndx (elf, &shstrndx) < 0)) - error (EXIT_FAILURE, 0, - gettext ("cannot get section header string table index")); - - /* We now create a new ELF descriptor for the same file. We - construct it almost exactly in the same way with some information - dropped. */ - if (output_fname != NULL) - newelf = elf_begin (fd, ELF_C_WRITE_MMAP, NULL); - else - newelf = elf_clone (elf, ELF_C_EMPTY); - - if (unlikely (gelf_newehdr (newelf, gelf_getclass (elf)) == 0) - || (ehdr->e_type != ET_REL - && unlikely (gelf_newphdr (newelf, ehdr->e_phnum) == 0))) - { - error (0, 0, gettext ("cannot create new file `%s': %s"), - output_fname, elf_errmsg (-1)); - goto fail; - } - - /* Copy over the old program header if needed. */ - if (ehdr->e_type != ET_REL) - for (cnt = 0; cnt < ehdr->e_phnum; ++cnt) - { - GElf_Phdr phdr_mem; - GElf_Phdr *phdr; - - phdr = gelf_getphdr (elf, cnt, &phdr_mem); - if (phdr == NULL - || unlikely (gelf_update_phdr (newelf, cnt, phdr) == 0)) - INTERNAL_ERROR (fname); - } - - if (debug_fname != NULL) - { - /* Also create an ELF descriptor for the debug file */ - debugelf = elf_begin (debug_fd, ELF_C_WRITE_MMAP, NULL); - if (unlikely (gelf_newehdr (debugelf, gelf_getclass (elf)) == 0) - || (ehdr->e_type != ET_REL - && unlikely (gelf_newphdr (debugelf, ehdr->e_phnum) == 0))) - { - error (0, 0, gettext ("cannot create new file `%s': %s"), - debug_fname, elf_errmsg (-1)); - goto fail_close; - } - - /* Copy over the old program header if needed. */ - if (ehdr->e_type != ET_REL) - for (cnt = 0; cnt < ehdr->e_phnum; ++cnt) - { - GElf_Phdr phdr_mem; - GElf_Phdr *phdr; - - phdr = gelf_getphdr (elf, cnt, &phdr_mem); - if (phdr == NULL - || unlikely (gelf_update_phdr (debugelf, cnt, phdr) == 0)) - INTERNAL_ERROR (fname); - } - } - - /* Number of sections. */ - if (unlikely (elf_getshnum (elf, &shnum) < 0)) - { - error (0, 0, gettext ("cannot determine number of sections: %s"), - elf_errmsg (-1)); - goto fail_close; - } - - /* Storage for section information. We leave room for two more - entries since we unconditionally create a section header string - table. Maybe some weird tool created an ELF file without one. - The other one is used for the debug link section. */ - if ((shnum + 2) * sizeof (struct shdr_info) > MAX_STACK_ALLOC) - shdr_info = (struct shdr_info *) xcalloc (shnum + 2, - sizeof (struct shdr_info)); - else - { - shdr_info = (struct shdr_info *) alloca ((shnum + 2) - * sizeof (struct shdr_info)); - memset (shdr_info, '\0', (shnum + 2) * sizeof (struct shdr_info)); - } - - /* Prepare section information data structure. */ - scn = NULL; - cnt = 1; - while ((scn = elf_nextscn (elf, scn)) != NULL) - { - /* This should always be true (i.e., there should not be any - holes in the numbering). */ - assert (elf_ndxscn (scn) == cnt); - - shdr_info[cnt].scn = scn; - - /* Get the header. */ - if (gelf_getshdr (scn, &shdr_info[cnt].shdr) == NULL) - INTERNAL_ERROR (fname); - - /* Get the name of the section. */ - shdr_info[cnt].name = elf_strptr (elf, shstrndx, - shdr_info[cnt].shdr.sh_name); - if (shdr_info[cnt].name == NULL) - { - error (0, 0, gettext ("illformed file `%s'"), fname); - goto fail_close; - } - - /* Mark them as present but not yet investigated. */ - shdr_info[cnt].idx = 1; - - /* Remember the shdr.sh_link value. */ - shdr_info[cnt].old_sh_link = shdr_info[cnt].shdr.sh_link; - - /* Sections in files other than relocatable object files which - are not loaded can be freely moved by us. In relocatable - object files everything can be moved. */ - if (ehdr->e_type == ET_REL - || (shdr_info[cnt].shdr.sh_flags & SHF_ALLOC) == 0) - shdr_info[cnt].shdr.sh_offset = 0; - - /* If this is an extended section index table store an - appropriate reference. */ - if (unlikely (shdr_info[cnt].shdr.sh_type == SHT_SYMTAB_SHNDX)) - { - assert (shdr_info[shdr_info[cnt].shdr.sh_link].symtab_idx == 0); - shdr_info[shdr_info[cnt].shdr.sh_link].symtab_idx = cnt; - } - else if (unlikely (shdr_info[cnt].shdr.sh_type == SHT_GROUP)) - { - Elf32_Word *grpref; - size_t inner; - - /* Cross-reference the sections contained in the section - group. */ - shdr_info[cnt].data = elf_getdata (shdr_info[cnt].scn, NULL); - if (shdr_info[cnt].data == NULL) - INTERNAL_ERROR (fname); - - /* XXX Fix for unaligned access. */ - grpref = (Elf32_Word *) shdr_info[cnt].data->d_buf; - for (inner = 1; - inner < shdr_info[cnt].data->d_size / sizeof (Elf32_Word); - ++inner) - shdr_info[grpref[inner]].group_idx = cnt; - - if (inner == 1 || (inner == 2 && (grpref[0] & GRP_COMDAT) == 0)) - /* If the section group contains only one element and this - is n COMDAT section we can drop it right away. */ - shdr_info[cnt].idx = 0; - else - shdr_info[cnt].group_cnt = inner - 1; - } - else if (unlikely (shdr_info[cnt].shdr.sh_type == SHT_GNU_versym)) - { - assert (shdr_info[shdr_info[cnt].shdr.sh_link].version_idx == 0); - shdr_info[shdr_info[cnt].shdr.sh_link].version_idx = cnt; - } - - /* If this section is part of a group make sure it is not - discarded right away. */ - if ((shdr_info[cnt].shdr.sh_flags & SHF_GROUP) != 0) - { - assert (shdr_info[cnt].group_idx != 0); - - if (shdr_info[shdr_info[cnt].group_idx].idx == 0) - { - /* The section group section will be removed. */ - shdr_info[cnt].group_idx = 0; - shdr_info[cnt].shdr.sh_flags &= ~SHF_GROUP; - } - } - - /* Increment the counter. */ - ++cnt; - } - - /* Now determine which sections can go away. The general rule is that - all sections which are not used at runtime are stripped out. But - there are a few exceptions: - - - special sections named ".comment" and ".note" are kept - - OS or architecture specific sections are kept since we might not - know how to handle them - - if a section is referred to from a section which is not removed - in the sh_link or sh_info element it cannot be removed either - */ - for (cnt = 1; cnt < shnum; ++cnt) - /* Check whether the section can be removed. */ - if (SECTION_STRIP_P (ebl, elf, ehdr, &shdr_info[cnt].shdr, - shdr_info[cnt].name, remove_comment, remove_debug)) - { - /* For now assume this section will be removed. */ - shdr_info[cnt].idx = 0; - - idx = shdr_info[cnt].group_idx; - while (idx != 0) - { - /* If the references section group is a normal section - group and has one element remaining, or if it is an - empty COMDAT section group it is removed. */ - bool is_comdat; - - /* The section group data is already loaded. */ - assert (shdr_info[idx].data != NULL); - - is_comdat = (((Elf32_Word *) shdr_info[idx].data->d_buf)[0] - & GRP_COMDAT) != 0; - - --shdr_info[idx].group_cnt; - if ((!is_comdat && shdr_info[idx].group_cnt == 1) - || (is_comdat && shdr_info[idx].group_cnt == 0)) - { - shdr_info[idx].idx = 0; - /* Continue recursively. */ - idx = shdr_info[idx].group_idx; - } - else - break; - } - } - - /* Mark the SHT_NULL section as handled. */ - shdr_info[0].idx = 2; - - - /* Handle exceptions: section groups and cross-references. We might - have to repeat this a few times since the resetting of the flag - might propagate. */ - do - { - changes = false; - - for (cnt = 1; cnt < shnum; ++cnt) - { - if (shdr_info[cnt].idx == 0) - { - /* If a relocation section is marked as being removed make - sure the section it is relocating is removed, too. */ - if ((shdr_info[cnt].shdr.sh_type == SHT_REL - || shdr_info[cnt].shdr.sh_type == SHT_RELA) - && shdr_info[shdr_info[cnt].shdr.sh_info].idx != 0) - shdr_info[cnt].idx = 1; - } - - if (shdr_info[cnt].idx == 1) - { - /* The content of symbol tables we don't remove must not - reference any section which we do remove. Otherwise - we cannot remove the section. */ - if (shdr_info[cnt].shdr.sh_type == SHT_DYNSYM - || shdr_info[cnt].shdr.sh_type == SHT_SYMTAB) - { - Elf_Data *symdata; - Elf_Data *xndxdata; - size_t elsize; - - /* Make sure the data is loaded. */ - if (shdr_info[cnt].data == NULL) - { - shdr_info[cnt].data - = elf_getdata (shdr_info[cnt].scn, NULL); - if (shdr_info[cnt].data == NULL) - INTERNAL_ERROR (fname); - } - symdata = shdr_info[cnt].data; - - /* If there is an extended section index table load it - as well. */ - if (shdr_info[cnt].symtab_idx != 0 - && shdr_info[shdr_info[cnt].symtab_idx].data == NULL) - { - assert (shdr_info[cnt].shdr.sh_type == SHT_SYMTAB); - - shdr_info[shdr_info[cnt].symtab_idx].data - = elf_getdata (shdr_info[shdr_info[cnt].symtab_idx].scn, - NULL); - if (shdr_info[shdr_info[cnt].symtab_idx].data == NULL) - INTERNAL_ERROR (fname); - } - xndxdata = shdr_info[shdr_info[cnt].symtab_idx].data; - - /* Go through all symbols and make sure the section they - reference is not removed. */ - elsize = gelf_fsize (elf, ELF_T_SYM, 1, ehdr->e_version); - - for (size_t inner = 0; - inner < shdr_info[cnt].data->d_size / elsize; - ++inner) - { - GElf_Sym sym_mem; - Elf32_Word xndx; - GElf_Sym *sym; - size_t scnidx; - - sym = gelf_getsymshndx (symdata, xndxdata, inner, - &sym_mem, &xndx); - if (sym == NULL) - INTERNAL_ERROR (fname); - - scnidx = sym->st_shndx; - if (scnidx == SHN_UNDEF || scnidx >= shnum - || (scnidx >= SHN_LORESERVE - && scnidx <= SHN_HIRESERVE - && scnidx != SHN_XINDEX) - /* Don't count in the section symbols. */ - || GELF_ST_TYPE (sym->st_info) == STT_SECTION) - /* This is no section index, leave it alone. */ - continue; - else if (scnidx == SHN_XINDEX) - scnidx = xndx; - - if (shdr_info[scnidx].idx == 0) - { - /* Mark this section as used. */ - shdr_info[scnidx].idx = 1; - changes |= scnidx < cnt; - } - } - } - - /* Cross referencing happens: - - for the cases the ELF specification says. That are - + SHT_DYNAMIC in sh_link to string table - + SHT_HASH in sh_link to symbol table - + SHT_REL and SHT_RELA in sh_link to symbol table - + SHT_SYMTAB and SHT_DYNSYM in sh_link to string table - + SHT_GROUP in sh_link to symbol table - + SHT_SYMTAB_SHNDX in sh_link to symbol table - Other (OS or architecture-specific) sections might as - well use this field so we process it unconditionally. - - references inside section groups - - specially marked references in sh_info if the SHF_INFO_LINK - flag is set - */ - - if (shdr_info[shdr_info[cnt].shdr.sh_link].idx == 0) - { - shdr_info[shdr_info[cnt].shdr.sh_link].idx = 1; - changes |= shdr_info[cnt].shdr.sh_link < cnt; - } - - /* Handle references through sh_info. */ - if (SH_INFO_LINK_P (&shdr_info[cnt].shdr) - && shdr_info[shdr_info[cnt].shdr.sh_info].idx == 0) - { - shdr_info[shdr_info[cnt].shdr.sh_info].idx = 1; - changes |= shdr_info[cnt].shdr.sh_info < cnt; - } - - /* Mark the section as investigated. */ - shdr_info[cnt].idx = 2; - } - } - } - while (changes); - - /* Write out a copy of all the sections to the debug output file. - The ones that are not removed in the stripped file are SHT_NOBITS */ - if (debug_fname != NULL) - { - for (cnt = 1; cnt < shnum; ++cnt) - { - Elf_Data *debugdata; - GElf_Shdr debugshdr; - int discard_section; - - scn = elf_newscn (debugelf); - if (scn == NULL) - error (EXIT_FAILURE, 0, - gettext ("while generating output file: %s"), - elf_errmsg (-1)); - - discard_section = shdr_info[cnt].idx > 0 && cnt != ehdr->e_shstrndx; - - /* Set the section header in the new file. */ - debugshdr = shdr_info[cnt].shdr; - if (discard_section) - debugshdr.sh_type = SHT_NOBITS; - - if (unlikely (gelf_update_shdr (scn, &debugshdr)) == 0) - /* There cannot be any overflows. */ - INTERNAL_ERROR (fname); - - /* Get the data from the old file if necessary. */ - if (shdr_info[cnt].data == NULL) - { - shdr_info[cnt].data = elf_getdata (shdr_info[cnt].scn, NULL); - if (shdr_info[cnt].data == NULL) - INTERNAL_ERROR (fname); - } - - /* Set the data. This is done by copying from the old file. */ - debugdata = elf_newdata (scn); - if (debugdata == NULL) - INTERNAL_ERROR (fname); - - /* Copy the structure. */ - *debugdata = *shdr_info[cnt].data; - if (discard_section) - debugdata->d_buf = NULL; - } - - /* Finish the ELF header. Fill in the fields not handled by - libelf from the old file. */ - debugehdr = gelf_getehdr (debugelf, &debugehdr_mem); - if (debugehdr == NULL) - INTERNAL_ERROR (fname); - - memcpy (debugehdr->e_ident, ehdr->e_ident, EI_NIDENT); - debugehdr->e_type = ehdr->e_type; - debugehdr->e_machine = ehdr->e_machine; - debugehdr->e_version = ehdr->e_version; - debugehdr->e_entry = ehdr->e_entry; - debugehdr->e_flags = ehdr->e_flags; - debugehdr->e_shstrndx = ehdr->e_shstrndx; - - if (unlikely (gelf_update_ehdr (debugelf, debugehdr)) == 0) - { - error (0, 0, gettext ("%s: error while creating ELF header: %s"), - debug_fname, elf_errmsg (-1)); - result = 1; - goto fail_close; - } - - /* Finally write the file. */ - if (unlikely (elf_update (debugelf, ELF_C_WRITE)) == -1) - { - error (0, 0, gettext ("while writing `%s': %s"), - debug_fname, elf_errmsg (-1)); - result = 1; - goto fail_close; - } - - /* Create the real output file. First rename, then change the - mode. */ - if (rename (tmp_debug_fname, debug_fname) != 0 - || fchmod (debug_fd, mode) != 0) - { - error (0, errno, gettext ("while creating '%s'"), debug_fname); - result = 1; - goto fail_close; - } - - /* The temporary file does not exist anymore. */ - tmp_debug_fname = NULL; - - /* Compute the checksum which we will add to the executable. */ - if (crc32_file (debug_fd, &debug_crc) != 0) - { - error (0, errno, - gettext ("while computing checksum for debug information")); - unlink (debug_fname); - result = 1; - goto fail_close; - } - - } - - /* Mark the section header string table as unused, we will create - a new one. */ - shdr_info[shstrndx].idx = 0; - - /* We need a string table for the section headers. */ - shst = ebl_strtabinit (true); - if (shst == NULL) - error (EXIT_FAILURE, errno, gettext ("while preparing output for `%s'"), - output_fname ?: fname); - - /* Assign new section numbers. */ - shdr_info[0].idx = 0; - for (cnt = idx = 1; cnt < shnum; ++cnt) - if (shdr_info[cnt].idx > 0) - { - shdr_info[cnt].idx = idx++; - - /* Create a new section. */ - shdr_info[cnt].newscn = elf_newscn (newelf); - if (shdr_info[cnt].newscn == NULL) - error (EXIT_FAILURE, 0, gettext ("while generating output file: %s"), - elf_errmsg (-1)); - - assert (elf_ndxscn (shdr_info[cnt].newscn) == shdr_info[cnt].idx); - - /* Add this name to the section header string table. */ - shdr_info[cnt].se = ebl_strtabadd (shst, shdr_info[cnt].name, 0); - } - - /* Test whether we are doing anything at all. */ - if (cnt == idx) - /* Nope, all removable sections are already gone. */ - goto fail_close; - - /* Create the reference to the file with the debug info. */ - if (debug_fname != NULL) - { - char *debug_basename; - off_t crc_offset; - - /* Add the section header string table section name. */ - shdr_info[cnt].se = ebl_strtabadd (shst, ".gnu_debuglink", 15); - shdr_info[cnt].idx = idx++; - - /* Create the section header. */ - shdr_info[cnt].shdr.sh_type = SHT_PROGBITS; - shdr_info[cnt].shdr.sh_flags = 0; - shdr_info[cnt].shdr.sh_addr = 0; - shdr_info[cnt].shdr.sh_link = SHN_UNDEF; - shdr_info[cnt].shdr.sh_info = SHN_UNDEF; - shdr_info[cnt].shdr.sh_entsize = 0; - shdr_info[cnt].shdr.sh_addralign = 4; - /* We set the offset to zero here. Before we write the ELF file the - field must have the correct value. This is done in the final - loop over all section. Then we have all the information needed. */ - shdr_info[cnt].shdr.sh_offset = 0; - - /* Create the section. */ - shdr_info[cnt].newscn = elf_newscn (newelf); - if (shdr_info[cnt].newscn == NULL) - error (EXIT_FAILURE, 0, - gettext ("while create section header section: %s"), - elf_errmsg (-1)); - assert (elf_ndxscn (shdr_info[cnt].newscn) == shdr_info[cnt].idx); - - shdr_info[cnt].data = elf_newdata (shdr_info[cnt].newscn); - if (shdr_info[cnt].data == NULL) - error (EXIT_FAILURE, 0, gettext ("cannot allocate section data: %s"), - elf_errmsg (-1)); - - debug_basename = basename (debug_fname); - crc_offset = strlen (debug_basename) + 1; - /* Align to 4 byte boundary */ - crc_offset = ((crc_offset - 1) & ~3) + 4; - - shdr_info[cnt].data->d_align = 4; - shdr_info[cnt].shdr.sh_size = shdr_info[cnt].data->d_size - = crc_offset + 4; - shdr_info[cnt].data->d_buf = xcalloc (1, shdr_info[cnt].data->d_size); - - strcpy (shdr_info[cnt].data->d_buf, debug_basename); - /* Store the crc value in the correct byteorder */ - if ((__BYTE_ORDER == __LITTLE_ENDIAN - && ehdr->e_ident[EI_DATA] == ELFDATA2MSB) - || (__BYTE_ORDER == __BIG_ENDIAN - && ehdr->e_ident[EI_DATA] == ELFDATA2LSB)) - debug_crc = bswap_32 (debug_crc); - memcpy ((char *)shdr_info[cnt].data->d_buf + crc_offset, - (char *) &debug_crc, 4); - - /* One more section done. */ - ++cnt; - } - - /* Index of the section header table in the shdr_info array. */ - size_t shdridx = cnt; - - /* Add the section header string table section name. */ - shdr_info[cnt].se = ebl_strtabadd (shst, ".shstrtab", 10); - shdr_info[cnt].idx = idx; - - /* Create the section header. */ - shdr_info[cnt].shdr.sh_type = SHT_STRTAB; - shdr_info[cnt].shdr.sh_flags = 0; - shdr_info[cnt].shdr.sh_addr = 0; - shdr_info[cnt].shdr.sh_link = SHN_UNDEF; - shdr_info[cnt].shdr.sh_info = SHN_UNDEF; - shdr_info[cnt].shdr.sh_entsize = 0; - /* We set the offset to zero here. Before we write the ELF file the - field must have the correct value. This is done in the final - loop over all section. Then we have all the information needed. */ - shdr_info[cnt].shdr.sh_offset = 0; - shdr_info[cnt].shdr.sh_addralign = 1; - - /* Create the section. */ - shdr_info[cnt].newscn = elf_newscn (newelf); - if (shdr_info[cnt].newscn == NULL) - error (EXIT_FAILURE, 0, - gettext ("while create section header section: %s"), - elf_errmsg (-1)); - assert (elf_ndxscn (shdr_info[cnt].newscn) == idx); - - /* Finalize the string table and fill in the correct indices in the - section headers. */ - shstrtab_data = elf_newdata (shdr_info[cnt].newscn); - if (shstrtab_data == NULL) - error (EXIT_FAILURE, 0, - gettext ("while create section header string table: %s"), - elf_errmsg (-1)); - ebl_strtabfinalize (shst, shstrtab_data); - - /* We have to set the section size. */ - shdr_info[cnt].shdr.sh_size = shstrtab_data->d_size; - - /* Update the section information. */ - GElf_Off lastoffset = 0; - for (cnt = 1; cnt <= shdridx; ++cnt) - if (shdr_info[cnt].idx > 0) - { - Elf_Data *newdata; - - scn = elf_getscn (newelf, shdr_info[cnt].idx); - assert (scn != NULL); - - /* Update the name. */ - shdr_info[cnt].shdr.sh_name = ebl_strtaboffset (shdr_info[cnt].se); - - /* Update the section header from the input file. Some fields - might be section indeces which now have to be adjusted. */ - if (shdr_info[cnt].shdr.sh_link != 0) - shdr_info[cnt].shdr.sh_link = - shdr_info[shdr_info[cnt].shdr.sh_link].idx; - - if (shdr_info[cnt].shdr.sh_type == SHT_GROUP) - { - assert (shdr_info[cnt].data != NULL); - - Elf32_Word *grpref = (Elf32_Word *) shdr_info[cnt].data->d_buf; - for (size_t inner = 0; - inner < shdr_info[cnt].data->d_size / sizeof (Elf32_Word); - ++inner) - grpref[inner] = shdr_info[grpref[inner]].idx; - } - - /* Handle the SHT_REL, SHT_RELA, and SHF_INFO_LINK flag. */ - if (SH_INFO_LINK_P (&shdr_info[cnt].shdr)) - shdr_info[cnt].shdr.sh_info = - shdr_info[shdr_info[cnt].shdr.sh_info].idx; - - /* Get the data from the old file if necessary. We already - created the data for the section header string table. */ - if (cnt < shnum) - { - if (shdr_info[cnt].data == NULL) - { - shdr_info[cnt].data = elf_getdata (shdr_info[cnt].scn, NULL); - if (shdr_info[cnt].data == NULL) - INTERNAL_ERROR (fname); - } - - /* Set the data. This is done by copying from the old file. */ - newdata = elf_newdata (scn); - if (newdata == NULL) - INTERNAL_ERROR (fname); - - /* Copy the structure. */ - *newdata = *shdr_info[cnt].data; - - /* We know the size. */ - shdr_info[cnt].shdr.sh_size = shdr_info[cnt].data->d_size; - - /* We have to adjust symtol tables. The st_shndx member might - have to be updated. */ - if (shdr_info[cnt].shdr.sh_type == SHT_DYNSYM - || shdr_info[cnt].shdr.sh_type == SHT_SYMTAB) - { - Elf_Data *versiondata = NULL; - Elf_Data *shndxdata = NULL; - - size_t elsize = gelf_fsize (elf, ELF_T_SYM, 1, - ehdr->e_version); - - if (shdr_info[cnt].symtab_idx != 0) - { - assert (shdr_info[cnt].shdr.sh_type == SHT_SYMTAB_SHNDX); - /* This section has extended section information. - We have to modify that information, too. */ - shndxdata = elf_getdata (shdr_info[shdr_info[cnt].symtab_idx].scn, - NULL); - - assert ((versiondata->d_size / sizeof (Elf32_Word)) - >= shdr_info[cnt].data->d_size / elsize); - } - - if (shdr_info[cnt].version_idx != 0) - { - assert (shdr_info[cnt].shdr.sh_type == SHT_DYNSYM); - /* This section has associated version - information. We have to modify that - information, too. */ - versiondata = elf_getdata (shdr_info[shdr_info[cnt].version_idx].scn, - NULL); - - assert ((versiondata->d_size / sizeof (GElf_Versym)) - >= shdr_info[cnt].data->d_size / elsize); - } - - shdr_info[cnt].newsymidx - = (Elf32_Word *) xcalloc (shdr_info[cnt].data->d_size - / elsize, sizeof (Elf32_Word)); - - bool last_was_local = true; - size_t destidx; - size_t inner; - for (destidx = inner = 1; - inner < shdr_info[cnt].data->d_size / elsize; - ++inner) - { - Elf32_Word sec; - GElf_Sym sym_mem; - Elf32_Word xshndx; - GElf_Sym *sym = gelf_getsymshndx (shdr_info[cnt].data, - shndxdata, inner, - &sym_mem, &xshndx); - if (sym == NULL) - INTERNAL_ERROR (fname); - - if (sym->st_shndx == SHN_UNDEF - || (sym->st_shndx >= shnum - && sym->st_shndx != SHN_XINDEX)) - { - /* This is no section index, leave it alone - unless it is moved. */ - if (destidx != inner - && gelf_update_symshndx (shdr_info[cnt].data, - shndxdata, - destidx, sym, - xshndx) == 0) - INTERNAL_ERROR (fname); - - shdr_info[cnt].newsymidx[inner] = destidx++; - - if (last_was_local - && GELF_ST_BIND (sym->st_info) != STB_LOCAL) - { - last_was_local = false; - shdr_info[cnt].shdr.sh_info = destidx - 1; - } - - continue; - } - - /* Get the full section index, if necessary from the - XINDEX table. */ - if (sym->st_shndx != SHN_XINDEX) - sec = shdr_info[sym->st_shndx].idx; - else - { - assert (shndxdata != NULL); - - sec = shdr_info[xshndx].idx; - } - - if (sec != 0) - { - GElf_Section nshndx; - Elf32_Word nxshndx; - - if (sec < SHN_LORESERVE) - { - nshndx = sec; - nxshndx = 0; - } - else - { - nshndx = SHN_XINDEX; - nxshndx = sec; - } - - assert (sec < SHN_LORESERVE || shndxdata != NULL); - - if ((inner != destidx || nshndx != sym->st_shndx - || (shndxdata != NULL && nxshndx != xshndx)) - && (sym->st_shndx = nshndx, - gelf_update_symshndx (shdr_info[cnt].data, - shndxdata, - destidx, sym, - nxshndx) == 0)) - INTERNAL_ERROR (fname); - - shdr_info[cnt].newsymidx[inner] = destidx++; - - if (last_was_local - && GELF_ST_BIND (sym->st_info) != STB_LOCAL) - { - last_was_local = false; - shdr_info[cnt].shdr.sh_info = destidx - 1; - } - } - else - /* This is a section symbol for a section which has - been removed. */ - assert (GELF_ST_TYPE (sym->st_info) == STT_SECTION); - } - - if (destidx != inner) - { - /* The size of the symbol table changed. */ - shdr_info[cnt].shdr.sh_size = newdata->d_size - = destidx * elsize; - any_symtab_changes = true; - } - else - { - /* The symbol table didn't really change. */ - free (shdr_info[cnt].newsymidx); - shdr_info[cnt].newsymidx = NULL; - } - } - } - - /* If we have to, compute the offset of the section. */ - if (shdr_info[cnt].shdr.sh_offset == 0) - shdr_info[cnt].shdr.sh_offset - = ((lastoffset + shdr_info[cnt].shdr.sh_addralign - 1) - & ~((GElf_Off) (shdr_info[cnt].shdr.sh_addralign - 1))); - - /* Set the section header in the new file. */ - if (unlikely (gelf_update_shdr (scn, &shdr_info[cnt].shdr) == 0)) - /* There cannot be any overflows. */ - INTERNAL_ERROR (fname); - - /* Remember the last section written so far. */ - GElf_Off filesz = (shdr_info[cnt].shdr.sh_type != SHT_NOBITS - ? shdr_info[cnt].shdr.sh_size : 0); - if (lastoffset < shdr_info[cnt].shdr.sh_offset + filesz) - lastoffset = shdr_info[cnt].shdr.sh_offset + filesz; - } - - /* Adjust symbol references if symbol tables changed. */ - if (any_symtab_changes) - { - /* Find all relocation sections which use this - symbol table. */ - for (cnt = 1; cnt <= shdridx; ++cnt) - { - if (shdr_info[cnt].idx == 0) - /* Ignore sections which are discarded. */ - continue; - - if (shdr_info[cnt].shdr.sh_type == SHT_REL - || shdr_info[cnt].shdr.sh_type == SHT_RELA) - { - /* If the symbol table hasn't changed, do not do anything. */ - if (shdr_info[shdr_info[cnt].old_sh_link].newsymidx == NULL) - continue; - - Elf32_Word *newsymidx - = shdr_info[shdr_info[cnt].old_sh_link].newsymidx; - Elf_Data *d = elf_getdata (elf_getscn (newelf, - shdr_info[cnt].idx), - NULL); - assert (d != NULL); - size_t nrels = (shdr_info[cnt].shdr.sh_size - / shdr_info[cnt].shdr.sh_entsize); - - if (shdr_info[cnt].shdr.sh_type == SHT_REL) - for (size_t relidx = 0; relidx < nrels; ++relidx) - { - GElf_Rel rel_mem; - if (gelf_getrel (d, relidx, &rel_mem) == NULL) - INTERNAL_ERROR (fname); - - size_t symidx = GELF_R_SYM (rel_mem.r_info); - if (newsymidx[symidx] != symidx) - { - rel_mem.r_info - = GELF_R_INFO (newsymidx[symidx], - GELF_R_TYPE (rel_mem.r_info)); - - if (gelf_update_rel (d, relidx, &rel_mem) == 0) - INTERNAL_ERROR (fname); - } - } - else - for (size_t relidx = 0; relidx < nrels; ++relidx) - { - GElf_Rela rel_mem; - if (gelf_getrela (d, relidx, &rel_mem) == NULL) - INTERNAL_ERROR (fname); - - size_t symidx = GELF_R_SYM (rel_mem.r_info); - if (newsymidx[symidx] != symidx) - { - rel_mem.r_info - = GELF_R_INFO (newsymidx[symidx], - GELF_R_TYPE (rel_mem.r_info)); - - if (gelf_update_rela (d, relidx, &rel_mem) == 0) - INTERNAL_ERROR (fname); - } - } - } - else if (shdr_info[cnt].shdr.sh_type == SHT_HASH) - { - /* We have to recompute the hash table. */ - Elf32_Word symtabidx = shdr_info[cnt].old_sh_link; - - /* We do not have to do anything if the symbol table was - not changed. */ - if (shdr_info[symtabidx].newsymidx == NULL) - continue; - - /* The symbol version section in the new file. */ - scn = elf_getscn (newelf, shdr_info[cnt].idx); - - /* The symbol table data. */ - Elf_Data *symd = elf_getdata (elf_getscn (newelf, - shdr_info[symtabidx].idx), - NULL); - assert (symd != NULL); - - /* The hash table data. */ - Elf_Data *hashd = elf_getdata (scn, NULL); - assert (hashd != NULL); - - if (shdr_info[cnt].shdr.sh_entsize == sizeof (Elf32_Word)) - { - /* Sane arches first. */ - Elf32_Word *bucket = (Elf32_Word *) hashd->d_buf; - - size_t strshndx = shdr_info[symtabidx].old_sh_link; - size_t elsize = gelf_fsize (elf, ELF_T_SYM, 1, - ehdr->e_version); - - /* Convert to the correct byte order. */ - if (gelf_xlatetom (newelf, hashd, hashd, - BYTE_ORDER == LITTLE_ENDIAN - ? ELFDATA2LSB : ELFDATA2MSB) == NULL) - INTERNAL_ERROR (fname); - - /* Adjust the nchain value. The symbol table size - changed. We keep the same size for the bucket array. */ - bucket[1] = symd->d_size / elsize; - Elf32_Word nbucket = bucket[0]; - bucket += 2; - Elf32_Word *chain = bucket + nbucket; - - /* New size of the section. */ - GElf_Shdr shdr_mem; - GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); - shdr->sh_size = hashd->d_size - = (2 + symd->d_size / elsize + nbucket) - * sizeof (Elf32_Word); - (void) gelf_update_shdr (scn, shdr); - - /* Clear the arrays. */ - memset (bucket, '\0', - (symd->d_size / elsize + nbucket) - * sizeof (Elf32_Word)); - - for (size_t inner = shdr_info[symtabidx].shdr.sh_info; - inner < symd->d_size / elsize; ++inner) - { - GElf_Sym sym_mem; - GElf_Sym *sym = gelf_getsym (symd, inner, &sym_mem); - assert (sym != NULL); - - const char *name = elf_strptr (elf, strshndx, - sym->st_name); - assert (name != NULL); - size_t hidx = elf_hash (name) % nbucket; - - if (bucket[hidx] == 0) - bucket[hidx] = inner; - else - { - hidx = bucket[hidx]; - - while (chain[hidx] != 0) - hidx = chain[hidx]; - - chain[hidx] = inner; - } - } - } - else - { - /* Alpha and S390 64-bit use 64-bit SHT_HASH entries. */ - assert (shdr_info[cnt].shdr.sh_entsize - == sizeof (Elf64_Xword)); - - Elf64_Xword *bucket = (Elf64_Xword *) hashd->d_buf; - - size_t strshndx = shdr_info[symtabidx].old_sh_link; - size_t elsize = gelf_fsize (elf, ELF_T_SYM, 1, - ehdr->e_version); - - /* Convert to the correct byte order. */ - if (gelf_xlatetom (newelf, hashd, hashd, - BYTE_ORDER == LITTLE_ENDIAN - ? ELFDATA2LSB : ELFDATA2MSB) == NULL) - INTERNAL_ERROR (fname); - - /* Adjust the nchain value. The symbol table size - changed. We keep the same size for the bucket array. */ - bucket[1] = symd->d_size / elsize; - Elf64_Xword nbucket = bucket[0]; - bucket += 2; - Elf64_Xword *chain = bucket + nbucket; - - /* New size of the section. */ - GElf_Shdr shdr_mem; - GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); - shdr->sh_size = hashd->d_size - = (2 + symd->d_size / elsize + nbucket) - * sizeof (Elf64_Xword); - (void) gelf_update_shdr (scn, shdr); - - /* Clear the arrays. */ - memset (bucket, '\0', - (symd->d_size / elsize + nbucket) - * sizeof (Elf64_Xword)); - - for (size_t inner = shdr_info[symtabidx].shdr.sh_info; - inner < symd->d_size / elsize; ++inner) - { - GElf_Sym sym_mem; - GElf_Sym *sym = gelf_getsym (symd, inner, &sym_mem); - assert (sym != NULL); - - const char *name = elf_strptr (elf, strshndx, - sym->st_name); - assert (name != NULL); - size_t hidx = elf_hash (name) % nbucket; - - if (bucket[hidx] == 0) - bucket[hidx] = inner; - else - { - hidx = bucket[hidx]; - - while (chain[hidx] != 0) - hidx = chain[hidx]; - - chain[hidx] = inner; - } - } - } - - /* Convert back to the file byte order. */ - if (gelf_xlatetof (newelf, hashd, hashd, - BYTE_ORDER == LITTLE_ENDIAN - ? ELFDATA2LSB : ELFDATA2MSB) == NULL) - INTERNAL_ERROR (fname); - } - else if (shdr_info[cnt].shdr.sh_type == SHT_GNU_versym) - { - /* If the symbol table changed we have to adjust the - entries. */ - Elf32_Word symtabidx = shdr_info[cnt].old_sh_link; - - /* We do not have to do anything if the symbol table was - not changed. */ - if (shdr_info[symtabidx].newsymidx == NULL) - continue; - - /* The symbol version section in the new file. */ - scn = elf_getscn (newelf, shdr_info[cnt].idx); - - /* The symbol table data. */ - Elf_Data *symd = elf_getdata (elf_getscn (newelf, - shdr_info[symtabidx].idx), - NULL); - assert (symd != NULL); - - /* The version symbol data. */ - Elf_Data *verd = elf_getdata (scn, NULL); - assert (verd != NULL); - - /* Convert to the correct byte order. */ - if (gelf_xlatetom (newelf, verd, verd, - BYTE_ORDER == LITTLE_ENDIAN - ? ELFDATA2LSB : ELFDATA2MSB) == NULL) - INTERNAL_ERROR (fname); - - /* The symbol version array. */ - GElf_Half *verstab = (GElf_Half *) verd->d_buf; - - /* New indices of the symbols. */ - Elf32_Word *newsymidx = shdr_info[symtabidx].newsymidx; - - /* Walk through the list and */ - size_t elsize = gelf_fsize (elf, verd->d_type, 1, - ehdr->e_version); - for (size_t inner = 1; inner < verd->d_size / elsize; ++inner) - if (newsymidx[inner] != 0) - /* Overwriting the same array works since the - reordering can only move entries to lower indices - in the array. */ - verstab[newsymidx[inner]] = verstab[inner]; - - /* New size of the section. */ - GElf_Shdr shdr_mem; - GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); - shdr->sh_size = verd->d_size - = gelf_fsize (newelf, verd->d_type, - symd->d_size / gelf_fsize (elf, symd->d_type, 1, - ehdr->e_version), - ehdr->e_version); - (void) gelf_update_shdr (scn, shdr); - - /* Convert back to the file byte order. */ - if (gelf_xlatetof (newelf, verd, verd, - BYTE_ORDER == LITTLE_ENDIAN - ? ELFDATA2LSB : ELFDATA2MSB) == NULL) - INTERNAL_ERROR (fname); - } - else if (shdr_info[cnt].shdr.sh_type == SHT_GROUP) - { - /* Check whether the associated symbol table changed. */ - if (shdr_info[shdr_info[cnt].old_sh_link].newsymidx != NULL) - { - /* Yes the symbol table changed. Update the section - header of the section group. */ - scn = elf_getscn (newelf, shdr_info[cnt].idx); - GElf_Shdr shdr_mem; - GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); - assert (shdr != NULL); - - size_t stabidx = shdr_info[cnt].old_sh_link; - shdr->sh_info = shdr_info[stabidx].newsymidx[shdr->sh_info]; - - (void) gelf_update_shdr (scn, shdr); - } - } - } - } - - /* Finally finish the ELF header. Fill in the fields not handled by - libelf from the old file. */ - newehdr = gelf_getehdr (newelf, &newehdr_mem); - if (newehdr == NULL) - INTERNAL_ERROR (fname); - - memcpy (newehdr->e_ident, ehdr->e_ident, EI_NIDENT); - newehdr->e_type = ehdr->e_type; - newehdr->e_machine = ehdr->e_machine; - newehdr->e_version = ehdr->e_version; - newehdr->e_entry = ehdr->e_entry; - newehdr->e_flags = ehdr->e_flags; - newehdr->e_phoff = ehdr->e_phoff; - /* We need to position the section header table. */ - const size_t offsize = gelf_fsize (elf, ELF_T_OFF, 1, EV_CURRENT); - newehdr->e_shoff = ((shdr_info[shdridx].shdr.sh_offset - + shdr_info[shdridx].shdr.sh_size + offsize - 1) - & ~((GElf_Off) (offsize - 1))); - newehdr->e_shentsize = gelf_fsize (elf, ELF_T_SHDR, 1, EV_CURRENT); - - /* The new section header string table index. */ - if (likely (idx < SHN_HIRESERVE) && likely (idx != SHN_XINDEX)) - newehdr->e_shstrndx = idx; - else - { - /* The index does not fit in the ELF header field. */ - shdr_info[0].scn = elf_getscn (elf, 0); - - if (gelf_getshdr (shdr_info[0].scn, &shdr_info[0].shdr) == NULL) - INTERNAL_ERROR (fname); - - shdr_info[0].shdr.sh_link = idx; - (void) gelf_update_shdr (shdr_info[0].scn, &shdr_info[0].shdr); - - newehdr->e_shstrndx = SHN_XINDEX; - } - - if (gelf_update_ehdr (newelf, newehdr) == 0) - { - error (0, 0, gettext ("%s: error while creating ELF header: %s"), - fname, elf_errmsg (-1)); - return 1; - } - - /* We have everything from the old file. */ - if (elf_cntl (elf, ELF_C_FDDONE) != 0) - { - error (0, 0, gettext ("%s: error while reading the file: %s"), - fname, elf_errmsg (-1)); - return 1; - } - - /* The ELF library better follows our layout when this is not a - relocatable object file. */ - elf_flagelf (newelf, ELF_C_SET, - (ehdr->e_type != ET_REL ? ELF_F_LAYOUT : 0) - | (permissive ? ELF_F_PERMISSIVE : 0)); - - /* Finally write the file. */ - if (elf_update (newelf, ELF_C_WRITE) == -1) - { - error (0, 0, gettext ("while writing `%s': %s"), - fname, elf_errmsg (-1)); - result = 1; - } - - fail_close: - if (shdr_info != NULL) - { - /* For some sections we might have created an table to map symbol - table indices. */ - if (any_symtab_changes) - for (cnt = 1; cnt <= shdridx; ++cnt) - free (shdr_info[cnt].newsymidx); - - /* Free the memory. */ - if ((shnum + 2) * sizeof (struct shdr_info) > MAX_STACK_ALLOC) - free (shdr_info); - } - - /* Free other resources. */ - if (shstrtab_data != NULL) - free (shstrtab_data->d_buf); - if (shst != NULL) - ebl_strtabfree (shst); - - /* That was it. Close the descriptors. */ - if (elf_end (newelf) != 0) - { - error (0, 0, gettext ("error while finishing `%s': %s"), fname, - elf_errmsg (-1)); - result = 1; - } - - if (debugelf != NULL && elf_end (debugelf) != 0) - { - error (0, 0, gettext ("error while finishing `%s': %s"), debug_fname, - elf_errmsg (-1)); - result = 1; - } - - fail: - /* Close the EBL backend. */ - if (ebl != NULL) - ebl_closebackend (ebl); - - /* Close debug file descriptor, if opened */ - if (debug_fd >= 0) - { - if (tmp_debug_fname != NULL) - unlink (tmp_debug_fname); - close (debug_fd); - } - - /* If requested, preserve the timestamp. */ - if (tvp != NULL) - { - if (futimes (fd, tvp) != 0) - { - error (0, errno, gettext ("\ -cannot set access and modification date of \"%s\""), - output_fname ?: fname); - result = 1; - } - } - - /* Close the file descriptor if we created a new file. */ - if (output_fname != NULL) - close (fd); - - return result; -} - - -static int -handle_ar (int fd, Elf *elf, const char *prefix, const char *fname, - struct timeval tvp[2]) -{ - size_t prefix_len = prefix == NULL ? 0 : strlen (prefix); - size_t fname_len = strlen (fname) + 1; - char new_prefix[prefix_len + 1 + fname_len]; - char *cp = new_prefix; - - /* Create the full name of the file. */ - if (prefix != NULL) - { - cp = mempcpy (cp, prefix, prefix_len); - *cp++ = ':'; - } - memcpy (cp, fname, fname_len); - - - /* Process all the files contained in the archive. */ - Elf *subelf; - Elf_Cmd cmd = ELF_C_RDWR; - int result = 0; - while ((subelf = elf_begin (fd, cmd, elf)) != NULL) - { - /* The the header for this element. */ - Elf_Arhdr *arhdr = elf_getarhdr (subelf); - - if (elf_kind (subelf) == ELF_K_ELF) - result |= handle_elf (fd, subelf, new_prefix, arhdr->ar_name, 0, NULL); - else if (elf_kind (subelf) == ELF_K_AR) - result |= handle_ar (fd, subelf, new_prefix, arhdr->ar_name, NULL); - - /* Get next archive element. */ - cmd = elf_next (subelf); - if (unlikely (elf_end (subelf) != 0)) - INTERNAL_ERROR (fname); - } - - if (tvp != NULL) - { - if (unlikely (futimes (fd, tvp) != 0)) - { - error (0, errno, gettext ("\ -cannot set access and modification date of \"%s\""), fname); - result = 1; - } - } - - if (unlikely (close (fd) != 0)) - error (EXIT_FAILURE, errno, gettext ("while closing `%s'"), fname); - - return result; -} diff --git a/src/symbolhash.c b/src/symbolhash.c deleted file mode 100644 index da2ae6f6..00000000 --- a/src/symbolhash.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Symbol hash table implementation. - Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <string.h> - -#include <ld.h> - -/* Definitions for the symbol hash table. */ -#define TYPE struct symbol * -#define NAME ld_symbol_tab -#define ITERATE 1 -#define COMPARE(a, b) strcmp ((a)->name, (b)->name) - -#include "../lib/dynamicsizehash.c" diff --git a/src/symbolhash.h b/src/symbolhash.h deleted file mode 100644 index a8798c2a..00000000 --- a/src/symbolhash.h +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef SYMBOLHASH_H -#define SYMBOLHASH_H 1 - -/* Definitions for the symbol hash table. */ -#define TYPE struct symbol * -#define NAME ld_symbol_tab -#define ITERATE 1 -#define COMPARE(a, b) strcmp ((a)->name, (b)->name) -#include <dynamicsizehash.h> - -#endif /* symbolhash.h */ diff --git a/src/unaligned.h b/src/unaligned.h deleted file mode 100644 index 524b35c8..00000000 --- a/src/unaligned.h +++ /dev/null @@ -1,98 +0,0 @@ -/* Unaligned memory access functionality. - Copyright (C) 2000, 2001, 2002, 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef _UNALIGNED_H -#define _UNALIGNED_H 1 - -#include <byteswap.h> -#include <endian.h> - - -#ifndef UNALIGNED_ACCESS_CLASS -# error "UNALIGNED_ACCESS_CLASS must be defined" -#endif - - -/* Macros to convert from the host byte order to that of the object file. */ -#if UNALIGNED_ACCESS_CLASS == BYTE_ORDER -# define target_bswap_16(n) (n) -# define target_bswap_32(n) (n) -# define target_bswap_64(n) (n) -#else -# define target_bswap_16(n) bswap_16 (n) -# define target_bswap_32(n) bswap_32 (n) -# define target_bswap_64(n) bswap_64 (n) -#endif - - -union u_2ubyte_unaligned -{ - uint16_t u; - char c[2]; -} __attribute__((packed)); - -union u_4ubyte_unaligned -{ - uint32_t u; - char c[4]; -} __attribute__((packed)); - -union u_8ubyte_unaligned -{ - uint64_t u; - char c[8]; -} __attribute__((packed)); - - -/* Macros to store value at unaligned address. */ -#define store_2ubyte_unaligned(ptr, value) \ - (void) (((union u_2ubyte_unaligned *) (ptr))->u = target_bswap_16 (value)) -#define store_4ubyte_unaligned(ptr, value) \ - (void) (((union u_4ubyte_unaligned *) (ptr))->u = target_bswap_32 (value)) -#define store_8ubyte_unaligned(ptr, value) \ - (void) (((union u_8ubyte_unaligned *) (ptr))->u = target_bswap_64 (value)) - - -/* Macros to add value to unaligned address. This is a bit more - complicated since the value must be read from memory and eventually - converted twice. */ -#if UNALIGNED_ACCESS_CLASS == BYTE_ORDER -# define add_2ubyte_unaligned(ptr, value) \ - (void) (((union u_2ubyte_unaligned *) (ptr))->u += value) -# define add_4ubyte_unaligned(ptr, value) \ - (void) (((union u_4ubyte_unaligned *) (ptr))->u += value) -# define add_8ubyte_unaligned(ptr, value) \ - (void) (((union u_8ubyte_unaligned *) (ptr))->u += value) -#else -# define add_2ubyte_unaligned(ptr, value) \ - do { \ - union u_2ubyte_unaligned *_ptr = (ptr); \ - uint16_t _val = bswap_16 (_ptr->u) + (value); \ - _ptr->u = bswap_16 (_val); \ - } while (0) -# define add_4ubyte_unaligned(ptr, value) \ - do { \ - union u_4ubyte_unaligned *_ptr = (ptr); \ - uint32_t _val = bswap_32 (_ptr->u) + (value); \ - _ptr->u = bswap_32 (_val); \ - } while (0) -# define add_8ubyte_unaligned(ptr, value) \ - do { \ - union u_8ubyte_unaligned *_ptr = (ptr); \ - uint64_t _val = bswap_64 (_ptr->u) + (value); \ - _ptr->u = bswap_64 (_val); \ - } while (0) -#endif - -#endif /* unaligned.h */ diff --git a/src/versionhash.c b/src/versionhash.c deleted file mode 100644 index 79b2e105..00000000 --- a/src/versionhash.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Version symbol hash table implementation. - Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <string.h> - -#include <ld.h> - -/* Definitions for the symbol hash table. */ -#define TYPE struct id_list * -#define NAME ld_version_str_tab -#define COMPARE(a, b) strcmp ((a)->id, (b)->id) - -#include "../lib/dynamicsizehash.c" diff --git a/src/versionhash.h b/src/versionhash.h deleted file mode 100644 index 243aeeb5..00000000 --- a/src/versionhash.h +++ /dev/null @@ -1,22 +0,0 @@ -/* Copyright (C) 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2001. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifndef VERSIONHASH_H -#define VERSIONHASH_H 1 - -/* Definitions for the symbol hash table. */ -#define TYPE struct id_list * -#define NAME ld_version_str_tab -#include <dynamicsizehash.h> - -#endif /* versionhash.h */ diff --git a/src/xelf.h b/src/xelf.h deleted file mode 100644 index ab36e002..00000000 --- a/src/xelf.h +++ /dev/null @@ -1,387 +0,0 @@ -/* Macros to enable writing native and generic ELF access code. - Copyright (C) 2003 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2003. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libebl.h> - - -/* By default the linker is handling all architectures. But it can - be configured to be a native-only linker. */ -#if NATIVE_ELF == 32 -/* 32-bit only. */ -# define XElf_Ehdr Elf32_Ehdr -# define XElf_Shdr Elf32_Shdr -# define XElf_Off Elf32_Off -# define XElf_Addr Elf32_Addr -# define XElf_Half Elf32_Half -# define XElf_Word Elf32_Word -# define XElf_Xword Elf32_Word -# define XElf_Sxword Elf32_Sword -# define XElf_Versym Elf32_Versym -# define XElf_Sym Elf32_Sym -# define XElf_Rel Elf32_Rel -# define XElf_Rela Elf32_Rela - -# define XElf_Ehdr_vardef(name) Elf32_Ehdr *name -# define xelf_getehdr(elf, name) name = elf32_getehdr (elf) -# define xelf_getehdr_copy(elf, name, copy) \ - (copy) = *(name = elf32_getehdr (elf)) -# define xelf_newehdr(elf, klass) elf32_newehdr (elf) -# define xelf_update_ehdr(elf, ehdr) \ - /* nothing */ ((void) (elf), (void) (ehdr), 1) - -# define xelf_getclass(elf) ELFCLASS32 - -# define XElf_Phdr_vardef(name) Elf32_Phdr *name -# define xelf_newphdr(elf, n) elf32_newphdr (elf, n) -# define xelf_getphdr(elf, idx, name) name = elf32_getphdr (elf) + idx -# define xelf_getphdr_ptr(elf, idx, name) name = elf32_getphdr (elf) + idx -# define xelf_update_phdr(elf, idx, phdr) \ - /* nothing */ ((void) (elf), (void) (idx), (void) (phdr), 1) - -# define XElf_Shdr_vardef(name) Elf32_Shdr *name -# define xelf_getshdr(scn, name) name = elf32_getshdr (scn) -# define xelf_getshdr_copy(scn, name, copy) \ - (copy) = *(name = elf32_getshdr (scn)) -# define xelf_update_shdr(scn, shdr) \ - /* nothing */ ((void) (scn), (void) (shdr), 1) - -# define XElf_Sym_vardef(name) Elf32_Sym *name -# define xelf_getsym(data, idx, name) \ - name = &((Elf32_Sym *) (data)->d_buf)[idx] -# define xelf_getsym_ptr(data, idx, name) \ - name = &((Elf32_Sym *) (data)->d_buf)[idx] -# define xelf_getsymshndx(data, ndxdata, idx, name1, name2) \ - (name1 = &((Elf32_Sym *) ((data)->d_buf))[idx]); \ - name2 = (unlikely ((ndxdata) != NULL) \ - ? ((Elf32_Word *) ((ndxdata)->d_buf))[idx] : 0) -# define xelf_update_sym(data, idx, sym) \ - /* nothing */ ((void) (data), (void) (idx), (void) (sym), 1) -# define xelf_update_symshndx(data, ndxdata, idx, name1, name2, datachanged) \ - if (datachanged) \ - ((Elf32_Sym *) ((data)->d_buf))[idx] = *name1; \ - if (unlikely (ndxdata != NULL)) \ - ((Elf32_Word *) ((ndxdata)->d_buf))[idx] = name2 - -# define XElf_Versym_vardef(name) Elf32_Versym name -# define xelf_getversym_copy(data, idx, name) \ - (name = ((Elf32_Versym *) ((data)->d_buf))[idx], &name) - -# define XElf_Dyn_vardef(name) Elf32_Dyn *name -# define xelf_getdyn(data, idx, name) \ - name = &((Elf32_Dyn *) ((data)->d_buf))[idx] -# define xelf_getdyn_ptr(data, idx, name) \ - name = &((Elf32_Dyn *) ((data)->d_buf))[idx] -# define xelf_update_dyn(data, idx, name) \ - /* nothing */ ((void) (data), (void) (idx), (void) (name), 1) - -# define XElf_Rel_vardef(name) Elf32_Rel *name -# define xelf_getrel(data, idx, name) \ - name = &((Elf32_Rel *) ((data)->d_buf))[idx] -# define xelf_getrel_ptr(data, idx, name) \ - name = &((Elf32_Rel *) ((data)->d_buf))[idx] -# define xelf_update_rel(data, idx, name) \ - /* nothing */ ((void) (data), (void) (idx), (void) (name), 1) - -# define XElf_Rela_vardef(name) Elf32_Rela *name -# define xelf_getrela(data, idx, name) \ - name = &((Elf32_Rela *) ((data)->d_buf))[idx] -# define xelf_getrela_ptr(data, idx, name) \ - name = &((Elf32_Rela *) ((data)->d_buf))[idx] -# define xelf_update_rela(data, idx, name) \ - /* nothing */ ((void) (data), (void) (idx), (void) (name), 1) - -# define XElf_Verdef_vardef(name) Elf32_Verdef *name -# define xelf_getverdef(data, offset, name) \ - name = ((Elf32_Verdef *) ((char *) ((data)->d_buf) + (offset))) - -# define XElf_Verdaux_vardef(name) Elf32_Verdaux *name -# define xelf_getverdaux(data, offset, name) \ - name = ((Elf32_Verdaux *) ((char *) ((data)->d_buf) + (offset))) - -# define XELF_ST_TYPE(info) ELF32_ST_TYPE (info) -# define XELF_ST_BIND(info) ELF32_ST_BIND (info) -# define XELF_ST_INFO(bind, type) ELF32_ST_INFO (bind, type) -# define XELF_ST_VISIBILITY(info) ELF32_ST_VISIBILITY (info) - -# define XELF_R_SYM(info) ELF32_R_SYM (info) -# define XELF_R_TYPE(info) ELF32_R_TYPE (info) -# define XELF_R_INFO(sym, type) ELF32_R_INFO (sym, type) - -# define xelf_fsize(elf, type, cnt) \ - (__builtin_constant_p (type) \ - ? ({ size_t fsize; \ - switch (type) \ - { \ - case ELF_T_BYTE: fsize = 1; break; \ - case ELF_T_ADDR: fsize = sizeof (Elf32_Addr); break; \ - case ELF_T_DYN: fsize = sizeof (Elf32_Dyn); break; \ - case ELF_T_EHDR: fsize = sizeof (Elf32_Ehdr); break; \ - case ELF_T_HALF: fsize = sizeof (Elf32_Half); break; \ - case ELF_T_OFF: fsize = sizeof (Elf32_Off); break; \ - case ELF_T_PHDR: fsize = sizeof (Elf32_Phdr); break; \ - case ELF_T_RELA: fsize = sizeof (Elf32_Rela); break; \ - case ELF_T_REL: fsize = sizeof (Elf32_Rel); break; \ - case ELF_T_SHDR: fsize = sizeof (Elf32_Shdr); break; \ - case ELF_T_SWORD: fsize = sizeof (Elf32_Sword); break; \ - case ELF_T_SYM: fsize = sizeof (Elf32_Sym); break; \ - case ELF_T_WORD: fsize = sizeof (Elf32_Word); break; \ - case ELF_T_XWORD: fsize = sizeof (Elf32_Xword); break; \ - case ELF_T_SXWORD: fsize = sizeof (Elf32_Sxword); break; \ - case ELF_T_VDEF: fsize = sizeof (Elf32_Verdef); break; \ - case ELF_T_VDAUX: fsize = sizeof (Elf32_Verdaux); break; \ - case ELF_T_VNEED: fsize = sizeof (Elf32_Verneed); break; \ - case ELF_T_VNAUX: fsize = sizeof (Elf32_Vernaux); break; \ - case ELF_T_NHDR: fsize = sizeof (Elf32_Nhdr); break; \ - case ELF_T_SYMINFO: fsize = sizeof (Elf32_Syminfo); break; \ - case ELF_T_MOVE: fsize = sizeof (Elf32_Move); break; \ - default: fsize = 0; break; \ - } \ - fsize * (cnt); }) \ - : gelf_fsize (elf, type, cnt, EV_CURRENT)) -#elif NATIVE_ELF == 64 -/* 64-bit only. */ -# define XElf_Ehdr Elf64_Ehdr -# define XElf_Shdr Elf64_Shdr -# define XElf_Addr Elf64_Addr -# define XElf_Half Elf64_Half -# define XElf_Off Elf64_Off -# define XElf_Word Elf64_Word -# define XElf_Xword Elf64_Xword -# define XElf_Sxword Elf64_Sxword -# define XElf_Versym Elf64_Versym -# define XElf_Sym Elf64_Sym -# define XElf_Rel Elf64_Rel -# define XElf_Rela Elf64_Rela - -# define XElf_Ehdr_vardef(name) Elf64_Ehdr *name -# define xelf_getehdr(elf, name) name = elf64_getehdr (elf) -# define xelf_getehdr_copy(elf, name, copy) \ - (copy) = *(name = elf64_getehdr (elf)) -# define xelf_newehdr(elf, klass) elf64_newehdr (elf) -# define xelf_update_ehdr(elf, ehdr) \ - /* nothing */ ((void) (elf), (void) (ehdr), 1) - -# define xelf_getclass(elf) ELFCLASS32 - -# define XElf_Phdr_vardef(name) Elf64_Phdr *name -# define xelf_newphdr(elf, n) elf64_newphdr (elf, n) -# define xelf_getphdr(elf, idx, name) name = elf64_getphdr (elf) + idx -# define xelf_getphdr_ptr(elf, idx, name) name = elf64_getphdr (elf) + idx -# define xelf_update_phdr(elf, idx, phdr) \ - /* nothing */ ((void) (elf), (void) (idx), (void) (phdr), 1) - -# define XElf_Shdr_vardef(name) Elf64_Shdr *name -# define xelf_getshdr(scn, name) name = elf64_getshdr (scn) -# define xelf_getshdr_copy(scn, name, copy) \ - (copy) = *(name = elf64_getshdr (scn)) -# define xelf_update_shdr(scn, shdr) \ - /* nothing */ ((void) (scn), (void) (shdr), 1) - -# define XElf_Sym_vardef(name) Elf64_Sym *name -# define xelf_getsym(data, idx, name) \ - name = &((Elf64_Sym *) (data)->d_buf)[idx] -# define xelf_getsym_ptr(data, idx, name) \ - name = &((Elf64_Sym *) (data)->d_buf)[idx] -# define xelf_getsymshndx(data, ndxdata, idx, name1, name2) \ - (name1 = &((Elf64_Sym *) ((data)->d_buf))[idx]); \ - name2 = (unlikely ((ndxdata) != NULL) \ - ? ((Elf32_Word *) ((ndxdata)->d_buf))[idx] : 0) -# define xelf_update_sym(data, idx, sym) \ - /* nothing */ ((void) (data), (void) (idx), (void) (sym), 1) -# define xelf_update_symshndx(data, ndxdata, idx, name1, name2, datachanged) \ - if (datachanged) \ - ((Elf64_Sym *) ((data)->d_buf))[idx] = *name1; \ - if (ndxdata != NULL) \ - (((Elf32_Word *) ((ndxdata)->d_buf))[idx] = name2) - -# define XElf_Versym_vardef(name) Elf64_Versym name -# define xelf_getversym_copy(data, idx, name) \ - (name = ((Elf64_Versym *) ((data)->d_buf))[idx], (&name)) - -# define XElf_Dyn_vardef(name) Elf64_Dyn *name -# define xelf_getdyn(data, idx, name) \ - name = &((Elf64_Dyn *) ((data)->d_buf))[idx] -# define xelf_getdyn_ptr(data, idx, name) \ - name = &((Elf64_Dyn *) ((data)->d_buf))[idx] -# define xelf_update_dyn(data, idx, name) \ - /* nothing */ ((void) (data), (void) (idx), (void) (name), 1) - -# define XElf_Rel_vardef(name) Elf64_Rel *name -# define xelf_getrel(data, idx, name) \ - name = &((Elf64_Rel *) ((data)->d_buf))[idx] -# define xelf_getrel_ptr(data, idx, name) \ - name = &((Elf64_Rel *) ((data)->d_buf))[idx] -# define xelf_update_rel(data, idx, name) \ - /* nothing */ ((void) (data), (void) (idx), (void) (name), 1) - -# define XElf_Rela_vardef(name) Elf64_Rela *name -# define xelf_getrela(data, idx, name) \ - name = &((Elf64_Rela *) ((data)->d_buf))[idx] -# define xelf_getrela_ptr(data, idx, name) \ - name = &((Elf64_Rela *) ((data)->d_buf))[idx] -# define xelf_update_rela(data, idx, name) \ - /* nothing */ ((void) (data), (void) (idx), (void) (name), 1) - -# define XElf_Verdef_vardef(name) Elf64_Verdef *name -# define xelf_getverdef(data, offset, name) \ - name = ((Elf64_Verdef *) ((char *) ((data)->d_buf) + (offset))) - -# define XElf_Verdaux_vardef(name) Elf64_Verdaux *name -# define xelf_getverdaux(data, offset, name) \ - name = ((Elf64_Verdaux *) ((char *) ((data)->d_buf) + (offset))) - -# define XELF_ST_TYPE(info) ELF64_ST_TYPE (info) -# define XELF_ST_BIND(info) ELF64_ST_BIND (info) -# define XELF_ST_INFO(bind, type) ELF64_ST_INFO (bind, type) -# define XELF_ST_VISIBILITY(info) ELF64_ST_VISIBILITY (info) - -# define XELF_R_SYM(info) ELF64_R_SYM (info) -# define XELF_R_TYPE(info) ELF64_R_TYPE (info) -# define XELF_R_INFO(sym, type) ELF64_R_INFO (sym, type) - -# define xelf_fsize(elf, type, cnt) \ - (__builtin_constant_p (type) \ - ? ({ size_t fsize; \ - switch (type) \ - { \ - case ELF_T_BYTE: fsize = 1; break; \ - case ELF_T_ADDR: fsize = sizeof (Elf64_Addr); break; \ - case ELF_T_DYN: fsize = sizeof (Elf64_Dyn); break; \ - case ELF_T_EHDR: fsize = sizeof (Elf64_Ehdr); break; \ - case ELF_T_HALF: fsize = sizeof (Elf64_Half); break; \ - case ELF_T_OFF: fsize = sizeof (Elf64_Off); break; \ - case ELF_T_PHDR: fsize = sizeof (Elf64_Phdr); break; \ - case ELF_T_RELA: fsize = sizeof (Elf64_Rela); break; \ - case ELF_T_REL: fsize = sizeof (Elf64_Rel); break; \ - case ELF_T_SHDR: fsize = sizeof (Elf64_Shdr); break; \ - case ELF_T_SWORD: fsize = sizeof (Elf64_Sword); break; \ - case ELF_T_SYM: fsize = sizeof (Elf64_Sym); break; \ - case ELF_T_WORD: fsize = sizeof (Elf64_Word); break; \ - case ELF_T_XWORD: fsize = sizeof (Elf64_Xword); break; \ - case ELF_T_SXWORD: fsize = sizeof (Elf64_Sxword); break; \ - case ELF_T_VDEF: fsize = sizeof (Elf64_Verdef); break; \ - case ELF_T_VDAUX: fsize = sizeof (Elf64_Verdaux); break; \ - case ELF_T_VNEED: fsize = sizeof (Elf64_Verneed); break; \ - case ELF_T_VNAUX: fsize = sizeof (Elf64_Vernaux); break; \ - case ELF_T_NHDR: fsize = sizeof (Elf64_Nhdr); break; \ - case ELF_T_SYMINFO: fsize = sizeof (Elf64_Syminfo); break; \ - case ELF_T_MOVE: fsize = sizeof (Elf64_Move); break; \ - default: fsize = 0; break; \ - } \ - fsize * (cnt); }) \ - : gelf_fsize (elf, type, cnt, EV_CURRENT)) -#else -# include <gelf.h> - -/* Generic linker. */ -# define XElf_Ehdr GElf_Ehdr -# define XElf_Shdr GElf_Shdr -# define XElf_Addr GElf_Addr -# define XElf_Half GElf_Half -# define XElf_Off GElf_Off -# define XElf_Word GElf_Word -# define XElf_Xword GElf_Xword -# define XElf_Sxword GElf_Sxword -# define XElf_Versym GElf_Versym -# define XElf_Sym GElf_Sym -# define XElf_Rel GElf_Rel -# define XElf_Rela GElf_Rela - -# define XElf_Ehdr_vardef(name) GElf_Ehdr name##_mem; GElf_Ehdr *name -# define xelf_getehdr(elf, name) name = gelf_getehdr (elf, &name##_mem) -# define xelf_getehdr_copy(elf, name, copy) \ - name = gelf_getehdr (elf, &(copy)) -# define xelf_newehdr(elf, klass) gelf_newehdr (elf, klass) -# define xelf_update_ehdr(elf, ehdr) gelf_update_ehdr (elf, ehdr) - -# define xelf_getclass(elf) gelf_getclass (elf) - -# define XElf_Phdr_vardef(name) GElf_Phdr name##_mem; GElf_Phdr *name -# define xelf_newphdr(elf, n) gelf_newphdr (elf, n) -# define xelf_getphdr(elf, idx, name) \ - name = gelf_getphdr (elf, idx, &name##_mem) -# define xelf_getphdr_ptr(elf, idx, name) \ - name = &name##_mem -# define xelf_update_phdr(elf, idx, phdr) \ - gelf_update_phdr (elf, idx, phdr) - -# define XElf_Shdr_vardef(name) GElf_Shdr name##_mem; GElf_Shdr *name -# define xelf_getshdr(scn, name) name = gelf_getshdr (scn, &name##_mem) -# define xelf_getshdr_copy(scn, name, copy) \ - name = gelf_getshdr (scn, &(copy)) -# define xelf_update_shdr(scn, shdr) gelf_update_shdr (scn, shdr) - -# define XElf_Sym_vardef(name) GElf_Sym name##_mem; GElf_Sym *name -# define xelf_getsym(data, idx, name) \ - name = gelf_getsym (data, idx, &name##_mem) -# define xelf_getsym_ptr(data, idx, name) \ - name = &name##_mem -# define xelf_getsymshndx(data, ndxdata, idx, name1, name2) \ - name1 = gelf_getsymshndx (data, ndxdata, idx, &name1##_mem, &(name2)) -# define xelf_update_sym(data, idx, sym) gelf_update_sym (data, idx, sym) -# define xelf_update_symshndx(data, ndxdata, idx, name1, name2, datachanged) \ - gelf_update_symshndx (data, ndxdata, idx, name1, name2) - -# define XElf_Versym_vardef(name) GElf_Versym name -# define xelf_getversym_copy(data, idx, name) \ - gelf_getversym (data, idx, &name) - -# define XElf_Dyn_vardef(name) GElf_Dyn name##_mem; GElf_Dyn *name -# define xelf_getdyn(data, idx, name) \ - name = gelf_getdyn (data, idx, &name##_mem) -# define xelf_getdyn_ptr(data, idx, name) \ - name = &name##_mem -# define xelf_update_dyn(data, idx, name) \ - gelf_update_dyn (data, idx, name) - -# define XElf_Rel_vardef(name) GElf_Rel name##_mem; GElf_Rel *name -# define xelf_getrel(data, idx, name) \ - name = gelf_getrel (data, idx, &name##_mem) -# define xelf_getrel_ptr(data, idx, name) \ - name = &name##_mem -# define xelf_update_rel(data, idx, name) \ - gelf_update_rel (data, idx, name) - -# define XElf_Rela_vardef(name) GElf_Rela name##_mem; GElf_Rela *name -# define xelf_getrela(data, idx, name) \ - name = gelf_getrela (data, idx, &name##_mem) -# define xelf_getrela_ptr(data, idx, name) \ - name = &name##_mem -# define xelf_update_rela(data, idx, name) \ - gelf_update_rela (data, idx, name) - -# define XElf_Verdef_vardef(name) GElf_Verdef name##_mem; GElf_Verdef *name -# define xelf_getverdef(data, offset, name) \ - name = gelf_getverdef (data, offset, &name##_mem) - -# define XElf_Verdaux_vardef(name) GElf_Verdaux name##_mem; GElf_Verdaux *name -# define xelf_getverdaux(data, offset, name) \ - name = gelf_getverdaux (data, offset, &name##_mem) - -# define XELF_ST_TYPE(info) GELF_ST_TYPE (info) -# define XELF_ST_BIND(info) GELF_ST_BIND (info) -# define XELF_ST_INFO(bind, type) GELF_ST_INFO (bind, type) -# define XELF_ST_VISIBILITY(info) GELF_ST_VISIBILITY (info) - -# define XELF_R_SYM(info) GELF_R_SYM (info) -# define XELF_R_TYPE(info) GELF_R_TYPE (info) -# define XELF_R_INFO(sym, type) GELF_R_INFO (sym, type) - -# define xelf_fsize(elf, type, cnt) \ - gelf_fsize (elf, type, cnt, EV_CURRENT) -#endif diff --git a/src/ylwrap b/src/ylwrap deleted file mode 100644 index e8abf827..00000000 --- a/src/ylwrap +++ /dev/null @@ -1,154 +0,0 @@ -#! /bin/sh -# ylwrap - wrapper for lex/yacc invocations. -# Copyright 1996, 1997, 1998, 1999, 2001 Free Software Foundation, Inc. -# Written by Tom Tromey <tromey@cygnus.com>. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Usage: -# ylwrap INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]... -# * INPUT is the input file -# * OUTPUT is file PROG generates -# * DESIRED is file we actually want -# * PROGRAM is program to run -# * ARGS are passed to PROG -# Any number of OUTPUT,DESIRED pairs may be used. - -# The input. -input="$1" -shift -case "$input" in - [\\/]* | ?:[\\/]*) - # Absolute path; do nothing. - ;; - *) - # Relative path. Make it absolute. - input="`pwd`/$input" - ;; -esac - -pairlist= -while test "$#" -ne 0; do - if test "$1" = "--"; then - shift - break - fi - pairlist="$pairlist $1" - shift -done - -# The program to run. -prog="$1" -shift -# Make any relative path in $prog absolute. -case "$prog" in - [\\/]* | ?:[\\/]*) ;; - *[\\/]*) prog="`pwd`/$prog" ;; -esac - -# FIXME: add hostname here for parallel makes that run commands on -# other machines. But that might take us over the 14-char limit. -dirname=ylwrap$$ -trap "cd `pwd`; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15 -mkdir $dirname || exit 1 - -cd $dirname - -$prog ${1+"$@"} "$input" -status=$? - -if test $status -eq 0; then - set X $pairlist - shift - first=yes - # Since DOS filename conventions don't allow two dots, - # the DOS version of Bison writes out y_tab.c instead of y.tab.c - # and y_tab.h instead of y.tab.h. Test to see if this is the case. - y_tab_nodot="no" - if test -f y_tab.c || test -f y_tab.h; then - y_tab_nodot="yes" - fi - - # The directory holding the input. - input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'` - # Quote $INPUT_DIR so we can use it in a regexp. - # FIXME: really we should care about more than `.' and `\'. - input_rx=`echo "$input_dir" | sed 's,\\\\,\\\\\\\\,g;s,\\.,\\\\.,g'` - - while test "$#" -ne 0; do - from="$1" - # Handle y_tab.c and y_tab.h output by DOS - if test $y_tab_nodot = "yes"; then - if test $from = "y.tab.c"; then - from="y_tab.c" - else - if test $from = "y.tab.h"; then - from="y_tab.h" - fi - fi - fi - if test -f "$from"; then - # If $2 is an absolute path name, then just use that, - # otherwise prepend `../'. - case "$2" in - [\\/]* | ?:[\\/]*) target="$2";; - *) target="../$2";; - esac - - # Edit out `#line' or `#' directives. - # - # We don't want the resulting debug information to point at - # an absolute srcdir; it is better for it to just mention the - # .y file with no path. - # - # We want to use the real output file name, not yy.lex.c for - # instance. - # - # We want the include guards to be adjusted too. - FROM=`echo "$from" | sed \ - -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\ - -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'` - TARGET=`echo "$2" | sed \ - -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\ - -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'` - sed "/^#/{s,$input_rx,,;s,$from,$2,;s,$FORM,$TO,;}" "$from" >"$target" || - status=$? - else - # A missing file is only an error for the first file. This - # is a blatant hack to let us support using "yacc -d". If -d - # is not specified, we don't want an error when the header - # file is "missing". - if test $first = yes; then - status=1 - fi - fi - shift - shift - first=no - done -else - status=$? -fi - -# Remove the directory. -cd .. -rm -rf $dirname - -exit $status diff --git a/stamp-h1 b/stamp-h1 deleted file mode 100644 index 4547fe1b..00000000 --- a/stamp-h1 +++ /dev/null @@ -1 +0,0 @@ -timestamp for config.h diff --git a/tests/ChangeLog b/tests/ChangeLog deleted file mode 100644 index 05e36331..00000000 --- a/tests/ChangeLog +++ /dev/null @@ -1,41 +0,0 @@ -2004-09-25 Ulrich Drepper <drepper@redhat.com> - - * asm-tst4.c (main): Add LD_LIBRARY_PATH to elflint invocation. - * asm-tst5.c (main): Likewise. - * asm-tst6.c (main): Likewise. - -2004-01-17 Ulrich Drepper <drepper@redhat.com> - - * Makefile.am: Support building with mudflap. - -2004-01-12 Ulrich Drepper <drepper@redhat.com> - - * get-aranges.c: Rewrite to use libdw. - * Makefile.am: Reenable get-aranges test. - -2004-01-11 Ulrich Drepper <drepper@redhat.com> - - * get-lines.c: New file. - * get-files.c: Adjust for libdw. - * run-get-files.sh: Adjust expected result. - * run-get-lines.sh: Likewise. - * Makefile.am: Run get-lines test. Don't run get-aranges and - get-ciefde test for now. - - * show-abbrev.c: Adjust call to dwarf_getabbrevattr after interface - change. Print attribute offset information. - * run-show-abbrev.sh: Adjust expected output. - -2004-01-09 Ulrich Drepper <drepper@redhat.com> - - * show-abbrev.c: Adjust call to dwarf_nextcu after interface change. - * show-die-info.c: Likewise. - * run-show-die-info.sh: Adjust expected output. - -2003-08-13 Ulrich Drepper <drepper@redhat.com> - - * Makefile.in: Depend on libebl.a, not libebl.so. - -2003-08-11 Ulrich Drepper <drepper@redhat.com> - - * Moved to CVS archive. diff --git a/tests/Makefile b/tests/Makefile deleted file mode 100644 index 14b0e335..00000000 --- a/tests/Makefile +++ /dev/null @@ -1,794 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# tests/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - -SOURCES = arextract.c arsymtest.c asm-tst1.c asm-tst2.c asm-tst3.c asm-tst4.c asm-tst5.c asm-tst6.c asm-tst7.c asm-tst8.c asm-tst9.c ecp.c get-aranges.c get-files.c get-lines.c get-pubnames.c hash.c msg_tst.c newfile.c newscn.c saridx.c scnnames.c sectiondump.c show-abbrev.c show-die-info.c showptable.c test-nlist.c update1.c update2.c update3.c update4.c - -srcdir = . -top_srcdir = .. - -pkgdatadir = $(datadir)/elfutils -pkglibdir = $(libdir)/elfutils -pkgincludedir = $(includedir)/elfutils -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = /usr/bin/install -c -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = i686-pc-linux-gnu -host_triplet = i686-pc-linux-gnu -noinst_PROGRAMS = arextract$(EXEEXT) arsymtest$(EXEEXT) \ - newfile$(EXEEXT) saridx$(EXEEXT) scnnames$(EXEEXT) \ - sectiondump$(EXEEXT) showptable$(EXEEXT) update1$(EXEEXT) \ - update2$(EXEEXT) update3$(EXEEXT) update4$(EXEEXT) \ - test-nlist$(EXEEXT) show-die-info$(EXEEXT) get-files$(EXEEXT) \ - get-lines$(EXEEXT) get-pubnames$(EXEEXT) get-aranges$(EXEEXT) \ - show-abbrev$(EXEEXT) hash$(EXEEXT) asm-tst1$(EXEEXT) \ - asm-tst2$(EXEEXT) asm-tst3$(EXEEXT) asm-tst4$(EXEEXT) \ - asm-tst5$(EXEEXT) asm-tst6$(EXEEXT) asm-tst7$(EXEEXT) \ - asm-tst8$(EXEEXT) asm-tst9$(EXEEXT) msg_tst$(EXEEXT) \ - newscn$(EXEEXT) ecp$(EXEEXT) -subdir = tests -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -PROGRAMS = $(noinst_PROGRAMS) -arextract_SOURCES = arextract.c -arextract_OBJECTS = arextract.$(OBJEXT) -am__DEPENDENCIES_1 = ../libelf/libelf.so -#am__DEPENDENCIES_1 = ../libelf/libelf.a -arextract_DEPENDENCIES = $(am__DEPENDENCIES_1) -arsymtest_SOURCES = arsymtest.c -arsymtest_OBJECTS = arsymtest.$(OBJEXT) -arsymtest_DEPENDENCIES = $(am__DEPENDENCIES_1) -asm_tst1_SOURCES = asm-tst1.c -asm_tst1_OBJECTS = asm-tst1.$(OBJEXT) -am__DEPENDENCIES_2 = ../libasm/libasm.so -#am__DEPENDENCIES_2 = ../libasm/libasm.a -am__DEPENDENCIES_3 = ../libebl/libebl.a -asm_tst1_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \ - $(am__DEPENDENCIES_1) -asm_tst2_SOURCES = asm-tst2.c -asm_tst2_OBJECTS = asm-tst2.$(OBJEXT) -asm_tst2_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \ - $(am__DEPENDENCIES_1) -asm_tst3_SOURCES = asm-tst3.c -asm_tst3_OBJECTS = asm-tst3.$(OBJEXT) -asm_tst3_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \ - $(am__DEPENDENCIES_1) -asm_tst4_SOURCES = asm-tst4.c -asm_tst4_OBJECTS = asm-tst4.$(OBJEXT) -asm_tst4_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \ - $(am__DEPENDENCIES_1) -asm_tst5_SOURCES = asm-tst5.c -asm_tst5_OBJECTS = asm-tst5.$(OBJEXT) -asm_tst5_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \ - $(am__DEPENDENCIES_1) -asm_tst6_SOURCES = asm-tst6.c -asm_tst6_OBJECTS = asm-tst6.$(OBJEXT) -asm_tst6_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \ - $(am__DEPENDENCIES_1) -asm_tst7_SOURCES = asm-tst7.c -asm_tst7_OBJECTS = asm-tst7.$(OBJEXT) -asm_tst7_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \ - $(am__DEPENDENCIES_1) -asm_tst8_SOURCES = asm-tst8.c -asm_tst8_OBJECTS = asm-tst8.$(OBJEXT) -asm_tst8_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \ - $(am__DEPENDENCIES_1) -asm_tst9_SOURCES = asm-tst9.c -asm_tst9_OBJECTS = asm-tst9.$(OBJEXT) -asm_tst9_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \ - $(am__DEPENDENCIES_1) -ecp_SOURCES = ecp.c -ecp_OBJECTS = ecp.$(OBJEXT) -ecp_DEPENDENCIES = $(am__DEPENDENCIES_1) -get_aranges_SOURCES = get-aranges.c -get_aranges_OBJECTS = get-aranges.$(OBJEXT) -am__DEPENDENCIES_4 = ../libdw/libdw.so -#am__DEPENDENCIES_4 = ../libdw/libdw.a -get_aranges_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_1) -get_files_SOURCES = get-files.c -get_files_OBJECTS = get-files.$(OBJEXT) -get_files_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_1) -get_lines_SOURCES = get-lines.c -get_lines_OBJECTS = get-lines.$(OBJEXT) -get_lines_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_1) -get_pubnames_SOURCES = get-pubnames.c -get_pubnames_OBJECTS = get-pubnames.$(OBJEXT) -get_pubnames_DEPENDENCIES = $(am__DEPENDENCIES_4) \ - $(am__DEPENDENCIES_1) -hash_SOURCES = hash.c -hash_OBJECTS = hash.$(OBJEXT) -hash_DEPENDENCIES = $(am__DEPENDENCIES_1) -msg_tst_SOURCES = msg_tst.c -msg_tst_OBJECTS = msg_tst.$(OBJEXT) -msg_tst_DEPENDENCIES = $(am__DEPENDENCIES_1) -newfile_SOURCES = newfile.c -newfile_OBJECTS = newfile.$(OBJEXT) -newfile_DEPENDENCIES = $(am__DEPENDENCIES_1) -newscn_SOURCES = newscn.c -newscn_OBJECTS = newscn.$(OBJEXT) -newscn_DEPENDENCIES = $(am__DEPENDENCIES_1) -saridx_SOURCES = saridx.c -saridx_OBJECTS = saridx.$(OBJEXT) -saridx_DEPENDENCIES = $(am__DEPENDENCIES_1) -scnnames_SOURCES = scnnames.c -scnnames_OBJECTS = scnnames.$(OBJEXT) -scnnames_DEPENDENCIES = $(am__DEPENDENCIES_1) -sectiondump_SOURCES = sectiondump.c -sectiondump_OBJECTS = sectiondump.$(OBJEXT) -sectiondump_DEPENDENCIES = $(am__DEPENDENCIES_1) -show_abbrev_SOURCES = show-abbrev.c -show_abbrev_OBJECTS = show-abbrev.$(OBJEXT) -show_abbrev_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_1) -show_die_info_SOURCES = show-die-info.c -show_die_info_OBJECTS = show-die-info.$(OBJEXT) -show_die_info_DEPENDENCIES = $(am__DEPENDENCIES_4) \ - $(am__DEPENDENCIES_1) -showptable_SOURCES = showptable.c -showptable_OBJECTS = showptable.$(OBJEXT) -showptable_DEPENDENCIES = $(am__DEPENDENCIES_1) -test_nlist_SOURCES = test-nlist.c -test_nlist_OBJECTS = test-nlist.$(OBJEXT) -test_nlist_DEPENDENCIES = $(am__DEPENDENCIES_1) -update1_SOURCES = update1.c -update1_OBJECTS = update1.$(OBJEXT) -update1_DEPENDENCIES = $(am__DEPENDENCIES_1) -update2_SOURCES = update2.c -update2_OBJECTS = update2.$(OBJEXT) -update2_DEPENDENCIES = $(am__DEPENDENCIES_1) -update3_SOURCES = update3.c -update3_OBJECTS = update3.$(OBJEXT) -update3_DEPENDENCIES = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_1) -update4_SOURCES = update4.c -update4_OBJECTS = update4.$(OBJEXT) -update4_DEPENDENCIES = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_1) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = arextract.c arsymtest.c asm-tst1.c asm-tst2.c asm-tst3.c \ - asm-tst4.c asm-tst5.c asm-tst6.c asm-tst7.c asm-tst8.c \ - asm-tst9.c ecp.c get-aranges.c get-files.c get-lines.c \ - get-pubnames.c hash.c msg_tst.c newfile.c newscn.c saridx.c \ - scnnames.c sectiondump.c show-abbrev.c show-die-info.c \ - showptable.c test-nlist.c update1.c update2.c update3.c \ - update4.c -DIST_SOURCES = arextract.c arsymtest.c asm-tst1.c asm-tst2.c \ - asm-tst3.c asm-tst4.c asm-tst5.c asm-tst6.c asm-tst7.c \ - asm-tst8.c asm-tst9.c ecp.c get-aranges.c get-files.c \ - get-lines.c get-pubnames.c hash.c msg_tst.c newfile.c newscn.c \ - saridx.c scnnames.c sectiondump.c show-abbrev.c \ - show-die-info.c showptable.c test-nlist.c update1.c update2.c \ - update3.c update4.c -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run aclocal-1.9 -AMDEP_FALSE = # -AMDEP_TRUE = -AMTAR = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run tar -AUTOCONF = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoconf -AUTOHEADER = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run autoheader -AUTOMAKE = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run automake-1.9 -AWK = gawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -CPP = gcc -E -CPPFLAGS = -CYGPATH_W = echo -DATADIRNAME = ${prefix}/share -DEFS = -DHAVE_CONFIG_H -D_GNU_SOURCE -DEPDIR = .deps -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = grep -E -EXEEXT = -GMSGFMT = /usr/bin/msgfmt -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s -INTLLIBS = -LDFLAGS = -LEX = flex -LEXLIB = -lfl -LEX_OUTPUT_ROOT = lex.yy -LIBICONV = -liconv -LIBINTL = -LIBOBJS = -LIBS = -LOCALEDIR = ${prefix}/share -LTLIBICONV = -liconv -LTLIBINTL = -LTLIBOBJS = -MAKEINFO = ${SHELL} /work/elfutils/stock/elfutils-0.97/config/missing --run makeinfo -MKINSTALLDIRS = config/mkinstalldirs -MSGFMT = /usr/bin/msgfmt -MSGMERGE = /usr/bin/msgmerge -MUDFLAP_FALSE = -MUDFLAP_TRUE = # -NATIVE_LD_FALSE = -NATIVE_LD_TRUE = # -OBJEXT = o -PACKAGE = elfutils -PACKAGE_BUGREPORT = http://bugzilla.redhat.com/bugzilla/ -PACKAGE_NAME = Red Hat elfutils -PACKAGE_STRING = Red Hat elfutils 0.97 -PACKAGE_TARNAME = elfutils -PACKAGE_VERSION = 0.97 -PATH_SEPARATOR = : -POSUB = po -RANLIB = ranlib -SET_MAKE = -SHELL = /bin/sh -STRIP = -USE_NLS = yes -VERSION = 0.97 -XGETTEXT = /usr/bin/xgettext -YACC = bison -y -ac_ct_CC = gcc -ac_ct_RANLIB = ranlib -ac_ct_STRIP = -am__fastdepCC_FALSE = # -am__fastdepCC_TRUE = -am__include = include -am__leading_dot = . -am__quote = -am__tar = ${AMTAR} chof - "$$tardir" -am__untar = ${AMTAR} xf - -base_cpu = none -bindir = ${exec_prefix}/bin -build = i686-pc-linux-gnu -build_alias = -build_cpu = i686 -build_os = linux-gnu -build_vendor = pc -datadir = ${prefix}/share -exec_prefix = ${prefix} -host = i686-pc-linux-gnu -host_alias = -host_cpu = i686 -host_os = linux-gnu -host_vendor = pc -includedir = ${prefix}/include -infodir = ${prefix}/info -install_sh = /work/elfutils/stock/elfutils-0.97/config/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localstatedir = ${prefix}/var -mandir = ${prefix}/man -mkdir_p = mkdir -p -- -oldincludedir = /usr/include -prefix = /work/elfutils/google/linux-install-elfutils-0.97/ -program_transform_name = s,x,x, -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -sysconfdir = ${prefix}/etc -target_alias = -AM_CFLAGS = -Wall -Werror -std=gnu99 -AM_LDFLAGS = -Wl,-rpath,\$$ORIGIN/../libasm:\$$ORIGIN/../libdw:\$$ORIGIN/../libebl:\$$ORIGIN/../libelf -INCLUDES = -I$(top_srcdir)/libasm -I$(top_srcdir)/libdw \ - -I$(top_srcdir)/libebl -I$(top_srcdir)/libelf \ - -I$(top_srcdir)/lib -I.. - -# get-ciefde -TESTS = run-arextract.sh run-arsymtest.sh newfile test-nlist \ - update1 update2 update3 update4 \ - run-show-die-info.sh run-get-files.sh run-get-lines.sh \ - run-get-pubnames.sh run-get-aranges.sh \ - run-show-abbrev.sh hash asm-tst1 asm-tst2 \ - asm-tst3 asm-tst4 asm-tst5 asm-tst6 asm-tst7 asm-tst8 asm-tst9 \ - msg_tst newscn run-strip-test.sh run-strip-test2.sh \ - run-strip-test3.sh run-ecp-test.sh run-ecp-test2.sh - -# run-show-ciefde.sh -EXTRA_DIST = run-arextract.sh run-arsymtest.sh \ - run-show-die-info.sh run-get-files.sh run-get-lines.sh \ - run-get-pubnames.sh run-get-aranges.sh \ - run-show-ciefde.sh run-show-abbrev.sh run-strip-test.sh \ - run-strip-test2.sh run-ecp-test.sh run-ecp-test2.sh \ - testfile.bz2 testfile2.bz2 testfile3.bz2 testfile4.bz2 \ - testfile5.bz2 testfile6.bz2 testfile7.bz2 testfile8.bz2 \ - testfile9.bz2 testfile10.bz2 testfile11.bz2 testfile12.bz2 \ - testfile13.bz2 run-strip-test3.sh - -libdw = ../libdw/libdw.so -#libdw = ../libdw/libdw.a -libelf = ../libelf/libelf.so -#libelf = ../libelf/libelf.a -libasm = ../libasm/libasm.so -#libasm = ../libasm/libasm.a -libebl = ../libebl/libebl.a -arextract_LDADD = $(libelf) -arsymtest_LDADD = $(libelf) -newfile_LDADD = $(libelf) -saridx_LDADD = $(libelf) -scnnames_LDADD = $(libelf) -sectiondump_LDADD = $(libelf) -showptable_LDADD = $(libelf) -hash_LDADD = $(libelf) -test_nlist_LDADD = $(libelf) -msg_tst_LDADD = $(libelf) -newscn_LDADD = $(libelf) -ecp_LDADD = $(libelf) -update1_LDADD = $(libelf) -update2_LDADD = $(libelf) -update3_LDADD = $(libebl) $(libelf) -update4_LDADD = $(libebl) $(libelf) -show_die_info_LDADD = $(libdw) $(libelf) -get_pubnames_LDADD = $(libdw) $(libelf) -show_abbrev_LDADD = $(libdw) $(libelf) -get_lines_LDADD = $(libdw) $(libelf) -get_files_LDADD = $(libdw) $(libelf) -get_aranges_LDADD = $(libdw) $(libelf) -#show_ciefde_LDADD = ../libdwarf/libdwarf.so $(libelf) -asm_tst1_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst2_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst3_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst4_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst5_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst6_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst7_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst8_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst9_LDADD = $(libasm) $(libebl) $(libelf) -CLEANFILES = xxx -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits tests/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits tests/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -clean-noinstPROGRAMS: - -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) -arextract$(EXEEXT): $(arextract_OBJECTS) $(arextract_DEPENDENCIES) - @rm -f arextract$(EXEEXT) - $(LINK) $(arextract_LDFLAGS) $(arextract_OBJECTS) $(arextract_LDADD) $(LIBS) -arsymtest$(EXEEXT): $(arsymtest_OBJECTS) $(arsymtest_DEPENDENCIES) - @rm -f arsymtest$(EXEEXT) - $(LINK) $(arsymtest_LDFLAGS) $(arsymtest_OBJECTS) $(arsymtest_LDADD) $(LIBS) -asm-tst1$(EXEEXT): $(asm_tst1_OBJECTS) $(asm_tst1_DEPENDENCIES) - @rm -f asm-tst1$(EXEEXT) - $(LINK) $(asm_tst1_LDFLAGS) $(asm_tst1_OBJECTS) $(asm_tst1_LDADD) $(LIBS) -asm-tst2$(EXEEXT): $(asm_tst2_OBJECTS) $(asm_tst2_DEPENDENCIES) - @rm -f asm-tst2$(EXEEXT) - $(LINK) $(asm_tst2_LDFLAGS) $(asm_tst2_OBJECTS) $(asm_tst2_LDADD) $(LIBS) -asm-tst3$(EXEEXT): $(asm_tst3_OBJECTS) $(asm_tst3_DEPENDENCIES) - @rm -f asm-tst3$(EXEEXT) - $(LINK) $(asm_tst3_LDFLAGS) $(asm_tst3_OBJECTS) $(asm_tst3_LDADD) $(LIBS) -asm-tst4$(EXEEXT): $(asm_tst4_OBJECTS) $(asm_tst4_DEPENDENCIES) - @rm -f asm-tst4$(EXEEXT) - $(LINK) $(asm_tst4_LDFLAGS) $(asm_tst4_OBJECTS) $(asm_tst4_LDADD) $(LIBS) -asm-tst5$(EXEEXT): $(asm_tst5_OBJECTS) $(asm_tst5_DEPENDENCIES) - @rm -f asm-tst5$(EXEEXT) - $(LINK) $(asm_tst5_LDFLAGS) $(asm_tst5_OBJECTS) $(asm_tst5_LDADD) $(LIBS) -asm-tst6$(EXEEXT): $(asm_tst6_OBJECTS) $(asm_tst6_DEPENDENCIES) - @rm -f asm-tst6$(EXEEXT) - $(LINK) $(asm_tst6_LDFLAGS) $(asm_tst6_OBJECTS) $(asm_tst6_LDADD) $(LIBS) -asm-tst7$(EXEEXT): $(asm_tst7_OBJECTS) $(asm_tst7_DEPENDENCIES) - @rm -f asm-tst7$(EXEEXT) - $(LINK) $(asm_tst7_LDFLAGS) $(asm_tst7_OBJECTS) $(asm_tst7_LDADD) $(LIBS) -asm-tst8$(EXEEXT): $(asm_tst8_OBJECTS) $(asm_tst8_DEPENDENCIES) - @rm -f asm-tst8$(EXEEXT) - $(LINK) $(asm_tst8_LDFLAGS) $(asm_tst8_OBJECTS) $(asm_tst8_LDADD) $(LIBS) -asm-tst9$(EXEEXT): $(asm_tst9_OBJECTS) $(asm_tst9_DEPENDENCIES) - @rm -f asm-tst9$(EXEEXT) - $(LINK) $(asm_tst9_LDFLAGS) $(asm_tst9_OBJECTS) $(asm_tst9_LDADD) $(LIBS) -ecp$(EXEEXT): $(ecp_OBJECTS) $(ecp_DEPENDENCIES) - @rm -f ecp$(EXEEXT) - $(LINK) $(ecp_LDFLAGS) $(ecp_OBJECTS) $(ecp_LDADD) $(LIBS) -get-aranges$(EXEEXT): $(get_aranges_OBJECTS) $(get_aranges_DEPENDENCIES) - @rm -f get-aranges$(EXEEXT) - $(LINK) $(get_aranges_LDFLAGS) $(get_aranges_OBJECTS) $(get_aranges_LDADD) $(LIBS) -get-files$(EXEEXT): $(get_files_OBJECTS) $(get_files_DEPENDENCIES) - @rm -f get-files$(EXEEXT) - $(LINK) $(get_files_LDFLAGS) $(get_files_OBJECTS) $(get_files_LDADD) $(LIBS) -get-lines$(EXEEXT): $(get_lines_OBJECTS) $(get_lines_DEPENDENCIES) - @rm -f get-lines$(EXEEXT) - $(LINK) $(get_lines_LDFLAGS) $(get_lines_OBJECTS) $(get_lines_LDADD) $(LIBS) -get-pubnames$(EXEEXT): $(get_pubnames_OBJECTS) $(get_pubnames_DEPENDENCIES) - @rm -f get-pubnames$(EXEEXT) - $(LINK) $(get_pubnames_LDFLAGS) $(get_pubnames_OBJECTS) $(get_pubnames_LDADD) $(LIBS) -hash$(EXEEXT): $(hash_OBJECTS) $(hash_DEPENDENCIES) - @rm -f hash$(EXEEXT) - $(LINK) $(hash_LDFLAGS) $(hash_OBJECTS) $(hash_LDADD) $(LIBS) -msg_tst$(EXEEXT): $(msg_tst_OBJECTS) $(msg_tst_DEPENDENCIES) - @rm -f msg_tst$(EXEEXT) - $(LINK) $(msg_tst_LDFLAGS) $(msg_tst_OBJECTS) $(msg_tst_LDADD) $(LIBS) -newfile$(EXEEXT): $(newfile_OBJECTS) $(newfile_DEPENDENCIES) - @rm -f newfile$(EXEEXT) - $(LINK) $(newfile_LDFLAGS) $(newfile_OBJECTS) $(newfile_LDADD) $(LIBS) -newscn$(EXEEXT): $(newscn_OBJECTS) $(newscn_DEPENDENCIES) - @rm -f newscn$(EXEEXT) - $(LINK) $(newscn_LDFLAGS) $(newscn_OBJECTS) $(newscn_LDADD) $(LIBS) -saridx$(EXEEXT): $(saridx_OBJECTS) $(saridx_DEPENDENCIES) - @rm -f saridx$(EXEEXT) - $(LINK) $(saridx_LDFLAGS) $(saridx_OBJECTS) $(saridx_LDADD) $(LIBS) -scnnames$(EXEEXT): $(scnnames_OBJECTS) $(scnnames_DEPENDENCIES) - @rm -f scnnames$(EXEEXT) - $(LINK) $(scnnames_LDFLAGS) $(scnnames_OBJECTS) $(scnnames_LDADD) $(LIBS) -sectiondump$(EXEEXT): $(sectiondump_OBJECTS) $(sectiondump_DEPENDENCIES) - @rm -f sectiondump$(EXEEXT) - $(LINK) $(sectiondump_LDFLAGS) $(sectiondump_OBJECTS) $(sectiondump_LDADD) $(LIBS) -show-abbrev$(EXEEXT): $(show_abbrev_OBJECTS) $(show_abbrev_DEPENDENCIES) - @rm -f show-abbrev$(EXEEXT) - $(LINK) $(show_abbrev_LDFLAGS) $(show_abbrev_OBJECTS) $(show_abbrev_LDADD) $(LIBS) -show-die-info$(EXEEXT): $(show_die_info_OBJECTS) $(show_die_info_DEPENDENCIES) - @rm -f show-die-info$(EXEEXT) - $(LINK) $(show_die_info_LDFLAGS) $(show_die_info_OBJECTS) $(show_die_info_LDADD) $(LIBS) -showptable$(EXEEXT): $(showptable_OBJECTS) $(showptable_DEPENDENCIES) - @rm -f showptable$(EXEEXT) - $(LINK) $(showptable_LDFLAGS) $(showptable_OBJECTS) $(showptable_LDADD) $(LIBS) -test-nlist$(EXEEXT): $(test_nlist_OBJECTS) $(test_nlist_DEPENDENCIES) - @rm -f test-nlist$(EXEEXT) - $(LINK) $(test_nlist_LDFLAGS) $(test_nlist_OBJECTS) $(test_nlist_LDADD) $(LIBS) -update1$(EXEEXT): $(update1_OBJECTS) $(update1_DEPENDENCIES) - @rm -f update1$(EXEEXT) - $(LINK) $(update1_LDFLAGS) $(update1_OBJECTS) $(update1_LDADD) $(LIBS) -update2$(EXEEXT): $(update2_OBJECTS) $(update2_DEPENDENCIES) - @rm -f update2$(EXEEXT) - $(LINK) $(update2_LDFLAGS) $(update2_OBJECTS) $(update2_LDADD) $(LIBS) -update3$(EXEEXT): $(update3_OBJECTS) $(update3_DEPENDENCIES) - @rm -f update3$(EXEEXT) - $(LINK) $(update3_LDFLAGS) $(update3_OBJECTS) $(update3_LDADD) $(LIBS) -update4$(EXEEXT): $(update4_OBJECTS) $(update4_DEPENDENCIES) - @rm -f update4$(EXEEXT) - $(LINK) $(update4_LDFLAGS) $(update4_OBJECTS) $(update4_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -include ./$(DEPDIR)/arextract.Po -include ./$(DEPDIR)/arsymtest.Po -include ./$(DEPDIR)/asm-tst1.Po -include ./$(DEPDIR)/asm-tst2.Po -include ./$(DEPDIR)/asm-tst3.Po -include ./$(DEPDIR)/asm-tst4.Po -include ./$(DEPDIR)/asm-tst5.Po -include ./$(DEPDIR)/asm-tst6.Po -include ./$(DEPDIR)/asm-tst7.Po -include ./$(DEPDIR)/asm-tst8.Po -include ./$(DEPDIR)/asm-tst9.Po -include ./$(DEPDIR)/ecp.Po -include ./$(DEPDIR)/get-aranges.Po -include ./$(DEPDIR)/get-files.Po -include ./$(DEPDIR)/get-lines.Po -include ./$(DEPDIR)/get-pubnames.Po -include ./$(DEPDIR)/hash.Po -include ./$(DEPDIR)/msg_tst.Po -include ./$(DEPDIR)/newfile.Po -include ./$(DEPDIR)/newscn.Po -include ./$(DEPDIR)/saridx.Po -include ./$(DEPDIR)/scnnames.Po -include ./$(DEPDIR)/sectiondump.Po -include ./$(DEPDIR)/show-abbrev.Po -include ./$(DEPDIR)/show-die-info.Po -include ./$(DEPDIR)/showptable.Po -include ./$(DEPDIR)/test-nlist.Po -include ./$(DEPDIR)/update1.Po -include ./$(DEPDIR)/update2.Po -include ./$(DEPDIR)/update3.Po -include ./$(DEPDIR)/update4.Po - -.c.o: - if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ - then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c $< - -.c.obj: - if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ - then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -# source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(COMPILE) -c `$(CYGPATH_W) '$<'` -uninstall-info-am: - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list='$(TESTS)'; \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *" $$tst "*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - echo "XPASS: $$tst"; \ - ;; \ - *) \ - echo "PASS: $$tst"; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *" $$tst "*) \ - xfail=`expr $$xfail + 1`; \ - echo "XFAIL: $$tst"; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - echo "SKIP: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all tests failed"; \ - else \ - banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - skipped="($$skip tests were not run)"; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - test -z "$$skipped" || echo "$$skipped"; \ - test -z "$$report" || echo "$$report"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0; \ - else :; fi - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-info-am - -.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ - clean-generic clean-noinstPROGRAMS ctags distclean \ - distclean-compile distclean-generic distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-exec install-exec-am \ - install-info install-info-am install-man install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-info-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tests/Makefile.am b/tests/Makefile.am deleted file mode 100644 index 1e4f9a8d..00000000 --- a/tests/Makefile.am +++ /dev/null @@ -1,98 +0,0 @@ -## Process this file with automake to create Makefile.in -## Configure input file for elfutils. -## -## Copyright (C) 1996-2002, 2003, 2004 Red Hat, Inc. -## -## This program is Open Source software; you can redistribute it and/or -## modify it under the terms of the Open Software License version 1.0 as -## published by the Open Source Initiative. -## -## You should have received a copy of the Open Software License along -## with this program; if not, you may obtain a copy of the Open Software -## License version 1.0 from http://www.opensource.org/licenses/osl.php or -## by writing the Open Source Initiative c/o Lawrence Rosen, Esq., -## 3001 King Ranch Road, Ukiah, CA 95482. -## -DEFS = -DHAVE_CONFIG_H -D_GNU_SOURCE -AM_CFLAGS = -Wall -Werror -std=gnu99 -if !MUDFLAP -AM_LDFLAGS = -Wl,-rpath,\$$ORIGIN/../libasm:\$$ORIGIN/../libdw:\$$ORIGIN/../libebl:\$$ORIGIN/../libelf -endif -INCLUDES = -I$(top_srcdir)/libasm -I$(top_srcdir)/libdw \ - -I$(top_srcdir)/libebl -I$(top_srcdir)/libelf \ - -I$(top_srcdir)/lib -I.. - -noinst_PROGRAMS = arextract arsymtest newfile saridx scnnames sectiondump \ - showptable update1 update2 update3 update4 test-nlist \ - show-die-info get-files get-lines get-pubnames \ - get-aranges \ - show-abbrev hash asm-tst1 asm-tst2 asm-tst3 \ - asm-tst4 asm-tst5 asm-tst6 asm-tst7 asm-tst8 asm-tst9 \ - msg_tst newscn ecp -# get-ciefde - -TESTS = run-arextract.sh run-arsymtest.sh newfile test-nlist \ - update1 update2 update3 update4 \ - run-show-die-info.sh run-get-files.sh run-get-lines.sh \ - run-get-pubnames.sh run-get-aranges.sh \ - run-show-abbrev.sh hash asm-tst1 asm-tst2 \ - asm-tst3 asm-tst4 asm-tst5 asm-tst6 asm-tst7 asm-tst8 asm-tst9 \ - msg_tst newscn run-strip-test.sh run-strip-test2.sh \ - run-strip-test3.sh run-ecp-test.sh run-ecp-test2.sh -# run-show-ciefde.sh - -EXTRA_DIST = run-arextract.sh run-arsymtest.sh \ - run-show-die-info.sh run-get-files.sh run-get-lines.sh \ - run-get-pubnames.sh run-get-aranges.sh \ - run-show-ciefde.sh run-show-abbrev.sh run-strip-test.sh \ - run-strip-test2.sh run-ecp-test.sh run-ecp-test2.sh \ - testfile.bz2 testfile2.bz2 testfile3.bz2 testfile4.bz2 \ - testfile5.bz2 testfile6.bz2 testfile7.bz2 testfile8.bz2 \ - testfile9.bz2 testfile10.bz2 testfile11.bz2 testfile12.bz2 \ - testfile13.bz2 run-strip-test3.sh - -if MUDFLAP -libdw = ../libdw/libdw.a -libelf = ../libelf/libelf.a -libasm = ../libasm/libasm.a -else -libdw = ../libdw/libdw.so -libelf = ../libelf/libelf.so -libasm = ../libasm/libasm.so -endif -libebl = ../libebl/libebl.a - -arextract_LDADD = $(libelf) -arsymtest_LDADD = $(libelf) -newfile_LDADD = $(libelf) -saridx_LDADD = $(libelf) -scnnames_LDADD = $(libelf) -sectiondump_LDADD = $(libelf) -showptable_LDADD = $(libelf) -hash_LDADD = $(libelf) -test_nlist_LDADD = $(libelf) -msg_tst_LDADD = $(libelf) -newscn_LDADD = $(libelf) -ecp_LDADD = $(libelf) -update1_LDADD = $(libelf) -update2_LDADD = $(libelf) -update3_LDADD = $(libebl) $(libelf) -update4_LDADD = $(libebl) $(libelf) -show_die_info_LDADD = $(libdw) $(libelf) -get_pubnames_LDADD = $(libdw) $(libelf) -show_abbrev_LDADD = $(libdw) $(libelf) -get_lines_LDADD = $(libdw) $(libelf) -get_files_LDADD = $(libdw) $(libelf) -get_aranges_LDADD = $(libdw) $(libelf) -#show_ciefde_LDADD = ../libdwarf/libdwarf.so $(libelf) -asm_tst1_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst2_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst3_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst4_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst5_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst6_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst7_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst8_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst9_LDADD = $(libasm) $(libebl) $(libelf) - -CLEANFILES = xxx diff --git a/tests/Makefile.in b/tests/Makefile.in deleted file mode 100644 index c5dd6529..00000000 --- a/tests/Makefile.in +++ /dev/null @@ -1,794 +0,0 @@ -# Makefile.in generated by automake 1.9.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -SOURCES = arextract.c arsymtest.c asm-tst1.c asm-tst2.c asm-tst3.c asm-tst4.c asm-tst5.c asm-tst6.c asm-tst7.c asm-tst8.c asm-tst9.c ecp.c get-aranges.c get-files.c get-lines.c get-pubnames.c hash.c msg_tst.c newfile.c newscn.c saridx.c scnnames.c sectiondump.c show-abbrev.c show-die-info.c showptable.c test-nlist.c update1.c update2.c update3.c update4.c - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -noinst_PROGRAMS = arextract$(EXEEXT) arsymtest$(EXEEXT) \ - newfile$(EXEEXT) saridx$(EXEEXT) scnnames$(EXEEXT) \ - sectiondump$(EXEEXT) showptable$(EXEEXT) update1$(EXEEXT) \ - update2$(EXEEXT) update3$(EXEEXT) update4$(EXEEXT) \ - test-nlist$(EXEEXT) show-die-info$(EXEEXT) get-files$(EXEEXT) \ - get-lines$(EXEEXT) get-pubnames$(EXEEXT) get-aranges$(EXEEXT) \ - show-abbrev$(EXEEXT) hash$(EXEEXT) asm-tst1$(EXEEXT) \ - asm-tst2$(EXEEXT) asm-tst3$(EXEEXT) asm-tst4$(EXEEXT) \ - asm-tst5$(EXEEXT) asm-tst6$(EXEEXT) asm-tst7$(EXEEXT) \ - asm-tst8$(EXEEXT) asm-tst9$(EXEEXT) msg_tst$(EXEEXT) \ - newscn$(EXEEXT) ecp$(EXEEXT) -subdir = tests -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -PROGRAMS = $(noinst_PROGRAMS) -arextract_SOURCES = arextract.c -arextract_OBJECTS = arextract.$(OBJEXT) -@MUDFLAP_FALSE@am__DEPENDENCIES_1 = ../libelf/libelf.so -@MUDFLAP_TRUE@am__DEPENDENCIES_1 = ../libelf/libelf.a -arextract_DEPENDENCIES = $(am__DEPENDENCIES_1) -arsymtest_SOURCES = arsymtest.c -arsymtest_OBJECTS = arsymtest.$(OBJEXT) -arsymtest_DEPENDENCIES = $(am__DEPENDENCIES_1) -asm_tst1_SOURCES = asm-tst1.c -asm_tst1_OBJECTS = asm-tst1.$(OBJEXT) -@MUDFLAP_FALSE@am__DEPENDENCIES_2 = ../libasm/libasm.so -@MUDFLAP_TRUE@am__DEPENDENCIES_2 = ../libasm/libasm.a -am__DEPENDENCIES_3 = ../libebl/libebl.a -asm_tst1_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \ - $(am__DEPENDENCIES_1) -asm_tst2_SOURCES = asm-tst2.c -asm_tst2_OBJECTS = asm-tst2.$(OBJEXT) -asm_tst2_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \ - $(am__DEPENDENCIES_1) -asm_tst3_SOURCES = asm-tst3.c -asm_tst3_OBJECTS = asm-tst3.$(OBJEXT) -asm_tst3_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \ - $(am__DEPENDENCIES_1) -asm_tst4_SOURCES = asm-tst4.c -asm_tst4_OBJECTS = asm-tst4.$(OBJEXT) -asm_tst4_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \ - $(am__DEPENDENCIES_1) -asm_tst5_SOURCES = asm-tst5.c -asm_tst5_OBJECTS = asm-tst5.$(OBJEXT) -asm_tst5_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \ - $(am__DEPENDENCIES_1) -asm_tst6_SOURCES = asm-tst6.c -asm_tst6_OBJECTS = asm-tst6.$(OBJEXT) -asm_tst6_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \ - $(am__DEPENDENCIES_1) -asm_tst7_SOURCES = asm-tst7.c -asm_tst7_OBJECTS = asm-tst7.$(OBJEXT) -asm_tst7_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \ - $(am__DEPENDENCIES_1) -asm_tst8_SOURCES = asm-tst8.c -asm_tst8_OBJECTS = asm-tst8.$(OBJEXT) -asm_tst8_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \ - $(am__DEPENDENCIES_1) -asm_tst9_SOURCES = asm-tst9.c -asm_tst9_OBJECTS = asm-tst9.$(OBJEXT) -asm_tst9_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \ - $(am__DEPENDENCIES_1) -ecp_SOURCES = ecp.c -ecp_OBJECTS = ecp.$(OBJEXT) -ecp_DEPENDENCIES = $(am__DEPENDENCIES_1) -get_aranges_SOURCES = get-aranges.c -get_aranges_OBJECTS = get-aranges.$(OBJEXT) -@MUDFLAP_FALSE@am__DEPENDENCIES_4 = ../libdw/libdw.so -@MUDFLAP_TRUE@am__DEPENDENCIES_4 = ../libdw/libdw.a -get_aranges_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_1) -get_files_SOURCES = get-files.c -get_files_OBJECTS = get-files.$(OBJEXT) -get_files_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_1) -get_lines_SOURCES = get-lines.c -get_lines_OBJECTS = get-lines.$(OBJEXT) -get_lines_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_1) -get_pubnames_SOURCES = get-pubnames.c -get_pubnames_OBJECTS = get-pubnames.$(OBJEXT) -get_pubnames_DEPENDENCIES = $(am__DEPENDENCIES_4) \ - $(am__DEPENDENCIES_1) -hash_SOURCES = hash.c -hash_OBJECTS = hash.$(OBJEXT) -hash_DEPENDENCIES = $(am__DEPENDENCIES_1) -msg_tst_SOURCES = msg_tst.c -msg_tst_OBJECTS = msg_tst.$(OBJEXT) -msg_tst_DEPENDENCIES = $(am__DEPENDENCIES_1) -newfile_SOURCES = newfile.c -newfile_OBJECTS = newfile.$(OBJEXT) -newfile_DEPENDENCIES = $(am__DEPENDENCIES_1) -newscn_SOURCES = newscn.c -newscn_OBJECTS = newscn.$(OBJEXT) -newscn_DEPENDENCIES = $(am__DEPENDENCIES_1) -saridx_SOURCES = saridx.c -saridx_OBJECTS = saridx.$(OBJEXT) -saridx_DEPENDENCIES = $(am__DEPENDENCIES_1) -scnnames_SOURCES = scnnames.c -scnnames_OBJECTS = scnnames.$(OBJEXT) -scnnames_DEPENDENCIES = $(am__DEPENDENCIES_1) -sectiondump_SOURCES = sectiondump.c -sectiondump_OBJECTS = sectiondump.$(OBJEXT) -sectiondump_DEPENDENCIES = $(am__DEPENDENCIES_1) -show_abbrev_SOURCES = show-abbrev.c -show_abbrev_OBJECTS = show-abbrev.$(OBJEXT) -show_abbrev_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_1) -show_die_info_SOURCES = show-die-info.c -show_die_info_OBJECTS = show-die-info.$(OBJEXT) -show_die_info_DEPENDENCIES = $(am__DEPENDENCIES_4) \ - $(am__DEPENDENCIES_1) -showptable_SOURCES = showptable.c -showptable_OBJECTS = showptable.$(OBJEXT) -showptable_DEPENDENCIES = $(am__DEPENDENCIES_1) -test_nlist_SOURCES = test-nlist.c -test_nlist_OBJECTS = test-nlist.$(OBJEXT) -test_nlist_DEPENDENCIES = $(am__DEPENDENCIES_1) -update1_SOURCES = update1.c -update1_OBJECTS = update1.$(OBJEXT) -update1_DEPENDENCIES = $(am__DEPENDENCIES_1) -update2_SOURCES = update2.c -update2_OBJECTS = update2.$(OBJEXT) -update2_DEPENDENCIES = $(am__DEPENDENCIES_1) -update3_SOURCES = update3.c -update3_OBJECTS = update3.$(OBJEXT) -update3_DEPENDENCIES = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_1) -update4_SOURCES = update4.c -update4_OBJECTS = update4.$(OBJEXT) -update4_DEPENDENCIES = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_1) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = arextract.c arsymtest.c asm-tst1.c asm-tst2.c asm-tst3.c \ - asm-tst4.c asm-tst5.c asm-tst6.c asm-tst7.c asm-tst8.c \ - asm-tst9.c ecp.c get-aranges.c get-files.c get-lines.c \ - get-pubnames.c hash.c msg_tst.c newfile.c newscn.c saridx.c \ - scnnames.c sectiondump.c show-abbrev.c show-die-info.c \ - showptable.c test-nlist.c update1.c update2.c update3.c \ - update4.c -DIST_SOURCES = arextract.c arsymtest.c asm-tst1.c asm-tst2.c \ - asm-tst3.c asm-tst4.c asm-tst5.c asm-tst6.c asm-tst7.c \ - asm-tst8.c asm-tst9.c ecp.c get-aranges.c get-files.c \ - get-lines.c get-pubnames.c hash.c msg_tst.c newfile.c newscn.c \ - saridx.c scnnames.c sectiondump.c show-abbrev.c \ - show-die-info.c showptable.c test-nlist.c update1.c update2.c \ - update3.c update4.c -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DATADIRNAME = @DATADIRNAME@ -DEFS = -DHAVE_CONFIG_H -D_GNU_SOURCE -DEPDIR = @DEPDIR@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -GMSGFMT = @GMSGFMT@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTLLIBS = @INTLLIBS@ -LDFLAGS = @LDFLAGS@ -LEX = @LEX@ -LEXLIB = @LEXLIB@ -LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LOCALEDIR = @LOCALEDIR@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -MSGMERGE = @MSGMERGE@ -MUDFLAP_FALSE = @MUDFLAP_FALSE@ -MUDFLAP_TRUE = @MUDFLAP_TRUE@ -NATIVE_LD_FALSE = @NATIVE_LD_FALSE@ -NATIVE_LD_TRUE = @NATIVE_LD_TRUE@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -XGETTEXT = @XGETTEXT@ -YACC = @YACC@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -base_cpu = @base_cpu@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -datadir = @datadir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -AM_CFLAGS = -Wall -Werror -std=gnu99 -@MUDFLAP_FALSE@AM_LDFLAGS = -Wl,-rpath,\$$ORIGIN/../libasm:\$$ORIGIN/../libdw:\$$ORIGIN/../libebl:\$$ORIGIN/../libelf -INCLUDES = -I$(top_srcdir)/libasm -I$(top_srcdir)/libdw \ - -I$(top_srcdir)/libebl -I$(top_srcdir)/libelf \ - -I$(top_srcdir)/lib -I.. - -# get-ciefde -TESTS = run-arextract.sh run-arsymtest.sh newfile test-nlist \ - update1 update2 update3 update4 \ - run-show-die-info.sh run-get-files.sh run-get-lines.sh \ - run-get-pubnames.sh run-get-aranges.sh \ - run-show-abbrev.sh hash asm-tst1 asm-tst2 \ - asm-tst3 asm-tst4 asm-tst5 asm-tst6 asm-tst7 asm-tst8 asm-tst9 \ - msg_tst newscn run-strip-test.sh run-strip-test2.sh \ - run-strip-test3.sh run-ecp-test.sh run-ecp-test2.sh - -# run-show-ciefde.sh -EXTRA_DIST = run-arextract.sh run-arsymtest.sh \ - run-show-die-info.sh run-get-files.sh run-get-lines.sh \ - run-get-pubnames.sh run-get-aranges.sh \ - run-show-ciefde.sh run-show-abbrev.sh run-strip-test.sh \ - run-strip-test2.sh run-ecp-test.sh run-ecp-test2.sh \ - testfile.bz2 testfile2.bz2 testfile3.bz2 testfile4.bz2 \ - testfile5.bz2 testfile6.bz2 testfile7.bz2 testfile8.bz2 \ - testfile9.bz2 testfile10.bz2 testfile11.bz2 testfile12.bz2 \ - testfile13.bz2 run-strip-test3.sh - -@MUDFLAP_FALSE@libdw = ../libdw/libdw.so -@MUDFLAP_TRUE@libdw = ../libdw/libdw.a -@MUDFLAP_FALSE@libelf = ../libelf/libelf.so -@MUDFLAP_TRUE@libelf = ../libelf/libelf.a -@MUDFLAP_FALSE@libasm = ../libasm/libasm.so -@MUDFLAP_TRUE@libasm = ../libasm/libasm.a -libebl = ../libebl/libebl.a -arextract_LDADD = $(libelf) -arsymtest_LDADD = $(libelf) -newfile_LDADD = $(libelf) -saridx_LDADD = $(libelf) -scnnames_LDADD = $(libelf) -sectiondump_LDADD = $(libelf) -showptable_LDADD = $(libelf) -hash_LDADD = $(libelf) -test_nlist_LDADD = $(libelf) -msg_tst_LDADD = $(libelf) -newscn_LDADD = $(libelf) -ecp_LDADD = $(libelf) -update1_LDADD = $(libelf) -update2_LDADD = $(libelf) -update3_LDADD = $(libebl) $(libelf) -update4_LDADD = $(libebl) $(libelf) -show_die_info_LDADD = $(libdw) $(libelf) -get_pubnames_LDADD = $(libdw) $(libelf) -show_abbrev_LDADD = $(libdw) $(libelf) -get_lines_LDADD = $(libdw) $(libelf) -get_files_LDADD = $(libdw) $(libelf) -get_aranges_LDADD = $(libdw) $(libelf) -#show_ciefde_LDADD = ../libdwarf/libdwarf.so $(libelf) -asm_tst1_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst2_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst3_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst4_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst5_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst6_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst7_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst8_LDADD = $(libasm) $(libebl) $(libelf) -asm_tst9_LDADD = $(libasm) $(libebl) $(libelf) -CLEANFILES = xxx -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits tests/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnits tests/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -clean-noinstPROGRAMS: - -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) -arextract$(EXEEXT): $(arextract_OBJECTS) $(arextract_DEPENDENCIES) - @rm -f arextract$(EXEEXT) - $(LINK) $(arextract_LDFLAGS) $(arextract_OBJECTS) $(arextract_LDADD) $(LIBS) -arsymtest$(EXEEXT): $(arsymtest_OBJECTS) $(arsymtest_DEPENDENCIES) - @rm -f arsymtest$(EXEEXT) - $(LINK) $(arsymtest_LDFLAGS) $(arsymtest_OBJECTS) $(arsymtest_LDADD) $(LIBS) -asm-tst1$(EXEEXT): $(asm_tst1_OBJECTS) $(asm_tst1_DEPENDENCIES) - @rm -f asm-tst1$(EXEEXT) - $(LINK) $(asm_tst1_LDFLAGS) $(asm_tst1_OBJECTS) $(asm_tst1_LDADD) $(LIBS) -asm-tst2$(EXEEXT): $(asm_tst2_OBJECTS) $(asm_tst2_DEPENDENCIES) - @rm -f asm-tst2$(EXEEXT) - $(LINK) $(asm_tst2_LDFLAGS) $(asm_tst2_OBJECTS) $(asm_tst2_LDADD) $(LIBS) -asm-tst3$(EXEEXT): $(asm_tst3_OBJECTS) $(asm_tst3_DEPENDENCIES) - @rm -f asm-tst3$(EXEEXT) - $(LINK) $(asm_tst3_LDFLAGS) $(asm_tst3_OBJECTS) $(asm_tst3_LDADD) $(LIBS) -asm-tst4$(EXEEXT): $(asm_tst4_OBJECTS) $(asm_tst4_DEPENDENCIES) - @rm -f asm-tst4$(EXEEXT) - $(LINK) $(asm_tst4_LDFLAGS) $(asm_tst4_OBJECTS) $(asm_tst4_LDADD) $(LIBS) -asm-tst5$(EXEEXT): $(asm_tst5_OBJECTS) $(asm_tst5_DEPENDENCIES) - @rm -f asm-tst5$(EXEEXT) - $(LINK) $(asm_tst5_LDFLAGS) $(asm_tst5_OBJECTS) $(asm_tst5_LDADD) $(LIBS) -asm-tst6$(EXEEXT): $(asm_tst6_OBJECTS) $(asm_tst6_DEPENDENCIES) - @rm -f asm-tst6$(EXEEXT) - $(LINK) $(asm_tst6_LDFLAGS) $(asm_tst6_OBJECTS) $(asm_tst6_LDADD) $(LIBS) -asm-tst7$(EXEEXT): $(asm_tst7_OBJECTS) $(asm_tst7_DEPENDENCIES) - @rm -f asm-tst7$(EXEEXT) - $(LINK) $(asm_tst7_LDFLAGS) $(asm_tst7_OBJECTS) $(asm_tst7_LDADD) $(LIBS) -asm-tst8$(EXEEXT): $(asm_tst8_OBJECTS) $(asm_tst8_DEPENDENCIES) - @rm -f asm-tst8$(EXEEXT) - $(LINK) $(asm_tst8_LDFLAGS) $(asm_tst8_OBJECTS) $(asm_tst8_LDADD) $(LIBS) -asm-tst9$(EXEEXT): $(asm_tst9_OBJECTS) $(asm_tst9_DEPENDENCIES) - @rm -f asm-tst9$(EXEEXT) - $(LINK) $(asm_tst9_LDFLAGS) $(asm_tst9_OBJECTS) $(asm_tst9_LDADD) $(LIBS) -ecp$(EXEEXT): $(ecp_OBJECTS) $(ecp_DEPENDENCIES) - @rm -f ecp$(EXEEXT) - $(LINK) $(ecp_LDFLAGS) $(ecp_OBJECTS) $(ecp_LDADD) $(LIBS) -get-aranges$(EXEEXT): $(get_aranges_OBJECTS) $(get_aranges_DEPENDENCIES) - @rm -f get-aranges$(EXEEXT) - $(LINK) $(get_aranges_LDFLAGS) $(get_aranges_OBJECTS) $(get_aranges_LDADD) $(LIBS) -get-files$(EXEEXT): $(get_files_OBJECTS) $(get_files_DEPENDENCIES) - @rm -f get-files$(EXEEXT) - $(LINK) $(get_files_LDFLAGS) $(get_files_OBJECTS) $(get_files_LDADD) $(LIBS) -get-lines$(EXEEXT): $(get_lines_OBJECTS) $(get_lines_DEPENDENCIES) - @rm -f get-lines$(EXEEXT) - $(LINK) $(get_lines_LDFLAGS) $(get_lines_OBJECTS) $(get_lines_LDADD) $(LIBS) -get-pubnames$(EXEEXT): $(get_pubnames_OBJECTS) $(get_pubnames_DEPENDENCIES) - @rm -f get-pubnames$(EXEEXT) - $(LINK) $(get_pubnames_LDFLAGS) $(get_pubnames_OBJECTS) $(get_pubnames_LDADD) $(LIBS) -hash$(EXEEXT): $(hash_OBJECTS) $(hash_DEPENDENCIES) - @rm -f hash$(EXEEXT) - $(LINK) $(hash_LDFLAGS) $(hash_OBJECTS) $(hash_LDADD) $(LIBS) -msg_tst$(EXEEXT): $(msg_tst_OBJECTS) $(msg_tst_DEPENDENCIES) - @rm -f msg_tst$(EXEEXT) - $(LINK) $(msg_tst_LDFLAGS) $(msg_tst_OBJECTS) $(msg_tst_LDADD) $(LIBS) -newfile$(EXEEXT): $(newfile_OBJECTS) $(newfile_DEPENDENCIES) - @rm -f newfile$(EXEEXT) - $(LINK) $(newfile_LDFLAGS) $(newfile_OBJECTS) $(newfile_LDADD) $(LIBS) -newscn$(EXEEXT): $(newscn_OBJECTS) $(newscn_DEPENDENCIES) - @rm -f newscn$(EXEEXT) - $(LINK) $(newscn_LDFLAGS) $(newscn_OBJECTS) $(newscn_LDADD) $(LIBS) -saridx$(EXEEXT): $(saridx_OBJECTS) $(saridx_DEPENDENCIES) - @rm -f saridx$(EXEEXT) - $(LINK) $(saridx_LDFLAGS) $(saridx_OBJECTS) $(saridx_LDADD) $(LIBS) -scnnames$(EXEEXT): $(scnnames_OBJECTS) $(scnnames_DEPENDENCIES) - @rm -f scnnames$(EXEEXT) - $(LINK) $(scnnames_LDFLAGS) $(scnnames_OBJECTS) $(scnnames_LDADD) $(LIBS) -sectiondump$(EXEEXT): $(sectiondump_OBJECTS) $(sectiondump_DEPENDENCIES) - @rm -f sectiondump$(EXEEXT) - $(LINK) $(sectiondump_LDFLAGS) $(sectiondump_OBJECTS) $(sectiondump_LDADD) $(LIBS) -show-abbrev$(EXEEXT): $(show_abbrev_OBJECTS) $(show_abbrev_DEPENDENCIES) - @rm -f show-abbrev$(EXEEXT) - $(LINK) $(show_abbrev_LDFLAGS) $(show_abbrev_OBJECTS) $(show_abbrev_LDADD) $(LIBS) -show-die-info$(EXEEXT): $(show_die_info_OBJECTS) $(show_die_info_DEPENDENCIES) - @rm -f show-die-info$(EXEEXT) - $(LINK) $(show_die_info_LDFLAGS) $(show_die_info_OBJECTS) $(show_die_info_LDADD) $(LIBS) -showptable$(EXEEXT): $(showptable_OBJECTS) $(showptable_DEPENDENCIES) - @rm -f showptable$(EXEEXT) - $(LINK) $(showptable_LDFLAGS) $(showptable_OBJECTS) $(showptable_LDADD) $(LIBS) -test-nlist$(EXEEXT): $(test_nlist_OBJECTS) $(test_nlist_DEPENDENCIES) - @rm -f test-nlist$(EXEEXT) - $(LINK) $(test_nlist_LDFLAGS) $(test_nlist_OBJECTS) $(test_nlist_LDADD) $(LIBS) -update1$(EXEEXT): $(update1_OBJECTS) $(update1_DEPENDENCIES) - @rm -f update1$(EXEEXT) - $(LINK) $(update1_LDFLAGS) $(update1_OBJECTS) $(update1_LDADD) $(LIBS) -update2$(EXEEXT): $(update2_OBJECTS) $(update2_DEPENDENCIES) - @rm -f update2$(EXEEXT) - $(LINK) $(update2_LDFLAGS) $(update2_OBJECTS) $(update2_LDADD) $(LIBS) -update3$(EXEEXT): $(update3_OBJECTS) $(update3_DEPENDENCIES) - @rm -f update3$(EXEEXT) - $(LINK) $(update3_LDFLAGS) $(update3_OBJECTS) $(update3_LDADD) $(LIBS) -update4$(EXEEXT): $(update4_OBJECTS) $(update4_DEPENDENCIES) - @rm -f update4$(EXEEXT) - $(LINK) $(update4_LDFLAGS) $(update4_OBJECTS) $(update4_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arextract.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arsymtest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm-tst1.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm-tst2.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm-tst3.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm-tst4.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm-tst5.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm-tst6.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm-tst7.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm-tst8.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asm-tst9.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get-aranges.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get-files.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get-lines.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get-pubnames.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msg_tst.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newfile.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newscn.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/saridx.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scnnames.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sectiondump.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/show-abbrev.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/show-die-info.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/showptable.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-nlist.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/update1.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/update2.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/update3.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/update4.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` -uninstall-info-am: - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list='$(TESTS)'; \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *" $$tst "*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - echo "XPASS: $$tst"; \ - ;; \ - *) \ - echo "PASS: $$tst"; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *" $$tst "*) \ - xfail=`expr $$xfail + 1`; \ - echo "XFAIL: $$tst"; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - echo "SKIP: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all tests failed"; \ - else \ - banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - skipped="($$skip tests were not run)"; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - test -z "$$skipped" || echo "$$skipped"; \ - test -z "$$report" || echo "$$report"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0; \ - else :; fi - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-info-am - -.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ - clean-generic clean-noinstPROGRAMS ctags distclean \ - distclean-compile distclean-generic distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-exec install-exec-am \ - install-info install-info-am install-man install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-info-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tests/arextract.c b/tests/arextract.c deleted file mode 100644 index aa86fb4e..00000000 --- a/tests/arextract.c +++ /dev/null @@ -1,155 +0,0 @@ -/* Copyright (C) 1999, 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1999. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <fcntl.h> -#include <gelf.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <sys/param.h> - - -int -main (int argc, char *argv[]) -{ - int fd; - Elf *elf; - Elf *subelf; - Elf_Cmd cmd; - off_t offset; - size_t todo; - - if (argc < 4) - exit (1); - - /* Open the archive. */ - fd = open (argv[1], O_RDONLY); - if (fd == -1) - { - printf ("Cannot open input file: %m"); - exit (1); - } - - /* Set the ELF version. */ - elf_version (EV_CURRENT); - - /* Create an ELF descriptor. */ - cmd = ELF_C_READ; - elf = elf_begin (fd, cmd, NULL); - if (elf == NULL) - { - printf ("Cannot create ELF descriptor: %s\n", elf_errmsg (-1)); - exit (1); - } - - /* If it is no archive punt. */ - if (elf_kind (elf) != ELF_K_AR) - { - printf ("`%s' is no archive\n", argv[1]); - exit (1); - } - - /* Get the elements of the archive one after the other. */ - while ((subelf = elf_begin (fd, cmd, elf)) != NULL) - { - /* The the header for this element. */ - Elf_Arhdr *arhdr = elf_getarhdr (subelf); - - if (arhdr == NULL) - { - printf ("cannot get arhdr: %s\n", elf_errmsg (-1)); - exit (1); - } - - if (strcmp (arhdr->ar_name, argv[2]) == 0) - { - int outfd; - - /* Get the offset of the file in the archive. */ - offset = elf_getbase (subelf); - if (offset == -1) - { - printf ("\ -Failed to get base address for the archive element: %s\n", - elf_errmsg (-1)); - exit (1); - } - - /* Open the output file. */ - outfd = open (argv[3], O_CREAT | O_TRUNC | O_RDWR, 0666); - if (outfd == -1) - { - printf ("cannot open output file: %m"); - exit (1); - } - - /* Now write out the data. */ - todo = arhdr->ar_size; - while (todo > 0) - { - char buf[1024]; - ssize_t n = pread (fd, buf, MIN (sizeof buf, todo), offset); - if (n == 0) - break; - - if (write (outfd, buf, n) != n) - { - puts ("Writing output failed"); - exit (1); - } - - offset += n; - todo -= n; - } - - /* Check whether all the date was read and written out. */ - if (todo != 0) - { - puts ("Reading archive member failed."); - exit (1); - } - - /* Close the descriptors. */ - if (elf_end (subelf) != 0 || elf_end (elf) != 0) - { - printf ("Freeing ELF descriptors failed: %s", elf_errmsg (-1)); - exit (1); - } - - close (outfd); - close (fd); - - /* All went well. */ - exit (0); - } - - /* Get next archive element. */ - cmd = elf_next (subelf); - if (elf_end (subelf) != 0) - { - printf ("error while freeing sub-ELF descriptor: %s\n", - elf_errmsg (-1)); - exit (1); - } - } - - /* When we reach this point we haven't found the given file in the - archive. */ - printf ("File `%s' not found in archive\n", argv[2]); - exit (1); -} diff --git a/tests/arsymtest.c b/tests/arsymtest.c deleted file mode 100644 index e4c2cf09..00000000 --- a/tests/arsymtest.c +++ /dev/null @@ -1,132 +0,0 @@ -/* Copyright (C) 1999, 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1999. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <config.h> - -#include <fcntl.h> -#include <libelf.h> -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> - - -int -main (int argc, char *argv[]) -{ - int fd; - FILE *fp; - Elf *elf; - Elf_Arsym *arsym; - size_t narsym; - - if (argc < 3) - exit (1); - - /* Open the archive. */ - fd = open (argv[1], O_RDONLY); - if (fd == -1) - { - printf ("Cannot open input file: %m"); - exit (1); - } - - /* Open the output file. */ - fp = fopen (argv[2], "w"); - if (fp == NULL) - { - printf ("Cannot open output file: %m"); - exit (1); - } - - /* Set the ELF version. */ - elf_version (EV_CURRENT); - - /* Create an ELF descriptor. */ - elf = elf_begin (fd, ELF_C_READ, NULL); - if (elf == NULL) - { - printf ("Cannot create ELF descriptor: %s\n", elf_errmsg (-1)); - exit (1); - } - - /* If it is no archive punt. */ - if (elf_kind (elf) != ELF_K_AR) - { - printf ("`%s' is no archive\n", argv[1]); - exit (1); - } - - /* Now get the index of the archive. */ - arsym = elf_getarsym (elf, &narsym); - if (arsym == NULL) - { - printf ("Cannot get archive index: %s\n", elf_errmsg (-1)); - exit (1); - } - - /* If there is no element in the index do nothing. There always is - an empty entry at the end which is included in the count and - which we want to skip. */ - if (narsym-- > 1) - while (narsym-- > 0) - { - Elf *subelf; - Elf_Arhdr *arhdr; - - if (elf_rand (elf, arsym[narsym].as_off) != arsym[narsym].as_off) - { - printf ("random access for symbol `%s' fails: %s\n", - arsym[narsym].as_name, elf_errmsg (-1)); - exit (1); - } - - subelf = elf_begin (fd, ELF_C_READ, elf); - if (subelf == NULL) - { - printf ("Cannot create ELF descriptor for archive member: %s\n", - elf_errmsg (-1)); - exit (1); - } - - arhdr = elf_getarhdr (subelf); - if (arhdr == NULL) - { - printf ("Cannot get archive header for element `%s': %s\n", - arsym[narsym].as_name, elf_errmsg (-1)); - exit (1); - } - - /* Now print what we actually want. */ - fprintf (fp, "%s in %s\n", arsym[narsym].as_name, arhdr->ar_name); - - /* Free the ELF descriptor. */ - if (elf_end (subelf) != 0) - { - printf ("Error while freeing subELF descriptor: %s\n", - elf_errmsg (-1)); - exit (1); - } - } - - /* Free the ELF descriptor. */ - if (elf_end (elf) != 0) - { - printf ("Error while freeing ELF descriptor: %s\n", elf_errmsg (-1)); - exit (1); - } - - close (fd); - fclose (fp); - - return 0; -} diff --git a/tests/asm-tst1.c b/tests/asm-tst1.c deleted file mode 100644 index b76930d0..00000000 --- a/tests/asm-tst1.c +++ /dev/null @@ -1,239 +0,0 @@ -/* Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <fcntl.h> -#include <libasm.h> -#include <libelf.h> -#include <stdio.h> -#include <string.h> -#include <unistd.h> - - -static const char fname[] = "asm-tst1-out.o"; - - -static const GElf_Ehdr expected_ehdr = - { - .e_ident = { [EI_MAG0] = ELFMAG0, - [EI_MAG1] = ELFMAG1, - [EI_MAG2] = ELFMAG2, - [EI_MAG3] = ELFMAG3, - [EI_CLASS] = ELFCLASS32, - [EI_DATA] = ELFDATA2LSB, - [EI_VERSION] = EV_CURRENT }, - .e_type = ET_REL, - .e_machine = EM_386, - .e_version = EV_CURRENT, - .e_shoff = 88, - .e_ehsize = sizeof (Elf32_Ehdr), - .e_shentsize = sizeof (Elf32_Shdr), - .e_shnum = 4, - .e_shstrndx = 3 - }; - - -static const char *scnnames[4] = - { - [0] = "", - [1] = ".text", - [2] = ".data", - [3] = ".shstrtab" - }; - - -int -main (void) -{ - AsmCtx_t *ctx; - AsmScn_t *scn1; - AsmScn_t *scn2; - int fd; - Elf *elf; - GElf_Ehdr ehdr_mem; - GElf_Ehdr *ehdr; - int result = 0; - size_t cnt; - - elf_version (EV_CURRENT); - - ctx = asm_begin (fname, false, EM_386, ELFCLASS32, ELFDATA2LSB); - if (ctx == NULL) - { - printf ("cannot create assembler context: %s\n", asm_errmsg (-1)); - return 1; - } - - /* Create two sections. */ - scn1 = asm_newscn (ctx, ".text", SHT_PROGBITS, SHF_ALLOC | SHF_EXECINSTR); - scn2 = asm_newscn (ctx, ".data", SHT_PROGBITS, SHF_ALLOC | SHF_WRITE); - if (scn1 == NULL || scn2 == NULL) - { - printf ("cannot create section in output file: %s\n", asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - /* Special alignment for the .text section. */ - if (asm_align (scn1, 32) != 0) - { - printf ("cannot align .text section: %s\n", asm_errmsg (-1)); - result = 1; - } - - /* Create the output file. */ - if (asm_end (ctx) != 0) - { - printf ("cannot create output file: %s\n", asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - /* Check the file. */ - fd = open (fname, O_RDONLY); - if (fd == -1) - { - printf ("cannot open generated file: %m\n"); - result = 1; - goto out; - } - - elf = elf_begin (fd, ELF_C_READ, NULL); - if (elf == NULL) - { - printf ("cannot create ELF descriptor: %s\n", elf_errmsg (-1)); - result = 1; - goto out_close; - } - if (elf_kind (elf) != ELF_K_ELF) - { - puts ("not a valid ELF file"); - result = 1; - goto out_close2; - } - - ehdr = gelf_getehdr (elf, &ehdr_mem); - if (ehdr == NULL) - { - printf ("cannot get ELF header: %s\n", elf_errmsg (-1)); - result = 1; - goto out_close2; - } - - if (memcmp (ehdr, &expected_ehdr, sizeof (GElf_Ehdr)) != 0) - { - puts ("ELF header does not match"); - result = 1; - goto out_close2; - } - - for (cnt = 1; cnt < 4; ++cnt) - { - Elf_Scn *scn; - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - - scn = elf_getscn (elf, cnt); - if (scn == NULL) - { - printf ("cannot get section %Zd: %s\n", cnt, elf_errmsg (-1)); - result = 1; - continue; - } - - shdr = gelf_getshdr (scn, &shdr_mem); - if (shdr == NULL) - { - printf ("cannot get section header for section %Zd: %s\n", - cnt, elf_errmsg (-1)); - result = 1; - continue; - } - - if (strcmp (elf_strptr (elf, ehdr->e_shstrndx, shdr->sh_name), - scnnames[cnt]) != 0) - { - printf ("section %Zd's name differs: %s vs %s\n", cnt, - elf_strptr (elf, ehdr->e_shstrndx, shdr->sh_name), - scnnames[cnt]); - result = 1; - } - - if (shdr->sh_type != (cnt == 3 ? SHT_STRTAB : SHT_PROGBITS)) - { - printf ("section %Zd's type differs\n", cnt); - result = 1; - } - - if ((cnt == 1 && shdr->sh_flags != (SHF_ALLOC | SHF_EXECINSTR)) - || (cnt == 2 && shdr->sh_flags != (SHF_ALLOC | SHF_WRITE)) - || (cnt == 3 && shdr->sh_flags != 0)) - { - printf ("section %Zd's flags differs\n", cnt); - result = 1; - } - - if (shdr->sh_addr != 0) - { - printf ("section %Zd's address differs\n", cnt); - result = 1; - } - - if (shdr->sh_offset != ((sizeof (Elf32_Ehdr) + 31) & ~31)) - { - printf ("section %Zd's offset differs\n", cnt); - result = 1; - } - - if ((cnt != 3 && shdr->sh_size != 0) - || (cnt == 3 && shdr->sh_size != 23)) - { - printf ("section %Zd's size differs\n", cnt); - result = 1; - } - - if (shdr->sh_link != 0) - { - printf ("section %Zd's link differs\n", cnt); - result = 1; - } - - if (shdr->sh_info != 0) - { - printf ("section %Zd's info differs\n", cnt); - result = 1; - } - - if ((cnt == 1 && shdr->sh_addralign != 32) - || (cnt != 1 && shdr->sh_addralign != 1)) - { - printf ("section %Zd's addralign differs\n", cnt); - result = 1; - } - - if (shdr->sh_entsize != 0) - { - printf ("section %Zd's entsize differs\n", cnt); - result = 1; - } - } - - out_close2: - elf_end (elf); - out_close: - close (fd); - out: - /* We don't need the file anymore. */ - unlink (fname); - - return result; -} diff --git a/tests/asm-tst2.c b/tests/asm-tst2.c deleted file mode 100644 index a309976d..00000000 --- a/tests/asm-tst2.c +++ /dev/null @@ -1,261 +0,0 @@ -/* Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <fcntl.h> -#include <libasm.h> -#include <libelf.h> -#include <stdio.h> -#include <string.h> -#include <unistd.h> - - -static const char fname[] = "asm-tst2-out.o"; - - -static const GElf_Ehdr expected_ehdr = - { - .e_ident = { [EI_MAG0] = ELFMAG0, - [EI_MAG1] = ELFMAG1, - [EI_MAG2] = ELFMAG2, - [EI_MAG3] = ELFMAG3, - [EI_CLASS] = ELFCLASS32, - [EI_DATA] = ELFDATA2LSB, - [EI_VERSION] = EV_CURRENT }, - .e_type = ET_REL, - .e_machine = EM_386, - .e_version = EV_CURRENT, - .e_shoff = 96, - .e_ehsize = sizeof (Elf32_Ehdr), - .e_shentsize = sizeof (Elf32_Shdr), - .e_shnum = 3, - .e_shstrndx = 2 - }; - - -static const char *scnnames[3] = - { - [0] = "", - [1] = ".data", - [2] = ".shstrtab" - }; - - -int -main (void) -{ - AsmCtx_t *ctx; - AsmScn_t *scn1; - AsmScn_t *scn2; - int result = 0; - int fd; - Elf *elf; - GElf_Ehdr ehdr_mem; - GElf_Ehdr *ehdr; - size_t cnt; - - elf_version (EV_CURRENT); - - ctx = asm_begin (fname, false, EM_386, ELFCLASS32, ELFDATA2LSB); - if (ctx == NULL) - { - printf ("cannot create assembler context: %s\n", asm_errmsg (-1)); - return 1; - } - - /* Create two sections. */ - scn1 = asm_newscn (ctx, ".data", SHT_PROGBITS, SHF_ALLOC | SHF_WRITE); - scn2 = asm_newsubscn (scn1, 1); - if (scn1 == NULL || scn2 == NULL) - { - printf ("cannot create section in output file: %s\n", asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - /* Special alignment for the .text section. */ - if (asm_align (scn1, 16) != 0) - { - printf ("cannot align .text section: %s\n", asm_errmsg (-1)); - result = 1; - } - - /* Add a few strings. */ - if (asm_addstrz (scn1, "one", 4) != 0) - { - printf ("cannot insert first string: %s\n", asm_errmsg (-1)); - result = 1; - } - if (asm_addstrz (scn2, "three", 0) != 0) - { - printf ("cannot insert second string: %s\n", asm_errmsg (-1)); - result = 1; - } - if (asm_addstrz (scn1, "two", 4) != 0) - { - printf ("cannot insert third string: %s\n", asm_errmsg (-1)); - result = 1; - } - - /* Create the output file. */ - if (asm_end (ctx) != 0) - { - printf ("cannot create output file: %s\n", asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - /* Check the file. */ - fd = open (fname, O_RDONLY); - if (fd == -1) - { - printf ("cannot open generated file: %m\n"); - result = 1; - goto out; - } - - elf = elf_begin (fd, ELF_C_READ, NULL); - if (elf == NULL) - { - printf ("cannot create ELF descriptor: %s\n", elf_errmsg (-1)); - result = 1; - goto out_close; - } - if (elf_kind (elf) != ELF_K_ELF) - { - puts ("not a valid ELF file"); - result = 1; - goto out_close2; - } - - ehdr = gelf_getehdr (elf, &ehdr_mem); - if (ehdr == NULL) - { - printf ("cannot get ELF header: %s\n", elf_errmsg (-1)); - result = 1; - goto out_close2; - } - - if (memcmp (ehdr, &expected_ehdr, sizeof (GElf_Ehdr)) != 0) - { - puts ("ELF header does not match"); - result = 1; - goto out_close2; - } - - for (cnt = 1; cnt < 3; ++cnt) - { - Elf_Scn *scn; - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - - scn = elf_getscn (elf, cnt); - if (scn == NULL) - { - printf ("cannot get section %Zd: %s\n", cnt, elf_errmsg (-1)); - result = 1; - continue; - } - - shdr = gelf_getshdr (scn, &shdr_mem); - if (shdr == NULL) - { - printf ("cannot get section header for section %Zd: %s\n", - cnt, elf_errmsg (-1)); - result = 1; - continue; - } - - if (strcmp (elf_strptr (elf, ehdr->e_shstrndx, shdr->sh_name), - scnnames[cnt]) != 0) - { - printf ("section %Zd's name differs: %s vs %s\n", cnt, - elf_strptr (elf, ehdr->e_shstrndx, shdr->sh_name), - scnnames[cnt]); - result = 1; - } - - if (shdr->sh_type != (cnt == 2 ? SHT_STRTAB : SHT_PROGBITS)) - { - printf ("section %Zd's type differs\n", cnt); - result = 1; - } - - if ((cnt == 1 && shdr->sh_flags != (SHF_ALLOC | SHF_WRITE)) - || (cnt == 2 && shdr->sh_flags != 0)) - { - printf ("section %Zd's flags differs\n", cnt); - result = 1; - } - - if (shdr->sh_addr != 0) - { - printf ("section %Zd's address differs\n", cnt); - result = 1; - } - - if ((cnt == 1 && shdr->sh_offset != ((sizeof (Elf32_Ehdr) + 15) & ~15)) - || (cnt == 2 - && shdr->sh_offset != (((sizeof (Elf32_Ehdr) + 15) & ~15) - + strlen ("one") + 1 - + strlen ("two") + 1 - + strlen ("three") + 1))) - { - printf ("section %Zd's offset differs\n", cnt); - result = 1; - } - - if ((cnt == 1 && shdr->sh_size != (strlen ("one") + 1 - + strlen ("two") + 1 - + strlen ("three") + 1)) - || (cnt == 2 && shdr->sh_size != 17)) - { - printf ("section %Zd's size differs\n", cnt); - result = 1; - } - - if (shdr->sh_link != 0) - { - printf ("section %Zd's link differs\n", cnt); - result = 1; - } - - if (shdr->sh_info != 0) - { - printf ("section %Zd's info differs\n", cnt); - result = 1; - } - - if ((cnt == 1 && shdr->sh_addralign != 16) - || (cnt != 1 && shdr->sh_addralign != 1)) - { - printf ("section %Zd's addralign differs\n", cnt); - result = 1; - } - - if (shdr->sh_entsize != 0) - { - printf ("section %Zd's entsize differs\n", cnt); - result = 1; - } - } - - out_close2: - elf_end (elf); - out_close: - close (fd); - out: - /* We don't need the file anymore. */ - unlink (fname); - - return result; -} diff --git a/tests/asm-tst3.c b/tests/asm-tst3.c deleted file mode 100644 index fb79ea78..00000000 --- a/tests/asm-tst3.c +++ /dev/null @@ -1,322 +0,0 @@ -/* Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <fcntl.h> -#include <libasm.h> -#include <libelf.h> -#include <stdio.h> -#include <string.h> -#include <unistd.h> - - -static const char fname[] = "asm-tst3-out.o"; - - -static const char *scnnames[5] = - { - [0] = "", - [1] = ".data", - [2] = ".strtab", - [3] = ".symtab", - [4] = ".shstrtab" - }; - - -static unsigned int scntypes[5] = - { - [0] = SHT_NULL, - [1] = SHT_PROGBITS, - [2] = SHT_STRTAB, - [3] = SHT_SYMTAB, - [4] = SHT_STRTAB - }; - - -int -main (void) -{ - AsmCtx_t *ctx; - AsmScn_t *scn1; - AsmScn_t *scn2; - int result = 0; - int fd; - Elf *elf; - GElf_Ehdr ehdr_mem; - GElf_Ehdr *ehdr; - size_t cnt; - - elf_version (EV_CURRENT); - - ctx = asm_begin (fname, false, EM_386, ELFCLASS32, ELFDATA2LSB); - if (ctx == NULL) - { - printf ("cannot create assembler context: %s\n", asm_errmsg (-1)); - return 1; - } - - /* Create two sections. */ - scn1 = asm_newscn (ctx, ".data", SHT_PROGBITS, SHF_ALLOC | SHF_WRITE); - scn2 = asm_newsubscn (scn1, 1); - if (scn1 == NULL || scn2 == NULL) - { - printf ("cannot create section in output file: %s\n", asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - /* Special alignment for the .text section. */ - if (asm_align (scn1, 16) != 0) - { - printf ("cannot align .text section: %s\n", asm_errmsg (-1)); - result = 1; - } - - /* Add a few strings with names. */ - if (asm_newsym (scn1, "one", 4, STT_OBJECT, STB_GLOBAL) == NULL) - { - printf ("cannot create first name: %s\n", asm_errmsg (-1)); - result = 1; - } - if (asm_addstrz (scn1, "one", 4) != 0) - { - printf ("cannot insert first string: %s\n", asm_errmsg (-1)); - result = 1; - } - if (asm_newsym (scn2, "three", 6, STT_OBJECT, STB_WEAK) == NULL) - { - printf ("cannot create second name: %s\n", asm_errmsg (-1)); - result = 1; - } - if (asm_addstrz (scn2, "three", 0) != 0) - { - printf ("cannot insert second string: %s\n", asm_errmsg (-1)); - result = 1; - } - if (asm_newsym (scn1, "two", 4, STT_OBJECT, STB_LOCAL) == NULL) - { - printf ("cannot create third name: %s\n", asm_errmsg (-1)); - result = 1; - } - if (asm_addstrz (scn1, "two", 4) != 0) - { - printf ("cannot insert third string: %s\n", asm_errmsg (-1)); - result = 1; - } - - /* Create the output file. */ - if (asm_end (ctx) != 0) - { - printf ("cannot create output file: %s\n", asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - /* Check the file. */ - fd = open (fname, O_RDONLY); - if (fd == -1) - { - printf ("cannot open generated file: %m\n"); - result = 1; - goto out; - } - - elf = elf_begin (fd, ELF_C_READ, NULL); - if (elf == NULL) - { - printf ("cannot create ELF descriptor: %s\n", elf_errmsg (-1)); - result = 1; - goto out_close; - } - if (elf_kind (elf) != ELF_K_ELF) - { - puts ("not a valid ELF file"); - result = 1; - goto out_close2; - } - - ehdr = gelf_getehdr (elf, &ehdr_mem); - if (ehdr == NULL) - { - printf ("cannot get ELF header: %s\n", elf_errmsg (-1)); - result = 1; - goto out_close2; - } - - for (cnt = 1; cnt < 5; ++cnt) - { - Elf_Scn *scn; - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - - scn = elf_getscn (elf, cnt); - if (scn == NULL) - { - printf ("cannot get section %Zd: %s\n", cnt, elf_errmsg (-1)); - result = 1; - continue; - } - - shdr = gelf_getshdr (scn, &shdr_mem); - if (shdr == NULL) - { - printf ("cannot get section header for section %Zd: %s\n", - cnt, elf_errmsg (-1)); - result = 1; - continue; - } - - if (strcmp (elf_strptr (elf, ehdr->e_shstrndx, shdr->sh_name), - scnnames[cnt]) != 0) - { - printf ("section %Zd's name differs: %s vs %s\n", cnt, - elf_strptr (elf, ehdr->e_shstrndx, shdr->sh_name), - scnnames[cnt]); - result = 1; - } - - if (shdr->sh_type != scntypes[cnt]) - { - printf ("section %Zd's type differs\n", cnt); - result = 1; - } - - if ((cnt == 1 && shdr->sh_flags != (SHF_ALLOC | SHF_WRITE)) - || (cnt != 1 && shdr->sh_flags != 0)) - { - printf ("section %Zd's flags differs\n", cnt); - result = 1; - } - - if (shdr->sh_addr != 0) - { - printf ("section %Zd's address differs\n", cnt); - result = 1; - } - - if (cnt == 3) - { - Elf_Data *data; - - if (shdr->sh_link != 2) - { - puts ("symbol table has incorrect link"); - result = 1; - } - - data = elf_getdata (scn, NULL); - if (data == NULL) - { - puts ("cannot get data of symbol table"); - result = 1; - } - else - { - size_t inner; - - for (inner = 1; - inner < (shdr->sh_size - / gelf_fsize (elf, ELF_T_SYM, 1, EV_CURRENT)); - ++inner) - { - GElf_Sym sym_mem; - GElf_Sym *sym; - - sym = gelf_getsym (data, inner, &sym_mem); - if (sym == NULL) - { - printf ("cannot get symbol %zu: %s\n", - inner, elf_errmsg (-1)); - result = 1; - } - else - { - /* The order of the third and fourth entry depends - on how the hash table is organized. */ - static const char *names[4] = - { - [0] = "", - [1] = "two", - [2] = "one", - [3] = "three" - }; - static const int info[4] = - { - [0] = GELF_ST_INFO (STB_LOCAL, STT_NOTYPE), - [1] = GELF_ST_INFO (STB_LOCAL, STT_OBJECT), - [2] = GELF_ST_INFO (STB_GLOBAL, STT_OBJECT), - [3] = GELF_ST_INFO (STB_WEAK, STT_OBJECT) - }; - static const unsigned value[4] = - { - [0] = 0, - [1] = 4, - [2] = 0, - [3] = 8 - }; - - if (strcmp (names[inner], - elf_strptr (elf, shdr->sh_link, - sym->st_name)) != 0) - { - printf ("symbol %zu has different name\n", inner); - result = 1; - } - - if (sym->st_value != value[inner]) - { - printf ("symbol %zu has wrong value\n", inner); - result = 1; - } - - if (sym->st_other != 0) - { - printf ("symbol %zu has wrong other info\n", inner); - result = 1; - } - - if (sym->st_shndx != 1) - { - printf ("symbol %zu has wrong section reference\n", - inner); - result = 1; - } - - if (sym->st_info != info[inner]) - { - printf ("symbol %zu has wrong type or binding\n", - inner); - result = 1; - } - - if ((inner != 3 && sym->st_size != 4) - || (inner == 3 && sym->st_size != 6)) - { - printf ("symbol %zu has wrong size\n", inner); - result = 1; - } - } - } - } - } - } - - out_close2: - elf_end (elf); - out_close: - close (fd); - out: - /* We don't need the file anymore. */ - unlink (fname); - - return result; -} diff --git a/tests/asm-tst4.c b/tests/asm-tst4.c deleted file mode 100644 index 29d6485d..00000000 --- a/tests/asm-tst4.c +++ /dev/null @@ -1,88 +0,0 @@ -/* Copyright (C) 2002, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <fcntl.h> -#include <libasm.h> -#include <libelf.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <sys/wait.h> - - -static const char fname[] = "asm-tst4-out.o"; - - -int -main (void) -{ - AsmCtx_t *ctx; - int result = 0; - size_t cnt; - - elf_version (EV_CURRENT); - - ctx = asm_begin (fname, false, EM_386, ELFCLASS32, ELFDATA2LSB); - if (ctx == NULL) - { - printf ("cannot create assembler context: %s\n", asm_errmsg (-1)); - return 1; - } - - /* Create 66000 sections. */ - for (cnt = 0; cnt < 66000; ++cnt) - { - char buf[20]; - AsmScn_t *scn; - - /* Create a unique name. */ - snprintf (buf, sizeof (buf), ".data.%Zu", cnt); - - /* Create the section. */ - scn = asm_newscn (ctx, buf, SHT_PROGBITS, SHF_ALLOC | SHF_WRITE); - if (scn == NULL) - { - printf ("cannot create section \"%s\" in output file: %s\n", - buf, asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - /* Add some content. */ - if (asm_adduint32 (scn, cnt) != 0) - { - printf ("cannot create content of section \"%s\": %s\n", - buf, asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - } - - /* Create the output file. */ - if (asm_end (ctx) != 0) - { - printf ("cannot create output file: %s\n", asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - if (result == 0) - result = WEXITSTATUS (system ("\ -env LD_LIBRARY_PATH=../libelf ../src/elflint -q asm-tst4-out.o")); - - /* We don't need the file anymore. */ - unlink (fname); - - return result; -} diff --git a/tests/asm-tst5.c b/tests/asm-tst5.c deleted file mode 100644 index 4f761aed..00000000 --- a/tests/asm-tst5.c +++ /dev/null @@ -1,100 +0,0 @@ -/* Copyright (C) 2002, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <fcntl.h> -#include <libasm.h> -#include <libelf.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <sys/wait.h> - -#include "system.h" - - -static const char fname[] = "asm-tst5-out.o"; - - -int -main (void) -{ - AsmCtx_t *ctx; - int result = 0; - size_t cnt; - - elf_version (EV_CURRENT); - - ctx = asm_begin (fname, false, EM_386, ELFCLASS32, ELFDATA2LSB); - if (ctx == NULL) - { - printf ("cannot create assembler context: %s\n", asm_errmsg (-1)); - return 1; - } - - /* Create 66000 sections. */ - for (cnt = 0; cnt < 66000; ++cnt) - { - char buf[20]; - AsmScn_t *scn; - - /* Create a unique name. */ - snprintf (buf, sizeof (buf), ".data.%Zu", cnt); - - /* Create the section. */ - scn = asm_newscn (ctx, buf, SHT_PROGBITS, SHF_ALLOC | SHF_WRITE); - if (scn == NULL) - { - printf ("cannot create section \"%s\" in output file: %s\n", - buf, asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - /* Add a name. */ - snprintf (buf, sizeof (buf), "%Zu", cnt); - if (asm_newsym (scn, buf, sizeof (uint32_t), STT_OBJECT, - STB_GLOBAL) == NULL) - { - printf ("cannot create symbol \"%s\": %s\n", buf, asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - /* Add some content. */ - if (asm_adduint32 (scn, cnt) != 0) - { - printf ("cannot create content of section \"%s\": %s\n", - buf, asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - } - - /* Create the output file. */ - if (asm_end (ctx) != 0) - { - printf ("cannot create output file: %s\n", asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - if (result == 0) - result = WEXITSTATUS (system ("\ -env LD_LIBRARY_PATH=../libelf ../src/elflint -q asm-tst5-out.o")); - - /* We don't need the file anymore. */ - unlink (fname); - - return result; -} diff --git a/tests/asm-tst6.c b/tests/asm-tst6.c deleted file mode 100644 index ece69bc2..00000000 --- a/tests/asm-tst6.c +++ /dev/null @@ -1,134 +0,0 @@ -/* Copyright (C) 2002, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <libasm.h> -#include <libelf.h> -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <sys/wait.h> - -#include <system.h> - - -static const char fname[] = "asm-tst6-out.o"; - - -int -main (void) -{ - AsmCtx_t *ctx; - int result = 0; - size_t cnt; - - elf_version (EV_CURRENT); - - ctx = asm_begin (fname, false, EM_386, ELFCLASS32, ELFDATA2LSB); - if (ctx == NULL) - { - printf ("cannot create assembler context: %s\n", asm_errmsg (-1)); - return 1; - } - - for (cnt = 0; cnt < 22000; ++cnt) - { - char buf[512]; - AsmScnGrp_t *grp; - AsmScn_t *scn; - AsmSym_t *sym; - - snprintf (buf, sizeof (buf), ".grp%Zu", cnt); - grp = asm_newscngrp (ctx, buf, NULL, 0); - if (grp == NULL) - { - printf ("cannot section group %Zu: %s\n", cnt, asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - scn = asm_newscn_ingrp (ctx, ".data", SHT_PROGBITS, - SHF_ALLOC | SHF_WRITE, grp); - if (scn == NULL) - { - printf ("cannot data section for group %Zu: %s\n", - cnt, asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - /* Add a name. */ - snprintf (buf, sizeof (buf), "%Zu", cnt); - sym = asm_newsym (scn, buf, sizeof (uint32_t), STT_OBJECT, - STB_GLOBAL); - if (sym == NULL) - { - printf ("cannot create symbol \"%s\": %s\n", buf, asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - /* Add some content. */ - if (asm_adduint32 (scn, cnt) != 0) - { - printf ("cannot create content of section \"%s\": %s\n", - buf, asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - /* Now we have a symbol, use it as the signature. */ - if (asm_scngrp_newsignature (grp, sym) != 0) - { - printf ("cannot set signature for section group %Zu: %s\n", - cnt, asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - /* Create a phony debug info section. */ - scn = asm_newscn_ingrp (ctx, ".stab", SHT_PROGBITS, 0, grp); - if (scn == NULL) - { - printf ("cannot stab section for group %Zu: %s\n", - cnt, asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - /* Add some content. */ - if (asm_adduint32 (scn, cnt) != 0) - { - printf ("cannot create content of section \"%s\": %s\n", - buf, asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - } - - /* Create the output file. */ - if (asm_end (ctx) != 0) - { - printf ("cannot create output file: %s\n", asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - if (result == 0) - result = WEXITSTATUS (system ("\ -env LD_LIBRARY_PATH=../libelf ../src/elflint -q asm-tst6-out.o")); - - /* We don't need the file anymore. */ - unlink (fname); - - return result; -} diff --git a/tests/asm-tst7.c b/tests/asm-tst7.c deleted file mode 100644 index ebd45594..00000000 --- a/tests/asm-tst7.c +++ /dev/null @@ -1,164 +0,0 @@ -/* Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <fcntl.h> -#include <inttypes.h> -#include <libasm.h> -#include <libelf.h> -#include <stdio.h> -#include <unistd.h> - - -static const char fname[] = "asm-tst7-out.o"; - - -int -main (void) -{ - int result = 0; - size_t cnt; - AsmCtx_t *ctx; - Elf *elf; - int fd; - - elf_version (EV_CURRENT); - - ctx = asm_begin (fname, false, EM_386, ELFCLASS32, ELFDATA2LSB); - if (ctx == NULL) - { - printf ("cannot create assembler context: %s\n", asm_errmsg (-1)); - return 1; - } - - if (asm_newcomsym (ctx, "commsym", 4, 16) == NULL) - { - printf ("cannot create common symbol: %s\n", asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - /* Create the output file. */ - if (asm_end (ctx) != 0) - { - printf ("cannot create output file: %s\n", asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - /* Check the file. */ - fd = open (fname, O_RDONLY); - if (fd == -1) - { - printf ("cannot open generated file: %m\n"); - result = 1; - goto out; - } - - elf = elf_begin (fd, ELF_C_READ, NULL); - if (elf == NULL) - { - printf ("cannot create ELF descriptor: %s\n", elf_errmsg (-1)); - result = 1; - goto out_close; - } - if (elf_kind (elf) != ELF_K_ELF) - { - puts ("not a valid ELF file"); - result = 1; - goto out_close2; - } - - for (cnt = 1; 1; ++cnt) - { - Elf_Scn *scn; - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - - scn = elf_getscn (elf, cnt); - if (scn == NULL) - { - printf ("cannot get section %Zd: %s\n", cnt, elf_errmsg (-1)); - result = 1; - continue; - } - - shdr = gelf_getshdr (scn, &shdr_mem); - if (shdr == NULL) - { - printf ("cannot get section header for section %Zd: %s\n", - cnt, elf_errmsg (-1)); - result = 1; - continue; - } - /* We are looking for the symbol table. */ - if (shdr->sh_type != SHT_SYMTAB) - continue; - - for (cnt = 1; cnt< (shdr->sh_size - / gelf_fsize (elf, ELF_T_SYM, 1, EV_CURRENT)); - ++cnt) - { - GElf_Sym sym_mem; - GElf_Sym *sym; - - if (cnt > 1) - { - puts ("too many symbol"); - result = 1; - break; - } - - sym = gelf_getsym (elf_getdata (scn, NULL), cnt, &sym_mem); - if (sym == NULL) - { - printf ("cannot get symbol %zu: %s\n", cnt, elf_errmsg (-1)); - result = 1; - } - else - { - if (sym->st_shndx != SHN_COMMON) - { - printf ("expected common symbol, got section %u\n", - (unsigned int) sym->st_shndx); - result = 1; - } - - if (sym->st_value != 16) - { - printf ("requested alignment 16, is %" PRIuMAX "\n", - (uintmax_t) sym->st_value); - result = 1; - } - - if (sym->st_size != 4) - { - printf ("requested size 4, is %" PRIuMAX "\n", - (uintmax_t) sym->st_value); - result = 1; - } - } - } - - break; - } - - out_close2: - elf_end (elf); - out_close: - close (fd); - out: - /* We don't need the file anymore. */ - unlink (fname); - - return result; -} diff --git a/tests/asm-tst8.c b/tests/asm-tst8.c deleted file mode 100644 index 6ce7c9c0..00000000 --- a/tests/asm-tst8.c +++ /dev/null @@ -1,172 +0,0 @@ -/* Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <fcntl.h> -#include <inttypes.h> -#include <libasm.h> -#include <libelf.h> -#include <stdio.h> -#include <unistd.h> - - -static const char fname[] = "asm-tst8-out.o"; - - -int -main (void) -{ - int result = 0; - size_t cnt; - AsmCtx_t *ctx; - Elf *elf; - int fd; - - elf_version (EV_CURRENT); - - ctx = asm_begin (fname, false, EM_386, ELFCLASS32, ELFDATA2LSB); - if (ctx == NULL) - { - printf ("cannot create assembler context: %s\n", asm_errmsg (-1)); - return 1; - } - - if (asm_newabssym (ctx, "tst8-out.s", 4, 0xfeedbeef, STT_FILE, STB_LOCAL) - == NULL) - { - printf ("cannot create absolute symbol: %s\n", asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - /* Create the output file. */ - if (asm_end (ctx) != 0) - { - printf ("cannot create output file: %s\n", asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - /* Check the file. */ - fd = open (fname, O_RDONLY); - if (fd == -1) - { - printf ("cannot open generated file: %m\n"); - result = 1; - goto out; - } - - elf = elf_begin (fd, ELF_C_READ, NULL); - if (elf == NULL) - { - printf ("cannot create ELF descriptor: %s\n", elf_errmsg (-1)); - result = 1; - goto out_close; - } - if (elf_kind (elf) != ELF_K_ELF) - { - puts ("not a valid ELF file"); - result = 1; - goto out_close2; - } - - for (cnt = 1; 1; ++cnt) - { - Elf_Scn *scn; - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - - scn = elf_getscn (elf, cnt); - if (scn == NULL) - { - printf ("cannot get section %Zd: %s\n", cnt, elf_errmsg (-1)); - result = 1; - continue; - } - - shdr = gelf_getshdr (scn, &shdr_mem); - if (shdr == NULL) - { - printf ("cannot get section header for section %Zd: %s\n", - cnt, elf_errmsg (-1)); - result = 1; - continue; - } - /* We are looking for the symbol table. */ - if (shdr->sh_type != SHT_SYMTAB) - continue; - - for (cnt = 1; cnt< (shdr->sh_size - / gelf_fsize (elf, ELF_T_SYM, 1, EV_CURRENT)); - ++cnt) - { - GElf_Sym sym_mem; - GElf_Sym *sym; - - if (cnt > 1) - { - puts ("too many symbol"); - result = 1; - break; - } - - sym = gelf_getsym (elf_getdata (scn, NULL), cnt, &sym_mem); - if (sym == NULL) - { - printf ("cannot get symbol %zu: %s\n", cnt, elf_errmsg (-1)); - result = 1; - } - else - { - if (sym->st_shndx != SHN_ABS) - { - printf ("expected common symbol, got section %u\n", - (unsigned int) sym->st_shndx); - result = 1; - } - - if (sym->st_value != 0xfeedbeef) - { - printf ("requested value 0xfeedbeef, is %#" PRIxMAX "\n", - (uintmax_t) sym->st_value); - result = 1; - } - - if (sym->st_size != 4) - { - printf ("requested size 4, is %" PRIuMAX "\n", - (uintmax_t) sym->st_value); - result = 1; - } - - if (GELF_ST_TYPE (sym->st_info) != STT_FILE) - { - printf ("requested type FILE, is %u\n", - (unsigned int) GELF_ST_TYPE (sym->st_info)); - result = 1; - } - } - } - - break; - } - - out_close2: - elf_end (elf); - out_close: - close (fd); - out: - /* We don't need the file anymore. */ - unlink (fname); - - return result; -} diff --git a/tests/asm-tst9.c b/tests/asm-tst9.c deleted file mode 100644 index 28bb4787..00000000 --- a/tests/asm-tst9.c +++ /dev/null @@ -1,318 +0,0 @@ -/* Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <fcntl.h> -#include <inttypes.h> -#include <libasm.h> -#include <libelf.h> -#include <stdio.h> -#include <string.h> -#include <unistd.h> - - -static const char fname[] = "asm-tst9-out.o"; - - -static int32_t input[] = - { - 0, 1, 129, 510, 2000, 33000, 0x7ffffff, 0x7fffffff - }; -#define ninput (sizeof (input) / sizeof (input[0])) - - -static const GElf_Ehdr expected_ehdr = - { - .e_ident = { [EI_MAG0] = ELFMAG0, - [EI_MAG1] = ELFMAG1, - [EI_MAG2] = ELFMAG2, - [EI_MAG3] = ELFMAG3, - [EI_CLASS] = ELFCLASS32, - [EI_DATA] = ELFDATA2LSB, - [EI_VERSION] = EV_CURRENT }, - .e_type = ET_REL, - .e_machine = EM_386, - .e_version = EV_CURRENT, - .e_shoff = 180, - .e_ehsize = sizeof (Elf32_Ehdr), - .e_shentsize = sizeof (Elf32_Shdr), - .e_shnum = 3, - .e_shstrndx = 2 - }; - - -static const char *scnnames[3] = - { - [0] = "", - [1] = ".data", - [2] = ".shstrtab" - }; - - -static const char expecteddata[] = - { - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x7f, - 0x81, 0x01, 0x81, 0x01, 0xff, 0xfe, 0xff, 0xff, 0x0f, 0xff, 0x7e, 0xfe, - 0x03, 0xfe, 0x03, 0x82, 0xfc, 0xff, 0xff, 0x0f, 0x82, 0x7c, 0xd0, 0x0f, - 0xd0, 0x0f, 0xb0, 0xf0, 0xff, 0xff, 0x0f, 0xb0, 0x70, 0xe8, 0x81, 0x02, - 0xe8, 0x81, 0x02, 0x98, 0xfe, 0xfd, 0xff, 0x0f, 0x98, 0xfe, 0x7d, 0xff, - 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0x3f, 0x81, 0x80, 0x80, 0xc0, 0x0f, - 0x81, 0x80, 0x80, 0x40, 0xff, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, - 0xff, 0x07, 0x81, 0x80, 0x80, 0x80, 0x08, 0x81, 0x80, 0x80, 0x80, 0x78 - }; - - -int -main (void) -{ - AsmCtx_t *ctx; - AsmScn_t *scn; - int result = 0; - int fd; - Elf *elf; - GElf_Ehdr ehdr_mem; - GElf_Ehdr *ehdr; - size_t cnt; - - elf_version (EV_CURRENT); - - ctx = asm_begin (fname, false, EM_386, ELFCLASS32, ELFDATA2LSB); - if (ctx == NULL) - { - printf ("cannot create assembler context: %s\n", asm_errmsg (-1)); - return 1; - } - - /* Create two sections. */ - scn = asm_newscn (ctx, ".data", SHT_PROGBITS, SHF_ALLOC | SHF_WRITE); - if (scn == NULL) - { - printf ("cannot create section in output file: %s\n", asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - /* Special alignment for the .text section. */ - if (asm_align (scn, 16) != 0) - { - printf ("cannot align .text section: %s\n", asm_errmsg (-1)); - result = 1; - } - - /* Add a few ULEB128 and SLEB128 numbers. */ - for (cnt = 0; cnt < ninput; ++cnt) - { - if (asm_adduleb128 (scn, input[cnt]) != 0) - { - printf ("cannot insert uleb %" PRIu32 ": %s\n", - (uint32_t) input[cnt], asm_errmsg (-1)); - result = 1; - } - - if (asm_addsleb128 (scn, input[cnt]) != 0) - { - printf ("cannot insert sleb %" PRId32 ": %s\n", - input[cnt], asm_errmsg (-1)); - result = 1; - } - - if (asm_adduleb128 (scn, -input[cnt]) != 0) - { - printf ("cannot insert uleb %" PRIu32 ": %s\n", - (uint32_t) -input[cnt], asm_errmsg (-1)); - result = 1; - } - - if (asm_addsleb128 (scn, -input[cnt]) != 0) - { - printf ("cannot insert sleb %" PRId32 ": %s\n", - -input[cnt], asm_errmsg (-1)); - result = 1; - } - } - - /* Create the output file. */ - if (asm_end (ctx) != 0) - { - printf ("cannot create output file: %s\n", asm_errmsg (-1)); - asm_abort (ctx); - return 1; - } - - /* Check the file. */ - fd = open (fname, O_RDONLY); - if (fd == -1) - { - printf ("cannot open generated file: %m\n"); - result = 1; - goto out; - } - - elf = elf_begin (fd, ELF_C_READ, NULL); - if (elf == NULL) - { - printf ("cannot create ELF descriptor: %s\n", elf_errmsg (-1)); - result = 1; - goto out_close; - } - if (elf_kind (elf) != ELF_K_ELF) - { - puts ("not a valid ELF file"); - result = 1; - goto out_close2; - } - - ehdr = gelf_getehdr (elf, &ehdr_mem); - if (ehdr == NULL) - { - printf ("cannot get ELF header: %s\n", elf_errmsg (-1)); - result = 1; - goto out_close2; - } - - if (memcmp (ehdr, &expected_ehdr, sizeof (GElf_Ehdr)) != 0) - { - puts ("ELF header does not match"); - result = 1; - goto out_close2; - } - - for (cnt = 1; cnt < 3; ++cnt) - { - Elf_Scn *scn; - GElf_Shdr shdr_mem; - GElf_Shdr *shdr; - - scn = elf_getscn (elf, cnt); - if (scn == NULL) - { - printf ("cannot get section %Zd: %s\n", cnt, elf_errmsg (-1)); - result = 1; - continue; - } - - shdr = gelf_getshdr (scn, &shdr_mem); - if (shdr == NULL) - { - printf ("cannot get section header for section %Zd: %s\n", - cnt, elf_errmsg (-1)); - result = 1; - continue; - } - - if (strcmp (elf_strptr (elf, ehdr->e_shstrndx, shdr->sh_name), - scnnames[cnt]) != 0) - { - printf ("section %Zd's name differs: %s vs %s\n", cnt, - elf_strptr (elf, ehdr->e_shstrndx, shdr->sh_name), - scnnames[cnt]); - result = 1; - } - - if (shdr->sh_type != (cnt == 2 ? SHT_STRTAB : SHT_PROGBITS)) - { - printf ("section %Zd's type differs\n", cnt); - result = 1; - } - - if ((cnt == 1 && shdr->sh_flags != (SHF_ALLOC | SHF_WRITE)) - || (cnt == 2 && shdr->sh_flags != 0)) - { - printf ("section %Zd's flags differs\n", cnt); - result = 1; - } - - if (shdr->sh_addr != 0) - { - printf ("section %Zd's address differs\n", cnt); - result = 1; - } - - if ((cnt == 1 && shdr->sh_offset != ((sizeof (Elf32_Ehdr) + 15) & ~15)) - || (cnt == 2 - && shdr->sh_offset != (((sizeof (Elf32_Ehdr) + 15) & ~15) - + sizeof (expecteddata)))) - { - printf ("section %Zd's offset differs\n", cnt); - result = 1; - } - - if ((cnt == 1 && shdr->sh_size != sizeof (expecteddata)) - || (cnt == 2 && shdr->sh_size != 17)) - { - printf ("section %Zd's size differs\n", cnt); - result = 1; - } - - if (shdr->sh_link != 0) - { - printf ("section %Zd's link differs\n", cnt); - result = 1; - } - - if (shdr->sh_info != 0) - { - printf ("section %Zd's info differs\n", cnt); - result = 1; - } - - if ((cnt == 1 && shdr->sh_addralign != 16) - || (cnt != 1 && shdr->sh_addralign != 1)) - { - printf ("section %Zd's addralign differs\n", cnt); - result = 1; - } - - if (shdr->sh_entsize != 0) - { - printf ("section %Zd's entsize differs\n", cnt); - result = 1; - } - - if (cnt == 1) - { - Elf_Data *data = elf_getdata (scn, NULL); - - if (data == NULL) - { - printf ("cannot get data of section %Zd\n", cnt); - result = 1; - } - else - { - if (data->d_size != sizeof (expecteddata)) - { - printf ("data block size of section %Zd wrong: got %Zd, " - "expected 96\n", cnt, data->d_size); - result = 1; - } - - if (memcmp (data->d_buf, expecteddata, sizeof (expecteddata)) - != 0) - { - printf ("data block content of section %Zd wrong\n", cnt); - result = 1; - } - } - } - } - - out_close2: - elf_end (elf); - out_close: - close (fd); - out: - /* We don't need the file anymore. */ - unlink (fname); - - return result; -} diff --git a/tests/ecp.c b/tests/ecp.c deleted file mode 100644 index 15bc71cc..00000000 --- a/tests/ecp.c +++ /dev/null @@ -1,88 +0,0 @@ -/* Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <errno.h> -#include <error.h> -#include <fcntl.h> -#include <gelf.h> -#include <stdlib.h> -#include <unistd.h> - -int -main (int argc, char *argv[]) -{ - if (argc < 3) - error (EXIT_FAILURE, 0, "usage: %s FROMNAME TONAME", argv[0]); - - elf_version (EV_CURRENT); - - int infd = open (argv[1], O_RDONLY); - if (infd == -1) - error (EXIT_FAILURE, errno, "cannot open input file '%s'", argv[1]); - - Elf *inelf = elf_begin (infd, ELF_C_READ, NULL); - if (inelf == NULL) - error (EXIT_FAILURE, 0, "problems opening '%s' as ELF file: %s", - argv[1], elf_errmsg (-1)); - - int outfd = creat (argv[2], 0666); - if (outfd == -1) - error (EXIT_FAILURE, errno, "cannot open output file '%s'", argv[2]); - - Elf *outelf = elf_begin (outfd, ELF_C_WRITE, NULL); - if (outelf == NULL) - error (EXIT_FAILURE, 0, "problems opening '%s' as ELF file: %s", - argv[2], elf_errmsg (-1)); - - gelf_newehdr (outelf, gelf_getclass (inelf)); - - GElf_Ehdr ehdr_mem; - GElf_Ehdr *ehdr; - gelf_update_ehdr (outelf, (ehdr = gelf_getehdr (inelf, &ehdr_mem))); - - if (ehdr->e_phnum > 0) - { - int cnt; - - if (gelf_newphdr (outelf, ehdr->e_phnum) == 0) - error (EXIT_FAILURE, 0, "cannot create program header: %s", - elf_errmsg (-1)); - - for (cnt = 0; cnt < ehdr->e_phnum; ++cnt) - { - GElf_Phdr phdr_mem; - - gelf_update_phdr (outelf, cnt, gelf_getphdr (inelf, cnt, &phdr_mem)); - } - } - - Elf_Scn *scn = NULL; - while ((scn = elf_nextscn (inelf, scn)) != NULL) - { - Elf_Scn *newscn = elf_newscn (outelf); - - GElf_Shdr shdr_mem; - gelf_update_shdr (newscn, gelf_getshdr (scn, &shdr_mem)); - - *elf_newdata (newscn) = *elf_getdata (scn, NULL); - } - - elf_flagelf (outelf, ELF_C_SET, ELF_F_LAYOUT); - - if (elf_update (outelf, ELF_C_WRITE) == -1) - error (EXIT_FAILURE, 0, "elf_update failed: %s", elf_errmsg (-1)); - - close (outfd); - - return 0; -} diff --git a/tests/get-aranges.c b/tests/get-aranges.c deleted file mode 100644 index 1be76b2d..00000000 --- a/tests/get-aranges.c +++ /dev/null @@ -1,134 +0,0 @@ -/* Copyright (C) 2002, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <fcntl.h> -#include <libelf.h> -#include <libdw.h> -#include <stdio.h> -#include <unistd.h> - - -static const Dwarf_Addr testaddr[] = -{ - 0x804842b, 0x804842c, 0x804843c, 0x8048459, 0x804845a, - 0x804845b, 0x804845c, 0x8048460, 0x8048465, 0x8048466, - 0x8048467, 0x8048468, 0x8048470, 0x8048471, 0x8048472 -}; -#define ntestaddr (sizeof (testaddr) / sizeof (testaddr[0])) - - -int -main (int argc, char *argv[]) -{ - int result = 0; - int cnt; - - for (cnt = 1; cnt < argc; ++cnt) - { - int fd = open (argv[cnt], O_RDONLY); - - Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ); - if (dbg == NULL) - { - printf ("%s not usable\n", argv[cnt]); - result = 1; - close (fd); - continue; - } - - Dwarf_Aranges *aranges; - size_t naranges; - if (dwarf_getaranges (dbg, &aranges, &naranges) != 0) - printf ("%s: cannot get aranges\n", argv[cnt]); - else - { - for (size_t i = 0; i < ntestaddr; ++i) - { - Dwarf_Arange *found; - - found = dwarf_getarange_addr (aranges, testaddr[i]); - if (found != NULL) - { - Dwarf_Off cu_offset; - - if (dwarf_getarangeinfo (found, NULL, NULL, &cu_offset) != 0) - { - puts ("failed to get CU die offset"); - result = 1; - } - else - { - const char *cuname; - Dwarf_Die cu_die; - - if (dwarf_offdie (dbg, cu_offset, &cu_die) == NULL - || (cuname = dwarf_diename (&cu_die)) == NULL) - { - puts ("failed to get CU die"); - result = 1; - } - else - printf ("CU name: \"%s\"\n", cuname); - } - } - else - printf ("%#llx: not in range\n", - (unsigned long long int) testaddr[i]); - } - - for (size_t i = 0; i < naranges; ++i) - { - Dwarf_Arange *arange = dwarf_onearange (aranges, i); - if (arange == NULL) - { - printf ("cannot get arange %zu: %s\n", i, dwarf_errmsg (-1)); - break; - } - - Dwarf_Addr start; - Dwarf_Word length; - Dwarf_Off cu_offset; - - if (dwarf_getarangeinfo (arange, &start, &length, &cu_offset) - != 0) - { - printf ("cannot get info from aranges[%zu]\n", i); - result = 1; - } - else - { - printf (" [%2zu] start: %#llx, length: %llu, cu: %llu\n", - i, (unsigned long long int) start, - (unsigned long long int) length, - (unsigned long long int) cu_offset); - - const char *cuname; - Dwarf_Die cu_die; - if (dwarf_offdie (dbg, cu_offset, &cu_die) == NULL - || (cuname = dwarf_diename (&cu_die)) == NULL) - { - puts ("failed to get CU die"); - result = 1; - } - else - printf ("CU name: \"%s\"\n", cuname); - } - } - } - - dwarf_end (dbg); - close (fd); - } - - return result; -} diff --git a/tests/get-files.c b/tests/get-files.c deleted file mode 100644 index 537d1eac..00000000 --- a/tests/get-files.c +++ /dev/null @@ -1,83 +0,0 @@ -/* Copyright (C) 2002, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <fcntl.h> -#include <libelf.h> -#include <libdw.h> -#include <stdio.h> -#include <unistd.h> - - -int -main (int argc, char *argv[]) -{ - int result = 0; - int cnt; - - for (cnt = 1; cnt < argc; ++cnt) - { - int fd = open (argv[cnt], O_RDONLY); - - Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ); - if (dbg == NULL) - { - printf ("%s not usable\n", argv[cnt]); - result = 1; - if (fd != -1) - close (fd); - continue; - } - - Dwarf_Off o = 0; - Dwarf_Off ncu; - Dwarf_Off ao; - size_t cuhl; - uint8_t asz; - uint8_t osz; - while (dwarf_nextcu (dbg, o, &ncu, &cuhl, &ao, &asz, &osz) == 0) - { - printf ("cuhl = %zu, o = %llu, asz = %hhu, osz = %hhu, ncu = %llu\n", - cuhl, (unsigned long long int) ao, - asz, osz, (unsigned long long int) ncu); - - Dwarf_Die die_mem; - Dwarf_Die *die = dwarf_offdie (dbg, o + cuhl, &die_mem); - if (die == NULL) - { - printf ("%s: cannot get CU die\n", argv[cnt]); - result = 1; - break; - } - - Dwarf_Files *files; - size_t nfiles; - if (dwarf_getsrcfiles (die, &files, &nfiles) != 0) - { - printf ("%s: cannot get files\n", argv[cnt]); - result = 1; - break; - } - - for (int i = 0; i < nfiles; ++i) - printf (" file[%d] = \"%s\"\n", i, - dwarf_filesrc (files, i, NULL, NULL)); - - o = ncu; - } - - dwarf_end (dbg); - close (fd); - } - - return result; -} diff --git a/tests/get-lines.c b/tests/get-lines.c deleted file mode 100644 index 6a8c0764..00000000 --- a/tests/get-lines.c +++ /dev/null @@ -1,129 +0,0 @@ -/* Copyright (C) 2002, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <fcntl.h> -#include <inttypes.h> -#include <libelf.h> -#include <libdw.h> -#include <stdio.h> -#include <unistd.h> - - -int -main (int argc, char *argv[]) -{ - int result = 0; - int cnt; - - for (cnt = 1; cnt < argc; ++cnt) - { - int fd = open (argv[cnt], O_RDONLY); - - Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ); - if (dbg == NULL) - { - printf ("%s not usable: %s\n", argv[cnt], dwarf_errmsg (-1)); - close (fd); - continue; - } - - Dwarf_Off cuoff = 0; - Dwarf_Off old_cuoff = 0; - size_t hsize; - Dwarf_Off ao; - uint8_t asz; - uint8_t osz; - while (dwarf_nextcu (dbg, cuoff, &cuoff, &hsize, &ao, &asz, &osz) == 0) - { - printf ("cuhl = %zu, o = %llu, asz = %hhu, osz = %hhu, ncu = %llu\n", - hsize, (unsigned long long int) ao, - asz, osz, (unsigned long long int) cuoff); - - /* Get the DIE for the CU. */ - Dwarf_Die die; - if (dwarf_offdie (dbg, old_cuoff + hsize, &die) == NULL) - { - /* Something went wrong. */ - printf ("%s: cannot get CU die\n", argv[cnt]); - result = 1; - break; - } - old_cuoff = cuoff; - - Dwarf_Lines *lb; - size_t nlb; - if (dwarf_getsrclines (&die, &lb, &nlb) != 0) - { - printf ("%s: cannot get lines\n", argv[cnt]); - result = 1; - break; - } - - printf (" %zu lines\n", nlb); - - for (size_t i = 0; i < nlb; ++i) - { - Dwarf_Line *l = dwarf_onesrcline (lb, i); - if (l == NULL) - { - printf ("%s: cannot get individual line\n", argv[cnt]); - result = 1; - break; - } - - Dwarf_Addr addr; - if (dwarf_lineaddr (l, &addr) != 0) - addr = 0; - const char *file = dwarf_linesrc (l, NULL, NULL); - int line; - if (dwarf_lineno (l, &line) != 0) - line = 0; - - printf ("%" PRIx64 ": %s:%d:", (uint64_t) addr, - file ?: "???", line); - - int column; - if (dwarf_linecol (l, &column) != 0) - column = 0; - if (column >= 0) - printf ("%d:", column); - - bool is_stmt; - if (dwarf_linebeginstatement (l, &is_stmt) != 0) - is_stmt = false; - bool end_sequence; - if (dwarf_lineendsequence (l, &end_sequence) != 0) - end_sequence = false; - bool basic_block; - if (dwarf_lineblock (l, &basic_block) != 0) - basic_block = false; - bool prologue_end; - if (dwarf_lineprologueend (l, &prologue_end) != 0) - prologue_end = false; - bool epilogue_begin; - if (dwarf_lineepiloguebegin (l, &epilogue_begin) != 0) - epilogue_begin = false; - - printf (" is_stmt:%s, end_seq:%s, bb:%s, prologue:%s, epilogue:%s\n", - is_stmt ? "yes" : "no", end_sequence ? "yes" : "no", - basic_block ? "yes" : "no", prologue_end ? "yes" : "no", - epilogue_begin ? "yes" : "no"); - } - } - - dwarf_end (dbg); - close (fd); - } - - return result; -} diff --git a/tests/get-pubnames.c b/tests/get-pubnames.c deleted file mode 100644 index 3523f72f..00000000 --- a/tests/get-pubnames.c +++ /dev/null @@ -1,90 +0,0 @@ -/* Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <fcntl.h> -#include <libelf.h> -#include <libdw.h> -#include <stdio.h> -#include <unistd.h> - - -static int globcnt; - -static int -callback (Dwarf *dbg, Dwarf_Global *gl, void *arg) -{ - int result = DWARF_CB_OK; - - printf (" [%2d] \"%s\", die: %llu, cu: %llu\n", - globcnt++, gl->name, (unsigned long long int) gl->die_offset, - (unsigned long long int) gl->cu_offset); - - Dwarf_Die cu_die; - const char *cuname; - if (dwarf_offdie (dbg, gl->cu_offset, &cu_die) == NULL - || (cuname = dwarf_diename (&cu_die)) == NULL) - { - puts ("failed to get CU die"); - result = DWARF_CB_ABORT; - } - else - printf ("CU name: \"%s\"\n", cuname); - - const char *diename; - Dwarf_Die die; - if (dwarf_offdie (dbg, gl->die_offset, &die) == NULL - || (diename = dwarf_diename (&die)) == NULL) - { - puts ("failed to get object die"); - result = DWARF_CB_ABORT; - } - else - printf ("object name: \"%s\"\n", diename); - - return result; -} - - -int -main (int argc, char *argv[]) -{ - int result = 0; - int cnt; - - for (cnt = 1; cnt < argc; ++cnt) - { - int fd = open (argv[cnt], O_RDONLY); - Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ); - if (dbg == NULL) - { - printf ("%s not usable: %s\n", argv[cnt], dwarf_errmsg (-1)); - result = 1; - close (fd); - continue; - } - - globcnt = 0; - - if (dwarf_getpubnames (dbg, callback, NULL, 0) != 0) - { - printf ("dwarf_get_pubnames didn't return zero: %s\n", - dwarf_errmsg (-1)); - result = 1; - } - - dwarf_end (dbg); - close (fd); - } - - return result; -} diff --git a/tests/hash.c b/tests/hash.c deleted file mode 100644 index afe853bb..00000000 --- a/tests/hash.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <libelf.h> -#include <stdio.h> - - -static int -check (const char *name, unsigned long int expected) -{ - unsigned long int actual = elf_hash (name); - - return actual != expected; -} - - -int -main (void) -{ - int status; - - /* Check some names. We know what the expected result is. */ - status = check ("_DYNAMIC", 165832675); - status |= check ("_GLOBAL_OFFSET_TABLE_", 102264335); - - return status; -} diff --git a/tests/msg_tst.c b/tests/msg_tst.c deleted file mode 100644 index 67e63c0e..00000000 --- a/tests/msg_tst.c +++ /dev/null @@ -1,99 +0,0 @@ -/* Copyright (C) 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <config.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include <libelfP.h> - -static struct -{ - int id; - const char *expected; -} libelf_msgs[ELF_E_NUM] = - { - { ELF_E_NOERROR, "no error" }, - { ELF_E_UNKNOWN_ERROR, "unknown error" }, - { ELF_E_UNKNOWN_VERSION, "unknown version" }, - { ELF_E_UNKNOWN_TYPE, "unknown type" }, - { ELF_E_INVALID_HANDLE, "invalid `Elf' handle" }, - { ELF_E_SOURCE_SIZE, "invalid size of source operand" }, - { ELF_E_DEST_SIZE, "invalid size of destination operand" }, - { ELF_E_INVALID_ENCODING, "invalid encoding" }, - { ELF_E_NOMEM, "out of memory" }, - { ELF_E_INVALID_FILE, "invalid file descriptor" }, - { ELF_E_INVALID_OP, "invalid operation" }, - { ELF_E_NO_VERSION, "ELF version not set" }, - { ELF_E_INVALID_CMD, "invalid command" }, - { ELF_E_RANGE, "offset out of range" }, - { ELF_E_ARCHIVE_FMAG, "invalid fmag field in archive header" }, - { ELF_E_INVALID_ARCHIVE, "invalid archive file" }, - { ELF_E_NO_ARCHIVE, "descriptor is not for an archive" }, - { ELF_E_NO_INDEX, "no index available" }, - { ELF_E_READ_ERROR, "cannot read data from file" }, - { ELF_E_WRITE_ERROR, "cannot write data to file" }, - { ELF_E_INVALID_CLASS, "invalid binary class" }, - { ELF_E_INVALID_INDEX, "invalid section index" }, - { ELF_E_INVALID_OPERAND, "invalid operand" }, - { ELF_E_INVALID_SECTION, "invalid section" }, - { ELF_E_INVALID_COMMAND, "invalid command" }, - { ELF_E_WRONG_ORDER_EHDR, "executable header not created first" }, - { ELF_E_FD_DISABLED, "file descriptor disabled" }, - { ELF_E_FD_MISMATCH, "archive/member fildes mismatch" }, - { ELF_E_OFFSET_RANGE, "offset out of range" }, - { ELF_E_NOT_NUL_SECTION, "cannot manipulate null section" }, - { ELF_E_DATA_MISMATCH, "data/scn mismatch" }, - { ELF_E_INVALID_SECTION_HEADER, "invalid section header" }, - { ELF_E_INVALID_DATA, "invalid data" }, - { ELF_E_DATA_ENCODING, "unknown data encoding" }, - { ELF_E_SECTION_TOO_SMALL, "section `sh_size' too small for data" }, - { ELF_E_INVALID_ALIGN, "invalid section alignment" }, - { ELF_E_INVALID_SHENTSIZE, "invalid section entry size" }, - { ELF_E_UPDATE_RO, "update() for write on read-only file" }, - { ELF_E_NOFILE, "no such file" }, - { ELF_E_GROUP_NOT_REL, - "only relocatable files can contain section groups" }, - { ELF_E_INVALID_PHDR, - "program header only allowed in executables and shared objects" }, - { ELF_E_NO_PHDR, - "file has no program header" } - }; - - -int -main (void) -{ - size_t cnt; - int result = EXIT_SUCCESS; - - /* Clear the error state. */ - (void) elf_errno (); - - /* Check all the messages of libelf. */ - for (cnt = 1; cnt < ELF_E_NUM; ++cnt) - { - const char *str = elf_errmsg (libelf_msgs[cnt].id); - - if (strcmp (str, libelf_msgs[cnt].expected) != 0) - { - printf ("libelf msg %zu: expected \"%s\", got \"%s\"\n", - cnt, libelf_msgs[cnt].expected, str); - result = EXIT_FAILURE; - } - } - - return result; -} diff --git a/tests/newfile.c b/tests/newfile.c deleted file mode 100644 index 5efc862a..00000000 --- a/tests/newfile.c +++ /dev/null @@ -1,166 +0,0 @@ -/* Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1999. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <config.h> - -#include <libelf.h> -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> - -static void -print_ehdr (Elf32_Ehdr *ehdr) -{ - int n; - - for (n = 0; n < EI_NIDENT; ++n) - printf (" %02x", ehdr->e_ident[n]); - - printf ("\ntype = %d\nmachine = %d\nversion = %d\nentry = %d\n" - "phoff = %d\nshoff = %d\nflags = %d\nehsize = %d\n" - "phentsize = %d\nphnum = %d\nshentsize = %d\nshnum = %d\n" - "shstrndx = %d\n", - ehdr->e_type, - ehdr->e_machine, - ehdr->e_version, - ehdr->e_entry, - ehdr->e_phoff, - ehdr->e_shoff, - ehdr->e_flags, - ehdr->e_ehsize, - ehdr->e_phentsize, - ehdr->e_phnum, - ehdr->e_shentsize, - ehdr->e_shnum, - ehdr->e_shstrndx); -} - -int -main (int argc, char *argv[]) -{ - Elf *elf; - int result = 0; - int fd; - char fname[] = "newfile-XXXXXX"; - - fd = mkstemp (fname); - if (fd == -1) - { - printf ("cannot create temporary file: %m\n"); - exit (1); - } - /* Remove the file when we exit. */ - unlink (fname); - - elf_version (EV_CURRENT); - elf = elf_begin (fd, ELF_C_WRITE, NULL); - if (elf == NULL) - { - printf ("elf_begin: %s\n", elf_errmsg (-1)); - result = 1; - } - else - { - if (elf32_newehdr (elf) == NULL) - { - printf ("elf32_newehdr: %s\n", elf_errmsg (-1)); - result = 1; - } - else - { - Elf32_Ehdr *ehdr = elf32_getehdr (elf); - - if (ehdr == NULL) - { - printf ("elf32_getehdr: %s\n", elf_errmsg (-1)); - result = 1; - } - else - { - int i; - - if (argc > 1) - /* Use argc as a debugging flag. */ - print_ehdr (ehdr); - - /* Some tests. */ - for (i = 0; i < EI_NIDENT; ++i) - if (ehdr->e_ident[i] != 0) - { - printf ("ehdr->e_ident[%d] != 0\n", i); - result = 1; - break; - } - -#define VALUE_TEST(name, val) \ - if (ehdr->name != val) \ - { \ - printf ("ehdr->%s != %d\n", #name, val); \ - result = 1; \ - } -#define ZERO_TEST(name) VALUE_TEST (name, 0) - ZERO_TEST (e_type); - ZERO_TEST (e_machine); - ZERO_TEST (e_version); - ZERO_TEST (e_entry); - ZERO_TEST (e_phoff); - ZERO_TEST (e_shoff); - ZERO_TEST (e_flags); - ZERO_TEST (e_ehsize); - ZERO_TEST (e_phentsize); - ZERO_TEST (e_phnum); - ZERO_TEST (e_shentsize); - ZERO_TEST (e_shnum); - ZERO_TEST (e_shstrndx); - - if (elf32_newphdr (elf, 10) == NULL) - { - printf ("elf32_newphdr: %s\n", elf_errmsg (-1)); - result = 1; - } - else - { - if (argc > 1) - print_ehdr (ehdr); - - ehdr = elf32_getehdr (elf); - if (ehdr == NULL) - { - printf ("elf32_getehdr (#2): %s\n", elf_errmsg (-1)); - result = 1; - } - else - { - ZERO_TEST (e_type); - ZERO_TEST (e_machine); - ZERO_TEST (e_version); - ZERO_TEST (e_entry); - ZERO_TEST (e_phoff); - ZERO_TEST (e_shoff); - ZERO_TEST (e_flags); - ZERO_TEST (e_ehsize); - VALUE_TEST (e_phentsize, (int) sizeof (Elf32_Phdr)); - VALUE_TEST (e_phnum, 10); - ZERO_TEST (e_shentsize); - ZERO_TEST (e_shnum); - ZERO_TEST (e_shstrndx); - } - } - } - } - - (void) elf_end (elf); - } - - return result; -} diff --git a/tests/newscn.c b/tests/newscn.c deleted file mode 100644 index bc975130..00000000 --- a/tests/newscn.c +++ /dev/null @@ -1,58 +0,0 @@ -/* Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <assert.h> -#include <fcntl.h> -#include <libelf.h> -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> - - -int -main (int argc, char *argv[]) -{ - Elf *elf; - int fd; - Elf_Scn *section; - - if (elf_version (EV_CURRENT) == EV_NONE) - { - fprintf (stderr, "library fd of date\n"); - exit (1); - } - - char name[] = "test.XXXXXX"; - fd = mkstemp (name); - if (fd < 0) - { - fprintf (stderr, "Failed to open fdput file: %s\n", name); - exit (1); - } - unlink (name); - - elf = elf_begin (fd, ELF_C_WRITE, NULL); - if (elf == NULL) - { - fprintf (stderr, "Failed to elf_begin fdput file: %s\n", name); - exit (1); - } - - section = elf_newscn (elf); - section = elf_nextscn (elf, section); - assert (section == NULL); - - elf_end (elf); - close (fd); - - return 0; -} diff --git a/tests/run-arextract.sh b/tests/run-arextract.sh deleted file mode 100644 index 839a6792..00000000 --- a/tests/run-arextract.sh +++ /dev/null @@ -1,34 +0,0 @@ -#! /bin/sh -# Copyright (C) 1999, 2000, 2002 Red Hat, Inc. -# Written by Ulrich Drepper <drepper@redhat.com>, 1999. -# -# This program is Open Source software; you can redistribute it and/or -# modify it under the terms of the Open Software License version 1.0 as -# published by the Open Source Initiative. -# -# You should have received a copy of the Open Software License along -# with this program; if not, you may obtain a copy of the Open Software -# License version 1.0 from http://www.opensource.org/licenses/osl.php or -# by writing the Open Source Initiative c/o Lawrence Rosen, Esq., -# 3001 King Ranch Road, Ukiah, CA 95482. - -archive=../libelf/.libs/libelf.a -test -f $archive || archive=../libelf/libelf.a -if test -f $archive; then - # The file is really available (i.e., no shared-only built). - echo -n "Extracting symbols... $ac_c" - - # The files we are looking at. - for f in ../libelf/*.o; do - ./arextract $archive `basename $f` arextract.test || exit 1 - cmp $f arextract.test || { - echo "Extraction of $1 failed" - exit 1 - } - rm -f ${objpfx}arextract.test - done - - echo "done" -fi - -exit 0 diff --git a/tests/run-arsymtest.sh b/tests/run-arsymtest.sh deleted file mode 100644 index 793cdb8f..00000000 --- a/tests/run-arsymtest.sh +++ /dev/null @@ -1,41 +0,0 @@ -#! /bin/sh -# Copyright (C) 1999, 2000, 2002 Red Hat, Inc. -# Written by Ulrich Drepper <drepper@redhat.com>, 1999. -# -# This program is Open Source software; you can redistribute it and/or -# modify it under the terms of the Open Software License version 1.0 as -# published by the Open Source Initiative. -# -# You should have received a copy of the Open Software License along -# with this program; if not, you may obtain a copy of the Open Software -# License version 1.0 from http://www.opensource.org/licenses/osl.php or -# by writing the Open Source Initiative c/o Lawrence Rosen, Esq., -# 3001 King Ranch Road, Ukiah, CA 95482. - -lib=../libelf/libelf.a -okfile=arsymtest.ok -tmpfile=arsymtest.tmp -testfile=arsymtest.test - -result=0 -if test -f $lib; then - # Generate list using `nm' we check against. - nm -s $lib | - sed -e '1,/^Arch/d' -e '/^$/,$d' | - sort > $okfile - - # Now run our program using libelf. - ./arsymtest $lib $tmpfile || exit 1 - sort $tmpfile > $testfile - rm $tmpfile - - # Compare the outputs. - if cmp $okfile $testfile; then - result=0 - rm $testfile $okfile - else - result=1 - fi -fi - -exit $result diff --git a/tests/run-ecp-test.sh b/tests/run-ecp-test.sh deleted file mode 100644 index e4304965..00000000 --- a/tests/run-ecp-test.sh +++ /dev/null @@ -1,25 +0,0 @@ -#! /bin/sh -# Copyright (C) 2002 Red Hat, Inc. -# Written by Jakub Jelinek <jakub@redhat.com>, 2002. -# -# This program is Open Source software; you can redistribute it and/or -# modify it under the terms of the Open Software License version 1.0 as -# published by the Open Source Initiative. -# -# You should have received a copy of the Open Software License along -# with this program; if not, you may obtain a copy of the Open Software -# License version 1.0 from http://www.opensource.org/licenses/osl.php or -# by writing the Open Source Initiative c/o Lawrence Rosen, Esq., -# 3001 King Ranch Road, Ukiah, CA 95482. -set -e - -# Don't fail if we cannot decompress the file. -bunzip2 -c $srcdir/testfile10.bz2 > testfile10 2>/dev/null || exit 0 - -./ecp testfile10 testfile10.tmp - -cmp testfile10 testfile10.tmp - -rm -f testfile10 testfile10.tmp - -exit 0 diff --git a/tests/run-ecp-test2.sh b/tests/run-ecp-test2.sh deleted file mode 100644 index 143c70a6..00000000 --- a/tests/run-ecp-test2.sh +++ /dev/null @@ -1,23 +0,0 @@ -#! /bin/sh -# Copyright (C) 2002 Red Hat, Inc. -# Written by Jakub Jelinek <jakub@redhat.com>, 2002. -# -# This program is Open Source software; you can redistribute it and/or -# modify it under the terms of the Open Software License version 1.0 as -# published by the Open Source Initiative. -# -# You should have received a copy of the Open Software License along -# with this program; if not, you may obtain a copy of the Open Software -# License version 1.0 from http://www.opensource.org/licenses/osl.php or -# by writing the Open Source Initiative c/o Lawrence Rosen, Esq., -# 3001 King Ranch Road, Ukiah, CA 95482. -set -e - -# Don't fail if we cannot decompress the file. -bunzip2 -c $srcdir/testfile2.bz2 > testfile2 2>/dev/null || exit 0 - -./ecp testfile2 testfile2.tmp - -rm -f testfile2 testfile2.tmp - -exit 0 diff --git a/tests/run-get-aranges.sh b/tests/run-get-aranges.sh deleted file mode 100644 index 26b29863..00000000 --- a/tests/run-get-aranges.sh +++ /dev/null @@ -1,71 +0,0 @@ -#! /bin/sh -# Copyright (C) 1999, 2000, 2002 Red Hat, Inc. -# Written by Ulrich Drepper <drepper@redhat.com>, 1999. -# -# This program is Open Source software; you can redistribute it and/or -# modify it under the terms of the Open Software License version 1.0 as -# published by the Open Source Initiative. -# -# You should have received a copy of the Open Software License along -# with this program; if not, you may obtain a copy of the Open Software -# License version 1.0 from http://www.opensource.org/licenses/osl.php or -# by writing the Open Source Initiative c/o Lawrence Rosen, Esq., -# 3001 King Ranch Road, Ukiah, CA 95482. -set -e - -# Don't fail if we cannot decompress the file. -bunzip2 -c $srcdir/testfile.bz2 > testfile 2>/dev/null || exit 0 - -# Don't fail if we cannot decompress the file. -bunzip2 -c $srcdir/testfile2.bz2 > testfile2 2>/dev/null || exit 0 - -./get-aranges testfile testfile2 > get-aranges.out - -cmp get-aranges.out - <<"EOF" -0x804842b: not in range -CU name: "m.c" -CU name: "m.c" -CU name: "m.c" -0x804845a: not in range -0x804845b: not in range -CU name: "b.c" -CU name: "b.c" -CU name: "b.c" -0x8048466: not in range -0x8048467: not in range -CU name: "f.c" -CU name: "f.c" -CU name: "f.c" -0x8048472: not in range - [ 0] start: 0x804842c, length: 46, cu: 11 -CU name: "m.c" - [ 1] start: 0x804845c, length: 10, cu: 202 -CU name: "b.c" - [ 2] start: 0x8048468, length: 10, cu: 5628 -CU name: "f.c" -0x804842b: not in range -0x804842c: not in range -0x804843c: not in range -0x8048459: not in range -0x804845a: not in range -0x804845b: not in range -0x804845c: not in range -0x8048460: not in range -0x8048465: not in range -0x8048466: not in range -0x8048467: not in range -0x8048468: not in range -0x8048470: not in range -0x8048471: not in range -0x8048472: not in range - [ 0] start: 0x10000470, length: 32, cu: 11 -CU name: "b.c" - [ 1] start: 0x10000490, length: 32, cu: 2429 -CU name: "f.c" - [ 2] start: 0x100004b0, length: 100, cu: 2532 -CU name: "m.c" -EOF - -rm -f testfile testfile2 get-aranges.out - -exit 0 diff --git a/tests/run-get-files.sh b/tests/run-get-files.sh deleted file mode 100644 index 7af5c139..00000000 --- a/tests/run-get-files.sh +++ /dev/null @@ -1,64 +0,0 @@ -#! /bin/sh -# Copyright (C) 1999, 2000, 2002, 2004 Red Hat, Inc. -# Written by Ulrich Drepper <drepper@redhat.com>, 1999. -# -# This program is Open Source software; you can redistribute it and/or -# modify it under the terms of the Open Software License version 1.0 as -# published by the Open Source Initiative. -# -# You should have received a copy of the Open Software License along -# with this program; if not, you may obtain a copy of the Open Software -# License version 1.0 from http://www.opensource.org/licenses/osl.php or -# by writing the Open Source Initiative c/o Lawrence Rosen, Esq., -# 3001 King Ranch Road, Ukiah, CA 95482. -set -e - -# Don't fail if we cannot decompress the file. -bunzip2 -c $srcdir/testfile.bz2 > testfile 2>/dev/null || exit 0 - -# Don't fail if we cannot decompress the file. -bunzip2 -c $srcdir/testfile2.bz2 > testfile2 2>/dev/null || exit 0 - -./get-files testfile testfile2 > get-files.out - -diff -u get-files.out - <<"EOF" -cuhl = 11, o = 0, asz = 4, osz = 4, ncu = 191 - file[0] = "???" - file[1] = "/home/drepper/gnu/new-bu/build/ttt/m.c" -cuhl = 11, o = 114, asz = 4, osz = 4, ncu = 5617 - file[0] = "???" - file[1] = "/home/drepper/gnu/new-bu/build/ttt/b.c" - file[2] = "/usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stddef.h" - file[3] = "/usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stdarg.h" - file[4] = "/usr/include/bits/types.h" - file[5] = "/usr/include/bits/sched.h" - file[6] = "/usr/include/bits/pthreadtypes.h" - file[7] = "/usr/include/stdio.h" - file[8] = "/usr/include/libio.h" - file[9] = "/usr/include/wchar.h" - file[10] = "/usr/include/_G_config.h" - file[11] = "/usr/include/gconv.h" -cuhl = 11, o = 412, asz = 4, osz = 4, ncu = 5752 - file[0] = "???" - file[1] = "/home/drepper/gnu/new-bu/build/ttt/f.c" -cuhl = 11, o = 0, asz = 4, osz = 4, ncu = 2418 - file[0] = "???" - file[1] = "/shoggoth/drepper/b.c" - file[2] = "/home/geoffk/objs/laurel-000912-branch/lib/gcc-lib/powerpc-unknown-linux-gnu/2.96-laurel-000912/include/stddef.h" - file[3] = "/home/geoffk/objs/laurel-000912-branch/lib/gcc-lib/powerpc-unknown-linux-gnu/2.96-laurel-000912/include/stdarg.h" - file[4] = "/shoggoth/drepper/<built-in>" - file[5] = "/usr/include/bits/types.h" - file[6] = "/usr/include/stdio.h" - file[7] = "/usr/include/libio.h" - file[8] = "/usr/include/_G_config.h" -cuhl = 11, o = 213, asz = 4, osz = 4, ncu = 2521 - file[0] = "???" - file[1] = "/shoggoth/drepper/f.c" -cuhl = 11, o = 267, asz = 4, osz = 4, ncu = 2680 - file[0] = "???" - file[1] = "/shoggoth/drepper/m.c" -EOF - -rm -f testfile testfil2 get-files.out - -exit 0 diff --git a/tests/run-get-lines.sh b/tests/run-get-lines.sh deleted file mode 100644 index 70c9cd84..00000000 --- a/tests/run-get-lines.sh +++ /dev/null @@ -1,67 +0,0 @@ -#! /bin/sh -# Copyright (C) 1999, 2000, 2002, 2004 Red Hat, Inc. -# Written by Ulrich Drepper <drepper@redhat.com>, 1999. -# -# This program is Open Source software; you can redistribute it and/or -# modify it under the terms of the Open Software License version 1.0 as -# published by the Open Source Initiative. -# -# You should have received a copy of the Open Software License along -# with this program; if not, you may obtain a copy of the Open Software -# License version 1.0 from http://www.opensource.org/licenses/osl.php or -# by writing the Open Source Initiative c/o Lawrence Rosen, Esq., -# 3001 King Ranch Road, Ukiah, CA 95482. -set -e - -# Don't fail if we cannot decompress the file. -bunzip2 -c $srcdir/testfile.bz2 > testfile 2>/dev/null || exit 0 - -# Don't fail if we cannot decompress the file. -bunzip2 -c $srcdir/testfile2.bz2 > testfile2 2>/dev/null || exit 0 - -./get-lines testfile testfile2 > get-lines.out - -diff -u get-lines.out - <<"EOF" -cuhl = 11, o = 0, asz = 4, osz = 4, ncu = 191 - 5 lines -804842c: /home/drepper/gnu/new-bu/build/ttt/m.c:5:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no -8048432: /home/drepper/gnu/new-bu/build/ttt/m.c:6:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no -804844d: /home/drepper/gnu/new-bu/build/ttt/m.c:7:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no -8048458: /home/drepper/gnu/new-bu/build/ttt/m.c:8:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no -804845a: /home/drepper/gnu/new-bu/build/ttt/m.c:8:0: is_stmt:yes, end_seq:yes, bb:no, prologue:no, epilogue:no -cuhl = 11, o = 114, asz = 4, osz = 4, ncu = 5617 - 4 lines -804845c: /home/drepper/gnu/new-bu/build/ttt/b.c:4:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no -804845f: /home/drepper/gnu/new-bu/build/ttt/b.c:5:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no -8048464: /home/drepper/gnu/new-bu/build/ttt/b.c:6:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no -8048466: /home/drepper/gnu/new-bu/build/ttt/b.c:6:0: is_stmt:yes, end_seq:yes, bb:no, prologue:no, epilogue:no -cuhl = 11, o = 412, asz = 4, osz = 4, ncu = 5752 - 4 lines -8048468: /home/drepper/gnu/new-bu/build/ttt/f.c:3:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no -804846b: /home/drepper/gnu/new-bu/build/ttt/f.c:4:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no -8048470: /home/drepper/gnu/new-bu/build/ttt/f.c:5:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no -8048472: /home/drepper/gnu/new-bu/build/ttt/f.c:5:0: is_stmt:yes, end_seq:yes, bb:no, prologue:no, epilogue:no -cuhl = 11, o = 0, asz = 4, osz = 4, ncu = 2418 - 4 lines -10000470: /shoggoth/drepper/b.c:4:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no -1000047c: /shoggoth/drepper/b.c:5:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no -10000480: /shoggoth/drepper/b.c:6:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no -10000490: /shoggoth/drepper/b.c:6:0: is_stmt:yes, end_seq:yes, bb:no, prologue:no, epilogue:no -cuhl = 11, o = 213, asz = 4, osz = 4, ncu = 2521 - 4 lines -10000490: /shoggoth/drepper/f.c:3:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no -1000049c: /shoggoth/drepper/f.c:4:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no -100004a0: /shoggoth/drepper/f.c:5:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no -100004b0: /shoggoth/drepper/f.c:5:0: is_stmt:yes, end_seq:yes, bb:no, prologue:no, epilogue:no -cuhl = 11, o = 267, asz = 4, osz = 4, ncu = 2680 - 5 lines -100004b0: /shoggoth/drepper/m.c:5:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no -100004cc: /shoggoth/drepper/m.c:6:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no -100004e8: /shoggoth/drepper/m.c:7:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no -100004f4: /shoggoth/drepper/m.c:8:0: is_stmt:yes, end_seq:no, bb:no, prologue:no, epilogue:no -10000514: /shoggoth/drepper/m.c:8:0: is_stmt:yes, end_seq:yes, bb:no, prologue:no, epilogue:no -EOF - -rm -f testfile testfile2 get-lines.out - -exit 0 diff --git a/tests/run-get-pubnames.sh b/tests/run-get-pubnames.sh deleted file mode 100644 index a232bfd2..00000000 --- a/tests/run-get-pubnames.sh +++ /dev/null @@ -1,53 +0,0 @@ -#! /bin/sh -# Copyright (C) 1999, 2000, 2002, 2003 Red Hat, Inc. -# Written by Ulrich Drepper <drepper@redhat.com>, 1999. -# -# This program is Open Source software; you can redistribute it and/or -# modify it under the terms of the Open Software License version 1.0 as -# published by the Open Source Initiative. -# -# You should have received a copy of the Open Software License along -# with this program; if not, you may obtain a copy of the Open Software -# License version 1.0 from http://www.opensource.org/licenses/osl.php or -# by writing the Open Source Initiative c/o Lawrence Rosen, Esq., -# 3001 King Ranch Road, Ukiah, CA 95482. -set -e - -# Don't fail if we cannot decompress the file. -bunzip2 -c $srcdir/testfile.bz2 > testfile 2>/dev/null || exit 0 - -# Don't fail if we cannot decompress the file. -bunzip2 -c $srcdir/testfile2.bz2 > testfile2 2>/dev/null || exit 0 - -./get-pubnames testfile testfile2 > get-pubnames.out - -diff -u get-pubnames.out - <<"EOF" - [ 0] "main", die: 104, cu: 11 -CU name: "m.c" -object name: "main" - [ 1] "a", die: 174, cu: 11 -CU name: "m.c" -object name: "a" - [ 2] "bar", die: 295, cu: 202 -CU name: "b.c" -object name: "bar" - [ 3] "foo", die: 5721, cu: 5628 -CU name: "f.c" -object name: "foo" - [ 0] "bar", die: 72, cu: 11 -CU name: "b.c" -object name: "bar" - [ 1] "foo", die: 2490, cu: 2429 -CU name: "f.c" -object name: "foo" - [ 2] "main", die: 2593, cu: 2532 -CU name: "m.c" -object name: "main" - [ 3] "a", die: 2663, cu: 2532 -CU name: "m.c" -object name: "a" -EOF - -rm -f testfile testfile2 get-pubnames.out - -exit 0 diff --git a/tests/run-show-abbrev.sh b/tests/run-show-abbrev.sh deleted file mode 100644 index 78812a5f..00000000 --- a/tests/run-show-abbrev.sh +++ /dev/null @@ -1,355 +0,0 @@ -#! /bin/sh -# Copyright (C) 1999, 2000, 2002, 2003, 2004 Red Hat, Inc. -# Written by Ulrich Drepper <drepper@redhat.com>, 1999. -# -# This program is Open Source software; you can redistribute it and/or -# modify it under the terms of the Open Software License version 1.0 as -# published by the Open Source Initiative. -# -# You should have received a copy of the Open Software License along -# with this program; if not, you may obtain a copy of the Open Software -# License version 1.0 from http://www.opensource.org/licenses/osl.php or -# by writing the Open Source Initiative c/o Lawrence Rosen, Esq., -# 3001 King Ranch Road, Ukiah, CA 95482. -set -e - -# Don't fail if we cannot decompress the file. -bunzip2 -c $srcdir/testfile.bz2 > testfile 2>/dev/null || exit 0 - -# Don't fail if we cannot decompress the file. -bunzip2 -c $srcdir/testfile2.bz2 > testfile2 2>/dev/null || exit 0 - -./show-abbrev testfile testfile2 > show-abbrev.out - -diff -u show-abbrev.out - <<"EOF" -abbrev[0]: code = 1, tag = 17, children = 1 -abbrev[0]: attr[0]: code = 16, form = 6, offset = 0 -abbrev[0]: attr[1]: code = 18, form = 1, offset = 2 -abbrev[0]: attr[2]: code = 17, form = 1, offset = 4 -abbrev[0]: attr[3]: code = 3, form = 8, offset = 6 -abbrev[0]: attr[4]: code = 27, form = 8, offset = 8 -abbrev[0]: attr[5]: code = 37, form = 8, offset = 10 -abbrev[0]: attr[6]: code = 19, form = 11, offset = 12 -abbrev[19]: code = 2, tag = 46, children = 1 -abbrev[19]: attr[0]: code = 1, form = 19, offset = 19 -abbrev[19]: attr[1]: code = 63, form = 12, offset = 21 -abbrev[19]: attr[2]: code = 3, form = 8, offset = 23 -abbrev[19]: attr[3]: code = 58, form = 11, offset = 25 -abbrev[19]: attr[4]: code = 59, form = 11, offset = 27 -abbrev[19]: attr[5]: code = 39, form = 12, offset = 29 -abbrev[19]: attr[6]: code = 73, form = 19, offset = 31 -abbrev[19]: attr[7]: code = 17, form = 1, offset = 33 -abbrev[19]: attr[8]: code = 18, form = 1, offset = 35 -abbrev[19]: attr[9]: code = 64, form = 10, offset = 37 -abbrev[44]: code = 3, tag = 46, children = 1 -abbrev[44]: attr[0]: code = 1, form = 19, offset = 44 -abbrev[44]: attr[1]: code = 63, form = 12, offset = 46 -abbrev[44]: attr[2]: code = 3, form = 8, offset = 48 -abbrev[44]: attr[3]: code = 58, form = 11, offset = 50 -abbrev[44]: attr[4]: code = 59, form = 11, offset = 52 -abbrev[44]: attr[5]: code = 73, form = 19, offset = 54 -abbrev[44]: attr[6]: code = 60, form = 12, offset = 56 -abbrev[63]: code = 4, tag = 24, children = 0 -abbrev[68]: code = 5, tag = 46, children = 1 -abbrev[68]: attr[0]: code = 63, form = 12, offset = 68 -abbrev[68]: attr[1]: code = 3, form = 8, offset = 70 -abbrev[68]: attr[2]: code = 58, form = 11, offset = 72 -abbrev[68]: attr[3]: code = 59, form = 11, offset = 74 -abbrev[68]: attr[4]: code = 73, form = 19, offset = 76 -abbrev[68]: attr[5]: code = 60, form = 12, offset = 78 -abbrev[85]: code = 6, tag = 36, children = 0 -abbrev[85]: attr[0]: code = 3, form = 8, offset = 85 -abbrev[85]: attr[1]: code = 11, form = 11, offset = 87 -abbrev[85]: attr[2]: code = 62, form = 11, offset = 89 -abbrev[96]: code = 7, tag = 52, children = 0 -abbrev[96]: attr[0]: code = 3, form = 8, offset = 96 -abbrev[96]: attr[1]: code = 58, form = 11, offset = 98 -abbrev[96]: attr[2]: code = 59, form = 11, offset = 100 -abbrev[96]: attr[3]: code = 73, form = 19, offset = 102 -abbrev[96]: attr[4]: code = 63, form = 12, offset = 104 -abbrev[96]: attr[5]: code = 2, form = 10, offset = 106 -abbrev[0]: code = 1, tag = 17, children = 1 -abbrev[0]: attr[0]: code = 16, form = 6, offset = 114 -abbrev[0]: attr[1]: code = 18, form = 1, offset = 116 -abbrev[0]: attr[2]: code = 17, form = 1, offset = 118 -abbrev[0]: attr[3]: code = 3, form = 8, offset = 120 -abbrev[0]: attr[4]: code = 27, form = 8, offset = 122 -abbrev[0]: attr[5]: code = 37, form = 8, offset = 124 -abbrev[0]: attr[6]: code = 19, form = 11, offset = 126 -abbrev[19]: code = 2, tag = 46, children = 0 -abbrev[19]: attr[0]: code = 63, form = 12, offset = 133 -abbrev[19]: attr[1]: code = 3, form = 8, offset = 135 -abbrev[19]: attr[2]: code = 58, form = 11, offset = 137 -abbrev[19]: attr[3]: code = 59, form = 11, offset = 139 -abbrev[19]: attr[4]: code = 39, form = 12, offset = 141 -abbrev[19]: attr[5]: code = 73, form = 19, offset = 143 -abbrev[19]: attr[6]: code = 17, form = 1, offset = 145 -abbrev[19]: attr[7]: code = 18, form = 1, offset = 147 -abbrev[19]: attr[8]: code = 64, form = 10, offset = 149 -abbrev[42]: code = 3, tag = 36, children = 0 -abbrev[42]: attr[0]: code = 3, form = 8, offset = 156 -abbrev[42]: attr[1]: code = 11, form = 11, offset = 158 -abbrev[42]: attr[2]: code = 62, form = 11, offset = 160 -abbrev[53]: code = 4, tag = 22, children = 0 -abbrev[53]: attr[0]: code = 3, form = 8, offset = 167 -abbrev[53]: attr[1]: code = 58, form = 11, offset = 169 -abbrev[53]: attr[2]: code = 59, form = 11, offset = 171 -abbrev[53]: attr[3]: code = 73, form = 19, offset = 173 -abbrev[66]: code = 5, tag = 15, children = 0 -abbrev[66]: attr[0]: code = 11, form = 11, offset = 180 -abbrev[73]: code = 6, tag = 15, children = 0 -abbrev[73]: attr[0]: code = 11, form = 11, offset = 187 -abbrev[73]: attr[1]: code = 73, form = 19, offset = 189 -abbrev[82]: code = 7, tag = 19, children = 1 -abbrev[82]: attr[0]: code = 1, form = 19, offset = 196 -abbrev[82]: attr[1]: code = 11, form = 11, offset = 198 -abbrev[82]: attr[2]: code = 58, form = 11, offset = 200 -abbrev[82]: attr[3]: code = 59, form = 11, offset = 202 -abbrev[95]: code = 8, tag = 13, children = 0 -abbrev[95]: attr[0]: code = 3, form = 8, offset = 209 -abbrev[95]: attr[1]: code = 58, form = 11, offset = 211 -abbrev[95]: attr[2]: code = 59, form = 11, offset = 213 -abbrev[95]: attr[3]: code = 73, form = 19, offset = 215 -abbrev[95]: attr[4]: code = 56, form = 10, offset = 217 -abbrev[110]: code = 9, tag = 1, children = 1 -abbrev[110]: attr[0]: code = 1, form = 19, offset = 224 -abbrev[110]: attr[1]: code = 73, form = 19, offset = 226 -abbrev[119]: code = 10, tag = 33, children = 0 -abbrev[119]: attr[0]: code = 73, form = 19, offset = 233 -abbrev[119]: attr[1]: code = 47, form = 11, offset = 235 -abbrev[128]: code = 11, tag = 19, children = 1 -abbrev[128]: attr[0]: code = 1, form = 19, offset = 242 -abbrev[128]: attr[1]: code = 3, form = 8, offset = 244 -abbrev[128]: attr[2]: code = 11, form = 11, offset = 246 -abbrev[128]: attr[3]: code = 58, form = 11, offset = 248 -abbrev[128]: attr[4]: code = 59, form = 11, offset = 250 -abbrev[143]: code = 12, tag = 19, children = 0 -abbrev[143]: attr[0]: code = 3, form = 8, offset = 257 -abbrev[143]: attr[1]: code = 60, form = 12, offset = 259 -abbrev[152]: code = 13, tag = 13, children = 0 -abbrev[152]: attr[0]: code = 3, form = 8, offset = 266 -abbrev[152]: attr[1]: code = 58, form = 11, offset = 268 -abbrev[152]: attr[2]: code = 59, form = 5, offset = 270 -abbrev[152]: attr[3]: code = 73, form = 19, offset = 272 -abbrev[152]: attr[4]: code = 56, form = 10, offset = 274 -abbrev[167]: code = 14, tag = 22, children = 0 -abbrev[167]: attr[0]: code = 3, form = 8, offset = 281 -abbrev[167]: attr[1]: code = 58, form = 11, offset = 283 -abbrev[167]: attr[2]: code = 59, form = 5, offset = 285 -abbrev[167]: attr[3]: code = 73, form = 19, offset = 287 -abbrev[180]: code = 15, tag = 23, children = 1 -abbrev[180]: attr[0]: code = 1, form = 19, offset = 294 -abbrev[180]: attr[1]: code = 11, form = 11, offset = 296 -abbrev[180]: attr[2]: code = 58, form = 11, offset = 298 -abbrev[180]: attr[3]: code = 59, form = 11, offset = 300 -abbrev[193]: code = 16, tag = 13, children = 0 -abbrev[193]: attr[0]: code = 3, form = 8, offset = 307 -abbrev[193]: attr[1]: code = 58, form = 11, offset = 309 -abbrev[193]: attr[2]: code = 59, form = 11, offset = 311 -abbrev[193]: attr[3]: code = 73, form = 19, offset = 313 -abbrev[206]: code = 17, tag = 4, children = 1 -abbrev[206]: attr[0]: code = 1, form = 19, offset = 320 -abbrev[206]: attr[1]: code = 11, form = 11, offset = 322 -abbrev[206]: attr[2]: code = 58, form = 11, offset = 324 -abbrev[206]: attr[3]: code = 59, form = 11, offset = 326 -abbrev[219]: code = 18, tag = 40, children = 0 -abbrev[219]: attr[0]: code = 3, form = 8, offset = 333 -abbrev[219]: attr[1]: code = 28, form = 11, offset = 335 -abbrev[228]: code = 19, tag = 38, children = 0 -abbrev[228]: attr[0]: code = 73, form = 19, offset = 342 -abbrev[235]: code = 20, tag = 21, children = 1 -abbrev[235]: attr[0]: code = 1, form = 19, offset = 349 -abbrev[235]: attr[1]: code = 39, form = 12, offset = 351 -abbrev[235]: attr[2]: code = 73, form = 19, offset = 353 -abbrev[246]: code = 21, tag = 5, children = 0 -abbrev[246]: attr[0]: code = 73, form = 19, offset = 360 -abbrev[253]: code = 22, tag = 21, children = 1 -abbrev[253]: attr[0]: code = 1, form = 19, offset = 367 -abbrev[253]: attr[1]: code = 39, form = 12, offset = 369 -abbrev[262]: code = 23, tag = 33, children = 0 -abbrev[262]: attr[0]: code = 73, form = 19, offset = 376 -abbrev[262]: attr[1]: code = 47, form = 6, offset = 378 -abbrev[271]: code = 24, tag = 22, children = 0 -abbrev[271]: attr[0]: code = 3, form = 8, offset = 385 -abbrev[271]: attr[1]: code = 58, form = 11, offset = 387 -abbrev[271]: attr[2]: code = 59, form = 11, offset = 389 -abbrev[282]: code = 25, tag = 4, children = 1 -abbrev[282]: attr[0]: code = 1, form = 19, offset = 396 -abbrev[282]: attr[1]: code = 3, form = 8, offset = 398 -abbrev[282]: attr[2]: code = 11, form = 11, offset = 400 -abbrev[282]: attr[3]: code = 58, form = 11, offset = 402 -abbrev[282]: attr[4]: code = 59, form = 11, offset = 404 -abbrev[0]: code = 1, tag = 17, children = 1 -abbrev[0]: attr[0]: code = 16, form = 6, offset = 412 -abbrev[0]: attr[1]: code = 18, form = 1, offset = 414 -abbrev[0]: attr[2]: code = 17, form = 1, offset = 416 -abbrev[0]: attr[3]: code = 3, form = 8, offset = 418 -abbrev[0]: attr[4]: code = 27, form = 8, offset = 420 -abbrev[0]: attr[5]: code = 37, form = 8, offset = 422 -abbrev[0]: attr[6]: code = 19, form = 11, offset = 424 -abbrev[19]: code = 2, tag = 46, children = 0 -abbrev[19]: attr[0]: code = 63, form = 12, offset = 431 -abbrev[19]: attr[1]: code = 3, form = 8, offset = 433 -abbrev[19]: attr[2]: code = 58, form = 11, offset = 435 -abbrev[19]: attr[3]: code = 59, form = 11, offset = 437 -abbrev[19]: attr[4]: code = 39, form = 12, offset = 439 -abbrev[19]: attr[5]: code = 73, form = 19, offset = 441 -abbrev[19]: attr[6]: code = 17, form = 1, offset = 443 -abbrev[19]: attr[7]: code = 18, form = 1, offset = 445 -abbrev[19]: attr[8]: code = 64, form = 10, offset = 447 -abbrev[42]: code = 3, tag = 36, children = 0 -abbrev[42]: attr[0]: code = 3, form = 8, offset = 454 -abbrev[42]: attr[1]: code = 11, form = 11, offset = 456 -abbrev[42]: attr[2]: code = 62, form = 11, offset = 458 -abbrev[0]: code = 1, tag = 17, children = 1 -abbrev[0]: attr[0]: code = 16, form = 6, offset = 0 -abbrev[0]: attr[1]: code = 18, form = 1, offset = 2 -abbrev[0]: attr[2]: code = 17, form = 1, offset = 4 -abbrev[0]: attr[3]: code = 3, form = 8, offset = 6 -abbrev[0]: attr[4]: code = 27, form = 8, offset = 8 -abbrev[0]: attr[5]: code = 37, form = 8, offset = 10 -abbrev[0]: attr[6]: code = 19, form = 11, offset = 12 -abbrev[19]: code = 2, tag = 46, children = 0 -abbrev[19]: attr[0]: code = 63, form = 12, offset = 19 -abbrev[19]: attr[1]: code = 3, form = 8, offset = 21 -abbrev[19]: attr[2]: code = 58, form = 11, offset = 23 -abbrev[19]: attr[3]: code = 59, form = 11, offset = 25 -abbrev[19]: attr[4]: code = 39, form = 12, offset = 27 -abbrev[19]: attr[5]: code = 73, form = 19, offset = 29 -abbrev[19]: attr[6]: code = 17, form = 1, offset = 31 -abbrev[19]: attr[7]: code = 18, form = 1, offset = 33 -abbrev[19]: attr[8]: code = 64, form = 10, offset = 35 -abbrev[42]: code = 3, tag = 36, children = 0 -abbrev[42]: attr[0]: code = 3, form = 8, offset = 42 -abbrev[42]: attr[1]: code = 11, form = 11, offset = 44 -abbrev[42]: attr[2]: code = 62, form = 11, offset = 46 -abbrev[53]: code = 4, tag = 22, children = 0 -abbrev[53]: attr[0]: code = 3, form = 8, offset = 53 -abbrev[53]: attr[1]: code = 58, form = 11, offset = 55 -abbrev[53]: attr[2]: code = 59, form = 11, offset = 57 -abbrev[53]: attr[3]: code = 73, form = 19, offset = 59 -abbrev[66]: code = 5, tag = 1, children = 1 -abbrev[66]: attr[0]: code = 1, form = 19, offset = 66 -abbrev[66]: attr[1]: code = 3, form = 8, offset = 68 -abbrev[66]: attr[2]: code = 73, form = 19, offset = 70 -abbrev[77]: code = 6, tag = 33, children = 0 -abbrev[77]: attr[0]: code = 73, form = 19, offset = 77 -abbrev[77]: attr[1]: code = 47, form = 11, offset = 79 -abbrev[86]: code = 7, tag = 19, children = 1 -abbrev[86]: attr[0]: code = 1, form = 19, offset = 86 -abbrev[86]: attr[1]: code = 3, form = 8, offset = 88 -abbrev[86]: attr[2]: code = 11, form = 11, offset = 90 -abbrev[86]: attr[3]: code = 58, form = 11, offset = 92 -abbrev[86]: attr[4]: code = 59, form = 11, offset = 94 -abbrev[101]: code = 8, tag = 13, children = 0 -abbrev[101]: attr[0]: code = 3, form = 8, offset = 101 -abbrev[101]: attr[1]: code = 58, form = 11, offset = 103 -abbrev[101]: attr[2]: code = 59, form = 11, offset = 105 -abbrev[101]: attr[3]: code = 73, form = 19, offset = 107 -abbrev[101]: attr[4]: code = 56, form = 10, offset = 109 -abbrev[116]: code = 9, tag = 15, children = 0 -abbrev[116]: attr[0]: code = 11, form = 11, offset = 116 -abbrev[123]: code = 10, tag = 15, children = 0 -abbrev[123]: attr[0]: code = 11, form = 11, offset = 123 -abbrev[123]: attr[1]: code = 73, form = 19, offset = 125 -abbrev[132]: code = 11, tag = 19, children = 1 -abbrev[132]: attr[0]: code = 1, form = 19, offset = 132 -abbrev[132]: attr[1]: code = 11, form = 11, offset = 134 -abbrev[132]: attr[2]: code = 58, form = 11, offset = 136 -abbrev[132]: attr[3]: code = 59, form = 11, offset = 138 -abbrev[145]: code = 12, tag = 1, children = 1 -abbrev[145]: attr[0]: code = 1, form = 19, offset = 145 -abbrev[145]: attr[1]: code = 73, form = 19, offset = 147 -abbrev[154]: code = 13, tag = 22, children = 0 -abbrev[154]: attr[0]: code = 3, form = 8, offset = 154 -abbrev[154]: attr[1]: code = 58, form = 11, offset = 156 -abbrev[154]: attr[2]: code = 59, form = 5, offset = 158 -abbrev[154]: attr[3]: code = 73, form = 19, offset = 160 -abbrev[167]: code = 14, tag = 19, children = 0 -abbrev[167]: attr[0]: code = 3, form = 8, offset = 167 -abbrev[167]: attr[1]: code = 60, form = 12, offset = 169 -abbrev[176]: code = 15, tag = 22, children = 0 -abbrev[176]: attr[0]: code = 3, form = 8, offset = 176 -abbrev[176]: attr[1]: code = 58, form = 11, offset = 178 -abbrev[176]: attr[2]: code = 59, form = 11, offset = 180 -abbrev[187]: code = 16, tag = 21, children = 1 -abbrev[187]: attr[0]: code = 1, form = 19, offset = 187 -abbrev[187]: attr[1]: code = 39, form = 12, offset = 189 -abbrev[187]: attr[2]: code = 73, form = 19, offset = 191 -abbrev[198]: code = 17, tag = 5, children = 0 -abbrev[198]: attr[0]: code = 73, form = 19, offset = 198 -abbrev[205]: code = 18, tag = 38, children = 0 -abbrev[205]: attr[0]: code = 73, form = 19, offset = 205 -abbrev[0]: code = 1, tag = 17, children = 1 -abbrev[0]: attr[0]: code = 16, form = 6, offset = 213 -abbrev[0]: attr[1]: code = 18, form = 1, offset = 215 -abbrev[0]: attr[2]: code = 17, form = 1, offset = 217 -abbrev[0]: attr[3]: code = 3, form = 8, offset = 219 -abbrev[0]: attr[4]: code = 27, form = 8, offset = 221 -abbrev[0]: attr[5]: code = 37, form = 8, offset = 223 -abbrev[0]: attr[6]: code = 19, form = 11, offset = 225 -abbrev[19]: code = 2, tag = 46, children = 0 -abbrev[19]: attr[0]: code = 63, form = 12, offset = 232 -abbrev[19]: attr[1]: code = 3, form = 8, offset = 234 -abbrev[19]: attr[2]: code = 58, form = 11, offset = 236 -abbrev[19]: attr[3]: code = 59, form = 11, offset = 238 -abbrev[19]: attr[4]: code = 39, form = 12, offset = 240 -abbrev[19]: attr[5]: code = 73, form = 19, offset = 242 -abbrev[19]: attr[6]: code = 17, form = 1, offset = 244 -abbrev[19]: attr[7]: code = 18, form = 1, offset = 246 -abbrev[19]: attr[8]: code = 64, form = 10, offset = 248 -abbrev[42]: code = 3, tag = 36, children = 0 -abbrev[42]: attr[0]: code = 3, form = 8, offset = 255 -abbrev[42]: attr[1]: code = 11, form = 11, offset = 257 -abbrev[42]: attr[2]: code = 62, form = 11, offset = 259 -abbrev[0]: code = 1, tag = 17, children = 1 -abbrev[0]: attr[0]: code = 16, form = 6, offset = 267 -abbrev[0]: attr[1]: code = 18, form = 1, offset = 269 -abbrev[0]: attr[2]: code = 17, form = 1, offset = 271 -abbrev[0]: attr[3]: code = 3, form = 8, offset = 273 -abbrev[0]: attr[4]: code = 27, form = 8, offset = 275 -abbrev[0]: attr[5]: code = 37, form = 8, offset = 277 -abbrev[0]: attr[6]: code = 19, form = 11, offset = 279 -abbrev[19]: code = 2, tag = 46, children = 1 -abbrev[19]: attr[0]: code = 1, form = 19, offset = 286 -abbrev[19]: attr[1]: code = 63, form = 12, offset = 288 -abbrev[19]: attr[2]: code = 3, form = 8, offset = 290 -abbrev[19]: attr[3]: code = 58, form = 11, offset = 292 -abbrev[19]: attr[4]: code = 59, form = 11, offset = 294 -abbrev[19]: attr[5]: code = 39, form = 12, offset = 296 -abbrev[19]: attr[6]: code = 73, form = 19, offset = 298 -abbrev[19]: attr[7]: code = 17, form = 1, offset = 300 -abbrev[19]: attr[8]: code = 18, form = 1, offset = 302 -abbrev[19]: attr[9]: code = 64, form = 10, offset = 304 -abbrev[44]: code = 3, tag = 46, children = 1 -abbrev[44]: attr[0]: code = 1, form = 19, offset = 311 -abbrev[44]: attr[1]: code = 63, form = 12, offset = 313 -abbrev[44]: attr[2]: code = 3, form = 8, offset = 315 -abbrev[44]: attr[3]: code = 58, form = 11, offset = 317 -abbrev[44]: attr[4]: code = 59, form = 11, offset = 319 -abbrev[44]: attr[5]: code = 73, form = 19, offset = 321 -abbrev[44]: attr[6]: code = 60, form = 12, offset = 323 -abbrev[63]: code = 4, tag = 24, children = 0 -abbrev[68]: code = 5, tag = 46, children = 1 -abbrev[68]: attr[0]: code = 63, form = 12, offset = 335 -abbrev[68]: attr[1]: code = 3, form = 8, offset = 337 -abbrev[68]: attr[2]: code = 58, form = 11, offset = 339 -abbrev[68]: attr[3]: code = 59, form = 11, offset = 341 -abbrev[68]: attr[4]: code = 73, form = 19, offset = 343 -abbrev[68]: attr[5]: code = 60, form = 12, offset = 345 -abbrev[85]: code = 6, tag = 36, children = 0 -abbrev[85]: attr[0]: code = 3, form = 8, offset = 352 -abbrev[85]: attr[1]: code = 11, form = 11, offset = 354 -abbrev[85]: attr[2]: code = 62, form = 11, offset = 356 -abbrev[96]: code = 7, tag = 52, children = 0 -abbrev[96]: attr[0]: code = 3, form = 8, offset = 363 -abbrev[96]: attr[1]: code = 58, form = 11, offset = 365 -abbrev[96]: attr[2]: code = 59, form = 11, offset = 367 -abbrev[96]: attr[3]: code = 73, form = 19, offset = 369 -abbrev[96]: attr[4]: code = 63, form = 12, offset = 371 -abbrev[96]: attr[5]: code = 2, form = 10, offset = 373 -EOF - -rm -f testfile testfile2 show-abbrev.out - -exit 0 diff --git a/tests/run-show-ciefde.sh b/tests/run-show-ciefde.sh deleted file mode 100644 index b3355334..00000000 --- a/tests/run-show-ciefde.sh +++ /dev/null @@ -1,319 +0,0 @@ -#! /bin/sh -# Copyright (C) 1999, 2000, 2002 Red Hat, Inc. -# Written by Ulrich Drepper <drepper@redhat.com>, 1999. -# -# This program is Open Source software; you can redistribute it and/or -# modify it under the terms of the Open Software License version 1.0 as -# published by the Open Source Initiative. -# -# You should have received a copy of the Open Software License along -# with this program; if not, you may obtain a copy of the Open Software -# License version 1.0 from http://www.opensource.org/licenses/osl.php or -# by writing the Open Source Initiative c/o Lawrence Rosen, Esq., -# 3001 King Ranch Road, Ukiah, CA 95482. -set -e - -# Don't fail if we cannot decompress the file. -bunzip2 -c $srcdir/testfile3.bz2 > testfile3 2>/dev/null || exit 0 - -# Don't fail if we cannot decompress the file. -bunzip2 -c $srcdir/testfile4.bz2 > testfile4 2>/dev/null || exit 0 - -./show-ciefde testfile3 testfile4 > show-ciefde.out - -diff -u show-ciefde.out - <<"EOF" -testfile3 has 1 CIEs and 1 FDEs -CIE[0]: bytes_in_cie = 16, version = 1, augmenter = "" -CIE[0]: code_alignment_factor = 1 -CIE[0]: data_alignment_factor = fffffffffffffffc -CIE[0]: return_address_register = 8 -CIE[0]: bytes = 0c 04 04 88 01 00 00 -FDE[0]: low_pc = 0x804842c, length = 41 -FDE[0]: bytes = 18 00 00 00 18 00 00 00 2c 84 04 08 29 00 00 00 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[0]: cie_offset = 0, cie_index = 0, fde_offset = 24 -FDE[0]: instructions = 41 0e 08 85 02 42 0d 05 41 83 03 00 -no FDE at 8048400 -FDE[@804842c]: cie_offset = 0, cie_index = 0, fde_offset = 24 -FDE[@8048454]: cie_offset = 0, cie_index = 0, fde_offset = 24 -no FDE at 8048455 -no FDE at 80493fc -testfile4 has 5 CIEs and 61 FDEs -CIE[0]: bytes_in_cie = 20, version = 1, augmenter = "eh" -CIE[0]: code_alignment_factor = 1 -CIE[0]: data_alignment_factor = fffffffffffffffc -CIE[0]: return_address_register = 8 -CIE[0]: bytes = 0c 04 04 88 01 -CIE[1]: bytes_in_cie = 16, version = 1, augmenter = "" -CIE[1]: code_alignment_factor = 1 -CIE[1]: data_alignment_factor = fffffffffffffffc -CIE[1]: return_address_register = 8 -CIE[1]: bytes = 0c 04 04 88 01 00 00 -CIE[2]: bytes_in_cie = 16, version = 1, augmenter = "" -CIE[2]: code_alignment_factor = 1 -CIE[2]: data_alignment_factor = fffffffffffffffc -CIE[2]: return_address_register = 8 -CIE[2]: bytes = 0c 04 04 88 01 00 00 -CIE[3]: bytes_in_cie = 20, version = 1, augmenter = "eh" -CIE[3]: code_alignment_factor = 1 -CIE[3]: data_alignment_factor = fffffffffffffffc -CIE[3]: return_address_register = 8 -CIE[3]: bytes = 0c 04 04 88 01 -CIE[4]: bytes_in_cie = 16, version = 1, augmenter = "" -CIE[4]: code_alignment_factor = 1 -CIE[4]: data_alignment_factor = fffffffffffffffc -CIE[4]: return_address_register = 8 -CIE[4]: bytes = 0c 04 04 88 01 00 00 -FDE[0]: low_pc = 0x80493fc, length = 154 -FDE[0]: bytes = 2c 00 00 00 1c 00 00 00 fc 93 04 08 9a 00 00 00 41 0e 08 85 02 42 0d 05 53 2e 08 50 2e 10 48 2e 00 58 2e 10 62 2e 00 63 2e 10 45 2e 00 00 00 00 -FDE[0]: cie_offset = 0, cie_index = 0, fde_offset = 28 -FDE[0]: instructions = 41 0e 08 85 02 42 0d 05 53 2e 08 50 2e 10 48 2e 00 58 2e 10 62 2e 00 63 2e 10 45 2e 00 00 00 00 -FDE[1]: low_pc = 0x8049498, length = 49 -FDE[1]: bytes = 18 00 00 00 4c 00 00 00 98 94 04 08 31 00 00 00 41 0e 08 85 02 42 0d 05 4c 2e 10 00 -FDE[1]: cie_offset = 0, cie_index = 0, fde_offset = 76 -FDE[1]: instructions = 41 0e 08 85 02 42 0d 05 4c 2e 10 00 -FDE[2]: low_pc = 0x80494d4, length = 23 -FDE[2]: bytes = 18 00 00 00 18 00 00 00 d4 94 04 08 17 00 00 00 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[2]: cie_offset = 100, cie_index = 1, fde_offset = 24 -FDE[2]: instructions = 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[3]: low_pc = 0x80494f0, length = 26 -FDE[3]: bytes = 18 00 00 00 34 00 00 00 f0 94 04 08 1a 00 00 00 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[3]: cie_offset = 100, cie_index = 1, fde_offset = 52 -FDE[3]: instructions = 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[4]: low_pc = 0x8049560, length = 85 -FDE[4]: bytes = 24 00 00 00 50 00 00 00 60 95 04 08 55 00 00 00 41 0e 08 85 02 42 0d 05 41 86 03 41 83 04 53 2e 10 4e 2e 00 55 2e 10 00 -FDE[4]: cie_offset = 100, cie_index = 1, fde_offset = 80 -FDE[4]: instructions = 41 0e 08 85 02 42 0d 05 41 86 03 41 83 04 53 2e 10 4e 2e 00 55 2e 10 00 -FDE[5]: low_pc = 0x80495c0, length = 66 -FDE[5]: bytes = 20 00 00 00 78 00 00 00 c0 95 04 08 42 00 00 00 41 0e 08 85 02 42 0d 05 41 86 03 41 83 04 5e 2e 10 00 00 00 -FDE[5]: cie_offset = 100, cie_index = 1, fde_offset = 120 -FDE[5]: instructions = 41 0e 08 85 02 42 0d 05 41 86 03 41 83 04 5e 2e 10 00 00 00 -FDE[6]: low_pc = 0x8049610, length = 28 -FDE[6]: bytes = 18 00 00 00 9c 00 00 00 10 96 04 08 1c 00 00 00 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[6]: cie_offset = 100, cie_index = 1, fde_offset = 156 -FDE[6]: instructions = 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[7]: low_pc = 0x8049630, length = 31 -FDE[7]: bytes = 18 00 00 00 b8 00 00 00 30 96 04 08 1f 00 00 00 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[7]: cie_offset = 100, cie_index = 1, fde_offset = 184 -FDE[7]: instructions = 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[8]: low_pc = 0x80496e0, length = 71 -FDE[8]: bytes = 1c 00 00 00 d4 00 00 00 e0 96 04 08 47 00 00 00 41 0e 08 85 02 42 0d 05 41 83 03 5c 2e 10 00 00 -FDE[8]: cie_offset = 100, cie_index = 1, fde_offset = 212 -FDE[8]: instructions = 41 0e 08 85 02 42 0d 05 41 83 03 5c 2e 10 00 00 -FDE[9]: low_pc = 0x8049730, length = 165 -FDE[9]: bytes = 20 00 00 00 f4 00 00 00 30 97 04 08 a5 00 00 00 41 0e 08 85 02 42 0d 05 41 83 03 69 2e 10 02 66 2e 00 00 00 -FDE[9]: cie_offset = 100, cie_index = 1, fde_offset = 244 -FDE[9]: instructions = 41 0e 08 85 02 42 0d 05 41 83 03 69 2e 10 02 66 2e 00 00 00 -FDE[10]: low_pc = 0x80497e0, length = 89 -FDE[10]: bytes = 1c 00 00 00 18 01 00 00 e0 97 04 08 59 00 00 00 41 0e 08 85 02 42 0d 05 41 83 03 74 2e 10 00 00 -FDE[10]: cie_offset = 100, cie_index = 1, fde_offset = 280 -FDE[10]: instructions = 41 0e 08 85 02 42 0d 05 41 83 03 74 2e 10 00 00 -FDE[11]: low_pc = 0x8049840, length = 89 -FDE[11]: bytes = 28 00 00 00 38 01 00 00 40 98 04 08 59 00 00 00 41 0e 08 85 02 42 0d 05 41 86 03 41 83 04 55 2e 10 4e 2e 00 52 2e 10 4c 2e 00 00 00 -FDE[11]: cie_offset = 100, cie_index = 1, fde_offset = 312 -FDE[11]: instructions = 41 0e 08 85 02 42 0d 05 41 86 03 41 83 04 55 2e 10 4e 2e 00 52 2e 10 4c 2e 00 00 00 -FDE[12]: low_pc = 0x80498a0, length = 176 -FDE[12]: bytes = 24 00 00 00 64 01 00 00 a0 98 04 08 b0 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 5e 2e 10 4c 2e 00 00 -FDE[12]: cie_offset = 100, cie_index = 1, fde_offset = 356 -FDE[12]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 5e 2e 10 4c 2e 00 00 -FDE[13]: low_pc = 0x8049950, length = 116 -FDE[13]: bytes = 24 00 00 00 8c 01 00 00 50 99 04 08 74 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 02 5e 2e 10 00 00 00 -FDE[13]: cie_offset = 100, cie_index = 1, fde_offset = 396 -FDE[13]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 02 5e 2e 10 00 00 00 -FDE[14]: low_pc = 0x80499d0, length = 31 -FDE[14]: bytes = 18 00 00 00 b4 01 00 00 d0 99 04 08 1f 00 00 00 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[14]: cie_offset = 100, cie_index = 1, fde_offset = 436 -FDE[14]: instructions = 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[15]: low_pc = 0x80499f0, length = 313 -FDE[15]: bytes = 24 00 00 00 d0 01 00 00 f0 99 04 08 39 01 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 02 d8 2e 10 62 2e 00 -FDE[15]: cie_offset = 100, cie_index = 1, fde_offset = 464 -FDE[15]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 02 d8 2e 10 62 2e 00 -FDE[16]: low_pc = 0x8049b30, length = 262 -FDE[16]: bytes = 24 00 00 00 f8 01 00 00 30 9b 04 08 06 01 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 02 c8 2e 10 62 2e 00 -FDE[16]: cie_offset = 100, cie_index = 1, fde_offset = 504 -FDE[16]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 02 c8 2e 10 62 2e 00 -FDE[17]: low_pc = 0x8049c40, length = 95 -FDE[17]: bytes = 1c 00 00 00 20 02 00 00 40 9c 04 08 5f 00 00 00 41 0e 08 85 02 42 0d 05 41 83 03 6e 2e 10 00 00 -FDE[17]: cie_offset = 100, cie_index = 1, fde_offset = 544 -FDE[17]: instructions = 41 0e 08 85 02 42 0d 05 41 83 03 6e 2e 10 00 00 -FDE[18]: low_pc = 0x8049d60, length = 230 -FDE[18]: bytes = 20 00 00 00 40 02 00 00 60 9d 04 08 e6 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 02 9a 2e 10 00 00 -FDE[18]: cie_offset = 100, cie_index = 1, fde_offset = 576 -FDE[18]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 02 9a 2e 10 00 00 -FDE[19]: low_pc = 0x8049e50, length = 85 -FDE[19]: bytes = 18 00 00 00 64 02 00 00 50 9e 04 08 55 00 00 00 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[19]: cie_offset = 100, cie_index = 1, fde_offset = 612 -FDE[19]: instructions = 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[20]: low_pc = 0x8049eb0, length = 144 -FDE[20]: bytes = 20 00 00 00 80 02 00 00 b0 9e 04 08 90 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 5b 2e 10 -FDE[20]: cie_offset = 100, cie_index = 1, fde_offset = 640 -FDE[20]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 5b 2e 10 -FDE[21]: low_pc = 0x8049f40, length = 115 -FDE[21]: bytes = 20 00 00 00 a4 02 00 00 40 9f 04 08 73 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 59 2e 10 -FDE[21]: cie_offset = 100, cie_index = 1, fde_offset = 676 -FDE[21]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 59 2e 10 -FDE[22]: low_pc = 0x8049fd0, length = 948 -FDE[22]: bytes = 30 00 00 00 c8 02 00 00 d0 9f 04 08 b4 03 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 02 f7 2e 20 02 64 2e 10 03 15 01 2e 00 02 9f 2e 10 00 00 -FDE[22]: cie_offset = 100, cie_index = 1, fde_offset = 712 -FDE[22]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 02 f7 2e 20 02 64 2e 10 03 15 01 2e 00 02 9f 2e 10 00 00 -FDE[23]: low_pc = 0x804a390, length = 201 -FDE[23]: bytes = 28 00 00 00 fc 02 00 00 90 a3 04 08 c9 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 02 58 2e 10 52 2e 00 75 2e 10 00 -FDE[23]: cie_offset = 100, cie_index = 1, fde_offset = 764 -FDE[23]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 02 58 2e 10 52 2e 00 75 2e 10 00 -FDE[24]: low_pc = 0x804a460, length = 206 -FDE[24]: bytes = 28 00 00 00 28 03 00 00 60 a4 04 08 ce 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 02 64 2e 10 52 2e 00 6e 2e 10 00 -FDE[24]: cie_offset = 100, cie_index = 1, fde_offset = 808 -FDE[24]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 02 64 2e 10 52 2e 00 6e 2e 10 00 -FDE[25]: low_pc = 0x804b970, length = 1274 -FDE[25]: bytes = 44 00 00 00 18 00 00 00 70 b9 04 08 fa 04 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 66 2e 10 7b 2e 20 03 7f 01 2e 10 53 2e 08 4c 2e 10 79 2e 20 02 54 2e 10 7e 2e 20 03 6c 01 2e 10 02 45 2e 20 00 00 00 -FDE[25]: cie_offset = 948, cie_index = 2, fde_offset = 24 -FDE[25]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 66 2e 10 7b 2e 20 03 7f 01 2e 10 53 2e 08 4c 2e 10 79 2e 20 02 54 2e 10 7e 2e 20 03 6c 01 2e 10 02 45 2e 20 00 00 00 -FDE[26]: low_pc = 0x804be70, length = 60 -FDE[26]: bytes = 1c 00 00 00 60 00 00 00 70 be 04 08 3c 00 00 00 41 0e 08 85 02 42 0d 05 41 83 03 5e 2e 10 00 00 -FDE[26]: cie_offset = 948, cie_index = 2, fde_offset = 96 -FDE[26]: instructions = 41 0e 08 85 02 42 0d 05 41 83 03 5e 2e 10 00 00 -FDE[27]: low_pc = 0x804c090, length = 85 -FDE[27]: bytes = 24 00 00 00 80 00 00 00 90 c0 04 08 55 00 00 00 41 0e 08 85 02 42 0d 05 41 83 03 66 2e 04 4d 2e 0c 4c 2e 04 46 2e 20 00 -FDE[27]: cie_offset = 948, cie_index = 2, fde_offset = 128 -FDE[27]: instructions = 41 0e 08 85 02 42 0d 05 41 83 03 66 2e 04 4d 2e 0c 4c 2e 04 46 2e 20 00 -FDE[28]: low_pc = 0x804c0f0, length = 75 -FDE[28]: bytes = 2c 00 00 00 a8 00 00 00 f0 c0 04 08 4b 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 5b 2e 04 4a 2e 0c 4d 2e 04 46 2e 20 00 00 00 -FDE[28]: cie_offset = 948, cie_index = 2, fde_offset = 168 -FDE[28]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 5b 2e 04 4a 2e 0c 4d 2e 04 46 2e 20 00 00 00 -FDE[29]: low_pc = 0x804d8e0, length = 71 -FDE[29]: bytes = 20 00 00 00 d8 00 00 00 e0 d8 04 08 47 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 60 2e 10 -FDE[29]: cie_offset = 948, cie_index = 2, fde_offset = 216 -FDE[29]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 60 2e 10 -FDE[30]: low_pc = 0x804d980, length = 71 -FDE[30]: bytes = 20 00 00 00 fc 00 00 00 80 d9 04 08 47 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 60 2e 10 -FDE[30]: cie_offset = 948, cie_index = 2, fde_offset = 252 -FDE[30]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 60 2e 10 -FDE[31]: low_pc = 0x804da20, length = 71 -FDE[31]: bytes = 20 00 00 00 20 01 00 00 20 da 04 08 47 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 60 2e 10 -FDE[31]: cie_offset = 948, cie_index = 2, fde_offset = 288 -FDE[31]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 60 2e 10 -FDE[32]: low_pc = 0x804dac0, length = 71 -FDE[32]: bytes = 20 00 00 00 44 01 00 00 c0 da 04 08 47 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 60 2e 10 -FDE[32]: cie_offset = 948, cie_index = 2, fde_offset = 324 -FDE[32]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 60 2e 10 -FDE[33]: low_pc = 0x804db60, length = 71 -FDE[33]: bytes = 20 00 00 00 68 01 00 00 60 db 04 08 47 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 60 2e 10 -FDE[33]: cie_offset = 948, cie_index = 2, fde_offset = 360 -FDE[33]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 60 2e 10 -FDE[34]: low_pc = 0x804dc00, length = 71 -FDE[34]: bytes = 20 00 00 00 8c 01 00 00 00 dc 04 08 47 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 60 2e 10 -FDE[34]: cie_offset = 948, cie_index = 2, fde_offset = 396 -FDE[34]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 60 2e 10 -FDE[35]: low_pc = 0x804dca0, length = 71 -FDE[35]: bytes = 20 00 00 00 b0 01 00 00 a0 dc 04 08 47 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 60 2e 10 -FDE[35]: cie_offset = 948, cie_index = 2, fde_offset = 432 -FDE[35]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 60 2e 10 -FDE[36]: low_pc = 0x804c5b4, length = 26 -FDE[36]: bytes = 18 00 00 00 1c 00 00 00 b4 c5 04 08 1a 00 00 00 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[36]: cie_offset = 1412, cie_index = 3, fde_offset = 28 -FDE[36]: instructions = 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[37]: low_pc = 0x804c5d0, length = 23 -FDE[37]: bytes = 18 00 00 00 38 00 00 00 d0 c5 04 08 17 00 00 00 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[37]: cie_offset = 1412, cie_index = 3, fde_offset = 56 -FDE[37]: instructions = 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[38]: low_pc = 0x804c640, length = 24 -FDE[38]: bytes = 18 00 00 00 54 00 00 00 40 c6 04 08 18 00 00 00 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[38]: cie_offset = 1412, cie_index = 3, fde_offset = 84 -FDE[38]: instructions = 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[39]: low_pc = 0x804c660, length = 32 -FDE[39]: bytes = 18 00 00 00 70 00 00 00 60 c6 04 08 20 00 00 00 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[39]: cie_offset = 1412, cie_index = 3, fde_offset = 112 -FDE[39]: instructions = 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[40]: low_pc = 0x804c680, length = 29 -FDE[40]: bytes = 18 00 00 00 8c 00 00 00 80 c6 04 08 1d 00 00 00 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[40]: cie_offset = 1412, cie_index = 3, fde_offset = 140 -FDE[40]: instructions = 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[41]: low_pc = 0x804c6a0, length = 36 -FDE[41]: bytes = 18 00 00 00 a8 00 00 00 a0 c6 04 08 24 00 00 00 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[41]: cie_offset = 1412, cie_index = 3, fde_offset = 168 -FDE[41]: instructions = 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[42]: low_pc = 0x804c6d0, length = 98 -FDE[42]: bytes = 24 00 00 00 c4 00 00 00 d0 c6 04 08 62 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 02 43 2e 10 00 00 00 -FDE[42]: cie_offset = 1412, cie_index = 3, fde_offset = 196 -FDE[42]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 02 43 2e 10 00 00 00 -FDE[43]: low_pc = 0x804c740, length = 107 -FDE[43]: bytes = 24 00 00 00 ec 00 00 00 40 c7 04 08 6b 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 53 2e 10 7b 2e 00 00 -FDE[43]: cie_offset = 1412, cie_index = 3, fde_offset = 236 -FDE[43]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 53 2e 10 7b 2e 00 00 -FDE[44]: low_pc = 0x804c7b0, length = 256 -FDE[44]: bytes = 24 00 00 00 14 01 00 00 b0 c7 04 08 00 01 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 02 bf 2e 10 00 00 00 -FDE[44]: cie_offset = 1412, cie_index = 3, fde_offset = 276 -FDE[44]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 02 bf 2e 10 00 00 00 -FDE[45]: low_pc = 0x804c8b0, length = 78 -FDE[45]: bytes = 1c 00 00 00 3c 01 00 00 b0 c8 04 08 4e 00 00 00 41 0e 08 85 02 42 0d 05 41 86 03 41 83 04 00 00 -FDE[45]: cie_offset = 1412, cie_index = 3, fde_offset = 316 -FDE[45]: instructions = 41 0e 08 85 02 42 0d 05 41 86 03 41 83 04 00 00 -FDE[46]: low_pc = 0x804c900, length = 480 -FDE[46]: bytes = 40 00 00 00 5c 01 00 00 00 c9 04 08 e0 01 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 7d 2e 10 4c 2e 00 02 48 2e 10 02 54 2e 00 78 2e 10 4c 2e 00 02 44 2e 10 79 2e 08 49 2e 10 48 2e 00 00 00 -FDE[46]: cie_offset = 1412, cie_index = 3, fde_offset = 348 -FDE[46]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 7d 2e 10 4c 2e 00 02 48 2e 10 02 54 2e 00 78 2e 10 4c 2e 00 02 44 2e 10 79 2e 08 49 2e 10 48 2e 00 00 00 -FDE[47]: low_pc = 0x804cae0, length = 37 -FDE[47]: bytes = 1c 00 00 00 a0 01 00 00 e0 ca 04 08 25 00 00 00 41 0e 08 85 02 42 0d 05 41 83 03 52 2e 10 00 00 -FDE[47]: cie_offset = 1412, cie_index = 3, fde_offset = 416 -FDE[47]: instructions = 41 0e 08 85 02 42 0d 05 41 83 03 52 2e 10 00 00 -FDE[48]: low_pc = 0x804cb10, length = 128 -FDE[48]: bytes = 2c 00 00 00 c0 01 00 00 10 cb 04 08 80 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 62 2e 10 56 2e 08 49 2e 10 48 2e 00 6c 2e 10 -FDE[48]: cie_offset = 1412, cie_index = 3, fde_offset = 448 -FDE[48]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 62 2e 10 56 2e 08 49 2e 10 48 2e 00 6c 2e 10 -FDE[49]: low_pc = 0x804cb90, length = 128 -FDE[49]: bytes = 2c 00 00 00 f0 01 00 00 90 cb 04 08 80 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 62 2e 10 56 2e 08 49 2e 10 48 2e 00 6c 2e 10 -FDE[49]: cie_offset = 1412, cie_index = 3, fde_offset = 496 -FDE[49]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 62 2e 10 56 2e 08 49 2e 10 48 2e 00 6c 2e 10 -FDE[50]: low_pc = 0x804cc10, length = 45 -FDE[50]: bytes = 18 00 00 00 20 02 00 00 10 cc 04 08 2d 00 00 00 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[50]: cie_offset = 1412, cie_index = 3, fde_offset = 544 -FDE[50]: instructions = 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[51]: low_pc = 0x804cc40, length = 43 -FDE[51]: bytes = 18 00 00 00 3c 02 00 00 40 cc 04 08 2b 00 00 00 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[51]: cie_offset = 1412, cie_index = 3, fde_offset = 572 -FDE[51]: instructions = 41 0e 08 85 02 42 0d 05 41 83 03 00 -FDE[52]: low_pc = 0x804cde0, length = 89 -FDE[52]: bytes = 20 00 00 00 18 00 00 00 e0 cd 04 08 59 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 6d 2e 20 00 00 00 -FDE[52]: cie_offset = 2008, cie_index = 4, fde_offset = 24 -FDE[52]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 6d 2e 20 00 00 00 -FDE[53]: low_pc = 0x804ce40, length = 217 -FDE[53]: bytes = 20 00 00 00 3c 00 00 00 40 ce 04 08 d9 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 02 40 2e 20 00 00 -FDE[53]: cie_offset = 2008, cie_index = 4, fde_offset = 60 -FDE[53]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 02 40 2e 20 00 00 -FDE[54]: low_pc = 0x804d010, length = 117 -FDE[54]: bytes = 24 00 00 00 60 00 00 00 10 d0 04 08 75 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 5c 2e 10 02 48 2e 20 -FDE[54]: cie_offset = 2008, cie_index = 4, fde_offset = 96 -FDE[54]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 5c 2e 10 02 48 2e 20 -FDE[55]: low_pc = 0x804d090, length = 190 -FDE[55]: bytes = 24 00 00 00 88 00 00 00 90 d0 04 08 be 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 64 2e 10 02 89 2e 20 -FDE[55]: cie_offset = 2008, cie_index = 4, fde_offset = 136 -FDE[55]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 64 2e 10 02 89 2e 20 -FDE[56]: low_pc = 0x804d150, length = 101 -FDE[56]: bytes = 24 00 00 00 b0 00 00 00 50 d1 04 08 65 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 61 2e 10 73 2e 20 00 -FDE[56]: cie_offset = 2008, cie_index = 4, fde_offset = 176 -FDE[56]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 61 2e 10 73 2e 20 00 -FDE[57]: low_pc = 0x804d1c0, length = 480 -FDE[57]: bytes = 28 00 00 00 d8 00 00 00 c0 d1 04 08 e0 01 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 56 2e 10 02 f5 2e 20 02 91 2e 10 -FDE[57]: cie_offset = 2008, cie_index = 4, fde_offset = 216 -FDE[57]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 56 2e 10 02 f5 2e 20 02 91 2e 10 -FDE[58]: low_pc = 0x804d3a0, length = 897 -FDE[58]: bytes = 28 00 00 00 04 01 00 00 a0 d3 04 08 81 03 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 61 2e 10 03 61 01 2e 20 00 00 00 -FDE[58]: cie_offset = 2008, cie_index = 4, fde_offset = 260 -FDE[58]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 61 2e 10 03 61 01 2e 20 00 00 00 -FDE[59]: low_pc = 0x804d730, length = 238 -FDE[59]: bytes = 24 00 00 00 30 01 00 00 30 d7 04 08 ee 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 61 2e 10 02 8f 2e 20 -FDE[59]: cie_offset = 2008, cie_index = 4, fde_offset = 304 -FDE[59]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 41 86 04 41 83 05 61 2e 10 02 8f 2e 20 -FDE[60]: low_pc = 0x804e220, length = 73 -FDE[60]: bytes = 20 00 00 00 58 01 00 00 20 e2 04 08 49 00 00 00 41 0e 08 85 02 42 0d 05 41 87 03 44 86 04 74 2e 20 00 00 00 -FDE[60]: cie_offset = 2008, cie_index = 4, fde_offset = 344 -FDE[60]: instructions = 41 0e 08 85 02 42 0d 05 41 87 03 44 86 04 74 2e 20 00 00 00 -no FDE at 8048400 -no FDE at 804842c -no FDE at 8048454 -no FDE at 8048455 -FDE[@80493fc]: cie_offset = 0, cie_index = 0, fde_offset = 28 -EOF - -rm -f testfile3 testfile4 show-ciefde.out - -exit 0 diff --git a/tests/run-show-die-info.sh b/tests/run-show-die-info.sh deleted file mode 100644 index 04263268..00000000 --- a/tests/run-show-die-info.sh +++ /dev/null @@ -1,988 +0,0 @@ -#! /bin/sh -# Copyright (C) 1999, 2000, 2002, 2003, 2004 Red Hat, Inc. -# Written by Ulrich Drepper <drepper@redhat.com>, 1999. -# -# This program is Open Source software; you can redistribute it and/or -# modify it under the terms of the Open Software License version 1.0 as -# published by the Open Source Initiative. -# -# You should have received a copy of the Open Software License along -# with this program; if not, you may obtain a copy of the Open Software -# License version 1.0 from http://www.opensource.org/licenses/osl.php or -# by writing the Open Source Initiative c/o Lawrence Rosen, Esq., -# 3001 King Ranch Road, Ukiah, CA 95482. -set -e - -# Don't fail if we cannot decompress the file. -bunzip2 -c $srcdir/testfile5.bz2 > testfile5 2>/dev/null || exit 0 - -# Don't fail if we cannot decompress the file. -bunzip2 -c $srcdir/testfile2.bz2 > testfile2 2>/dev/null || exit 0 - -./show-die-info testfile5 testfile2 > show-die-info.out - -diff -u show-die-info.out - <<"EOF" -file: testfile5 -New CU: off = 0, hsize = 11, ab = 0, as = 4, os = 4 - DW_TAG_compile_unit - Name : b.c - Offset : 11 - CU offset : 11 - Attrs : name stmt_list low_pc high_pc language comp_dir producer - low PC : 0x804842c - high PC : 0x8048436 - language : 1 - directory : /home/drepper/gnu/new-bu/build/ttt - producer : GNU C 2.96 20000731 (Red Hat Linux 7.0) - DW_TAG_subprogram - Name : bar - Offset : 104 - CU offset : 104 - Attrs : name low_pc high_pc prototyped decl_file decl_line external frame_base type - low PC : 0x804842c - high PC : 0x8048436 - DW_TAG_base_type - Name : int - Offset : 127 - CU offset : 127 - Attrs : name byte_size encoding - byte size : 4 -New CU: off = 135, hsize = 11, ab = 54, as = 4, os = 4 - DW_TAG_compile_unit - Name : f.c - Offset : 146 - CU offset : 11 - Attrs : name stmt_list low_pc high_pc language comp_dir producer - low PC : 0x8048438 - high PC : 0x8048442 - language : 1 - directory : /home/drepper/gnu/new-bu/build/ttt - producer : GNU C 2.96 20000731 (Red Hat Linux 7.0) - DW_TAG_subprogram - Name : foo - Offset : 239 - CU offset : 104 - Attrs : name low_pc high_pc prototyped decl_file decl_line external frame_base type - low PC : 0x8048438 - high PC : 0x8048442 - DW_TAG_base_type - Name : int - Offset : 262 - CU offset : 127 - Attrs : name byte_size encoding - byte size : 4 -New CU: off = 270, hsize = 11, ab = 108, as = 4, os = 4 - DW_TAG_compile_unit - Name : m.c - Offset : 281 - CU offset : 11 - Attrs : name stmt_list low_pc high_pc language comp_dir producer - low PC : 0x8048444 - high PC : 0x8048472 - language : 1 - directory : /home/drepper/gnu/new-bu/build/ttt - producer : GNU C 2.96 20000731 (Red Hat Linux 7.0) - DW_TAG_subprogram - Name : main - Offset : 374 - CU offset : 104 - Attrs : sibling name low_pc high_pc prototyped decl_file decl_line external frame_base type - low PC : 0x8048444 - high PC : 0x8048472 - DW_TAG_subprogram - Name : bar - Offset : 402 - CU offset : 132 - Attrs : sibling name decl_file decl_line declaration external type - DW_TAG_unspecified_parameters - Name : * NO NAME * - Offset : 419 - CU offset : 149 - Attrs : - DW_TAG_subprogram - Name : foo - Offset : 421 - CU offset : 151 - Attrs : name decl_file decl_line declaration external type - DW_TAG_unspecified_parameters - Name : * NO NAME * - Offset : 434 - CU offset : 164 - Attrs : - DW_TAG_base_type - Name : int - Offset : 437 - CU offset : 167 - Attrs : name byte_size encoding - byte size : 4 - DW_TAG_variable - Name : a - Offset : 444 - CU offset : 174 - Attrs : location name decl_file decl_line external type -file: testfile2 -New CU: off = 0, hsize = 11, ab = 0, as = 4, os = 4 - DW_TAG_compile_unit - Name : b.c - Offset : 11 - CU offset : 11 - Attrs : name stmt_list low_pc high_pc language comp_dir producer - low PC : 0x10000470 - high PC : 0x10000490 - language : 1 - directory : /shoggoth/drepper - producer : GNU C 2.96-laurel-000912 - DW_TAG_subprogram - Name : bar - Offset : 72 - CU offset : 72 - Attrs : name low_pc high_pc prototyped decl_file decl_line external frame_base type - low PC : 0x10000470 - high PC : 0x10000490 - DW_TAG_base_type - Name : int - Offset : 95 - CU offset : 95 - Attrs : name byte_size encoding - byte size : 4 - DW_TAG_typedef - Name : size_t - Offset : 102 - CU offset : 102 - Attrs : name decl_file decl_line type - DW_TAG_base_type - Name : unsigned int - Offset : 116 - CU offset : 116 - Attrs : name byte_size encoding - byte size : 4 - DW_TAG_typedef - Name : __gnuc_va_list - Offset : 132 - CU offset : 132 - Attrs : name decl_file decl_line type - DW_TAG_array_type - Name : __builtin_va_list - Offset : 154 - CU offset : 154 - Attrs : sibling name type - DW_TAG_subrange_type - Name : * NO NAME * - Offset : 181 - CU offset : 181 - Attrs : upper_bound type - DW_TAG_base_type - Name : unsigned int - Offset : 188 - CU offset : 188 - Attrs : name byte_size encoding - byte size : 4 - DW_TAG_structure_type - Name : __va_list_tag - Offset : 204 - CU offset : 204 - Attrs : sibling name byte_size decl_file decl_line - byte size : 12 - DW_TAG_member - Name : gpr - Offset : 226 - CU offset : 226 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : fpr - Offset : 240 - CU offset : 240 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : overflow_arg_area - Offset : 254 - CU offset : 254 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : reg_save_area - Offset : 282 - CU offset : 282 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_base_type - Name : unsigned char - Offset : 307 - CU offset : 307 - Attrs : name byte_size encoding - byte size : 1 - DW_TAG_pointer_type - Name : * NO NAME * - Offset : 324 - CU offset : 324 - Attrs : byte_size - byte size : 4 - DW_TAG_typedef - Name : __u_char - Offset : 326 - CU offset : 326 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __u_short - Offset : 342 - CU offset : 342 - Attrs : name decl_file decl_line type - DW_TAG_base_type - Name : short unsigned int - Offset : 359 - CU offset : 359 - Attrs : name byte_size encoding - byte size : 2 - DW_TAG_typedef - Name : __u_int - Offset : 381 - CU offset : 381 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __u_long - Offset : 396 - CU offset : 396 - Attrs : name decl_file decl_line type - DW_TAG_base_type - Name : long unsigned int - Offset : 412 - CU offset : 412 - Attrs : name byte_size encoding - byte size : 4 - DW_TAG_typedef - Name : __u_quad_t - Offset : 433 - CU offset : 433 - Attrs : name decl_file decl_line type - DW_TAG_base_type - Name : long long unsigned int - Offset : 451 - CU offset : 451 - Attrs : name byte_size encoding - byte size : 8 - DW_TAG_typedef - Name : __quad_t - Offset : 477 - CU offset : 477 - Attrs : name decl_file decl_line type - DW_TAG_base_type - Name : long long int - Offset : 493 - CU offset : 493 - Attrs : name byte_size encoding - byte size : 8 - DW_TAG_typedef - Name : __int8_t - Offset : 510 - CU offset : 510 - Attrs : name decl_file decl_line type - DW_TAG_base_type - Name : signed char - Offset : 526 - CU offset : 526 - Attrs : name byte_size encoding - byte size : 1 - DW_TAG_typedef - Name : __uint8_t - Offset : 541 - CU offset : 541 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __int16_t - Offset : 558 - CU offset : 558 - Attrs : name decl_file decl_line type - DW_TAG_base_type - Name : short int - Offset : 575 - CU offset : 575 - Attrs : name byte_size encoding - byte size : 2 - DW_TAG_typedef - Name : __uint16_t - Offset : 588 - CU offset : 588 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __int32_t - Offset : 606 - CU offset : 606 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __uint32_t - Offset : 623 - CU offset : 623 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __int64_t - Offset : 641 - CU offset : 641 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __uint64_t - Offset : 658 - CU offset : 658 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __qaddr_t - Offset : 676 - CU offset : 676 - Attrs : name decl_file decl_line type - DW_TAG_pointer_type - Name : * NO NAME * - Offset : 693 - CU offset : 693 - Attrs : byte_size type - byte size : 4 - DW_TAG_typedef - Name : __dev_t - Offset : 699 - CU offset : 699 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __uid_t - Offset : 714 - CU offset : 714 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __gid_t - Offset : 729 - CU offset : 729 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __ino_t - Offset : 744 - CU offset : 744 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __mode_t - Offset : 759 - CU offset : 759 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __nlink_t - Offset : 775 - CU offset : 775 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __off_t - Offset : 792 - CU offset : 792 - Attrs : name decl_file decl_line type - DW_TAG_base_type - Name : long int - Offset : 807 - CU offset : 807 - Attrs : name byte_size encoding - byte size : 4 - DW_TAG_typedef - Name : __loff_t - Offset : 819 - CU offset : 819 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __pid_t - Offset : 835 - CU offset : 835 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __ssize_t - Offset : 850 - CU offset : 850 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __rlim_t - Offset : 867 - CU offset : 867 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __rlim64_t - Offset : 883 - CU offset : 883 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __id_t - Offset : 901 - CU offset : 901 - Attrs : name decl_file decl_line type - DW_TAG_structure_type - Name : * NO NAME * - Offset : 915 - CU offset : 915 - Attrs : sibling byte_size decl_file decl_line - byte size : 8 - DW_TAG_member - Name : __val - Offset : 923 - CU offset : 923 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_array_type - Name : * NO NAME * - Offset : 940 - CU offset : 940 - Attrs : sibling type - DW_TAG_subrange_type - Name : * NO NAME * - Offset : 949 - CU offset : 949 - Attrs : upper_bound type - DW_TAG_typedef - Name : __fsid_t - Offset : 956 - CU offset : 956 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __daddr_t - Offset : 972 - CU offset : 972 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __caddr_t - Offset : 989 - CU offset : 989 - Attrs : name decl_file decl_line type - DW_TAG_pointer_type - Name : * NO NAME * - Offset : 1006 - CU offset : 1006 - Attrs : byte_size type - byte size : 4 - DW_TAG_base_type - Name : char - Offset : 1012 - CU offset : 1012 - Attrs : name byte_size encoding - byte size : 1 - DW_TAG_typedef - Name : __time_t - Offset : 1020 - CU offset : 1020 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __swblk_t - Offset : 1036 - CU offset : 1036 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __clock_t - Offset : 1053 - CU offset : 1053 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __fd_mask - Offset : 1070 - CU offset : 1070 - Attrs : name decl_file decl_line type - DW_TAG_structure_type - Name : * NO NAME * - Offset : 1087 - CU offset : 1087 - Attrs : sibling byte_size decl_file decl_line - byte size : 128 - DW_TAG_member - Name : __fds_bits - Offset : 1095 - CU offset : 1095 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_array_type - Name : * NO NAME * - Offset : 1117 - CU offset : 1117 - Attrs : sibling type - DW_TAG_subrange_type - Name : * NO NAME * - Offset : 1126 - CU offset : 1126 - Attrs : upper_bound type - DW_TAG_typedef - Name : __fd_set - Offset : 1133 - CU offset : 1133 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __key_t - Offset : 1149 - CU offset : 1149 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __ipc_pid_t - Offset : 1164 - CU offset : 1164 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __blkcnt_t - Offset : 1183 - CU offset : 1183 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __blkcnt64_t - Offset : 1201 - CU offset : 1201 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __fsblkcnt_t - Offset : 1221 - CU offset : 1221 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __fsblkcnt64_t - Offset : 1241 - CU offset : 1241 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __fsfilcnt_t - Offset : 1263 - CU offset : 1263 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __fsfilcnt64_t - Offset : 1283 - CU offset : 1283 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __ino64_t - Offset : 1305 - CU offset : 1305 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __off64_t - Offset : 1322 - CU offset : 1322 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __t_scalar_t - Offset : 1339 - CU offset : 1339 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __t_uscalar_t - Offset : 1359 - CU offset : 1359 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : __intptr_t - Offset : 1380 - CU offset : 1380 - Attrs : name decl_file decl_line type - DW_TAG_structure_type - Name : _IO_FILE - Offset : 1398 - CU offset : 1398 - Attrs : sibling name byte_size decl_file decl_line - byte size : 152 - DW_TAG_member - Name : _flags - Offset : 1415 - CU offset : 1415 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _IO_read_ptr - Offset : 1432 - CU offset : 1432 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _IO_read_end - Offset : 1455 - CU offset : 1455 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _IO_read_base - Offset : 1478 - CU offset : 1478 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _IO_write_base - Offset : 1502 - CU offset : 1502 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _IO_write_ptr - Offset : 1527 - CU offset : 1527 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _IO_write_end - Offset : 1551 - CU offset : 1551 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _IO_buf_base - Offset : 1575 - CU offset : 1575 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _IO_buf_end - Offset : 1598 - CU offset : 1598 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _IO_save_base - Offset : 1620 - CU offset : 1620 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _IO_backup_base - Offset : 1644 - CU offset : 1644 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _IO_save_end - Offset : 1670 - CU offset : 1670 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _markers - Offset : 1693 - CU offset : 1693 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _chain - Offset : 1712 - CU offset : 1712 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _fileno - Offset : 1729 - CU offset : 1729 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _blksize - Offset : 1747 - CU offset : 1747 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _old_offset - Offset : 1766 - CU offset : 1766 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _cur_column - Offset : 1788 - CU offset : 1788 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _vtable_offset - Offset : 1810 - CU offset : 1810 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _shortbuf - Offset : 1835 - CU offset : 1835 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _lock - Offset : 1855 - CU offset : 1855 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _offset - Offset : 1871 - CU offset : 1871 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _unused2 - Offset : 1889 - CU offset : 1889 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_structure_type - Name : _IO_marker - Offset : 1909 - CU offset : 1909 - Attrs : sibling name byte_size decl_file decl_line - byte size : 12 - DW_TAG_member - Name : _next - Offset : 1928 - CU offset : 1928 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _sbuf - Offset : 1944 - CU offset : 1944 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_member - Name : _pos - Offset : 1960 - CU offset : 1960 - Attrs : name data_member_location decl_file decl_line type - DW_TAG_pointer_type - Name : * NO NAME * - Offset : 1976 - CU offset : 1976 - Attrs : byte_size type - byte size : 4 - DW_TAG_pointer_type - Name : * NO NAME * - Offset : 1982 - CU offset : 1982 - Attrs : byte_size type - byte size : 4 - DW_TAG_array_type - Name : * NO NAME * - Offset : 1988 - CU offset : 1988 - Attrs : sibling type - DW_TAG_subrange_type - Name : * NO NAME * - Offset : 1997 - CU offset : 1997 - Attrs : upper_bound type - DW_TAG_pointer_type - Name : * NO NAME * - Offset : 2004 - CU offset : 2004 - Attrs : byte_size - byte size : 4 - DW_TAG_array_type - Name : * NO NAME * - Offset : 2006 - CU offset : 2006 - Attrs : sibling type - DW_TAG_subrange_type - Name : * NO NAME * - Offset : 2015 - CU offset : 2015 - Attrs : upper_bound type - DW_TAG_typedef - Name : FILE - Offset : 2022 - CU offset : 2022 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : wchar_t - Offset : 2034 - CU offset : 2034 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : wint_t - Offset : 2050 - CU offset : 2050 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : _G_int16_t - Offset : 2065 - CU offset : 2065 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : _G_int32_t - Offset : 2083 - CU offset : 2083 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : _G_uint16_t - Offset : 2101 - CU offset : 2101 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : _G_uint32_t - Offset : 2120 - CU offset : 2120 - Attrs : name decl_file decl_line type - DW_TAG_structure_type - Name : _IO_jump_t - Offset : 2139 - CU offset : 2139 - Attrs : name declaration - DW_TAG_typedef - Name : _IO_lock_t - Offset : 2152 - CU offset : 2152 - Attrs : name decl_file decl_line - DW_TAG_typedef - Name : _IO_FILE - Offset : 2166 - CU offset : 2166 - Attrs : name decl_file decl_line type - DW_TAG_structure_type - Name : _IO_FILE_plus - Offset : 2182 - CU offset : 2182 - Attrs : name declaration - DW_TAG_typedef - Name : __io_read_fn - Offset : 2198 - CU offset : 2198 - Attrs : name decl_file decl_line type - DW_TAG_subroutine_type - Name : * NO NAME * - Offset : 2219 - CU offset : 2219 - Attrs : sibling prototyped type - DW_TAG_formal_parameter - Name : * NO NAME * - Offset : 2229 - CU offset : 2229 - Attrs : type - DW_TAG_formal_parameter - Name : * NO NAME * - Offset : 2234 - CU offset : 2234 - Attrs : type - DW_TAG_formal_parameter - Name : * NO NAME * - Offset : 2239 - CU offset : 2239 - Attrs : type - DW_TAG_typedef - Name : __io_write_fn - Offset : 2245 - CU offset : 2245 - Attrs : name decl_file decl_line type - DW_TAG_subroutine_type - Name : * NO NAME * - Offset : 2267 - CU offset : 2267 - Attrs : sibling prototyped type - DW_TAG_formal_parameter - Name : * NO NAME * - Offset : 2277 - CU offset : 2277 - Attrs : type - DW_TAG_formal_parameter - Name : * NO NAME * - Offset : 2282 - CU offset : 2282 - Attrs : type - DW_TAG_formal_parameter - Name : * NO NAME * - Offset : 2287 - CU offset : 2287 - Attrs : type - DW_TAG_pointer_type - Name : * NO NAME * - Offset : 2293 - CU offset : 2293 - Attrs : byte_size type - byte size : 4 - DW_TAG_const_type - Name : * NO NAME * - Offset : 2299 - CU offset : 2299 - Attrs : type - DW_TAG_typedef - Name : __io_seek_fn - Offset : 2304 - CU offset : 2304 - Attrs : name decl_file decl_line type - DW_TAG_subroutine_type - Name : * NO NAME * - Offset : 2325 - CU offset : 2325 - Attrs : sibling prototyped type - DW_TAG_formal_parameter - Name : * NO NAME * - Offset : 2335 - CU offset : 2335 - Attrs : type - DW_TAG_formal_parameter - Name : * NO NAME * - Offset : 2340 - CU offset : 2340 - Attrs : type - DW_TAG_formal_parameter - Name : * NO NAME * - Offset : 2345 - CU offset : 2345 - Attrs : type - DW_TAG_typedef - Name : __io_close_fn - Offset : 2351 - CU offset : 2351 - Attrs : name decl_file decl_line type - DW_TAG_subroutine_type - Name : * NO NAME * - Offset : 2373 - CU offset : 2373 - Attrs : sibling prototyped type - DW_TAG_formal_parameter - Name : * NO NAME * - Offset : 2383 - CU offset : 2383 - Attrs : type - DW_TAG_typedef - Name : fpos_t - Offset : 2389 - CU offset : 2389 - Attrs : name decl_file decl_line type - DW_TAG_typedef - Name : off_t - Offset : 2403 - CU offset : 2403 - Attrs : name decl_file decl_line type -New CU: off = 2418, hsize = 11, ab = 213, as = 4, os = 4 - DW_TAG_compile_unit - Name : f.c - Offset : 2429 - CU offset : 11 - Attrs : name stmt_list low_pc high_pc language comp_dir producer - low PC : 0x10000490 - high PC : 0x100004b0 - language : 1 - directory : /shoggoth/drepper - producer : GNU C 2.96-laurel-000912 - DW_TAG_subprogram - Name : foo - Offset : 2490 - CU offset : 72 - Attrs : name low_pc high_pc prototyped decl_file decl_line external frame_base type - low PC : 0x10000490 - high PC : 0x100004b0 - DW_TAG_base_type - Name : int - Offset : 2513 - CU offset : 95 - Attrs : name byte_size encoding - byte size : 4 -New CU: off = 2521, hsize = 11, ab = 267, as = 4, os = 4 - DW_TAG_compile_unit - Name : m.c - Offset : 2532 - CU offset : 11 - Attrs : name stmt_list low_pc high_pc language comp_dir producer - low PC : 0x100004b0 - high PC : 0x10000514 - language : 1 - directory : /shoggoth/drepper - producer : GNU C 2.96-laurel-000912 - DW_TAG_subprogram - Name : main - Offset : 2593 - CU offset : 72 - Attrs : sibling name low_pc high_pc prototyped decl_file decl_line external frame_base type - low PC : 0x100004b0 - high PC : 0x10000514 - DW_TAG_subprogram - Name : bar - Offset : 2621 - CU offset : 100 - Attrs : sibling name decl_file decl_line declaration external type - DW_TAG_unspecified_parameters - Name : * NO NAME * - Offset : 2638 - CU offset : 117 - Attrs : - DW_TAG_subprogram - Name : foo - Offset : 2640 - CU offset : 119 - Attrs : name decl_file decl_line declaration external type - DW_TAG_unspecified_parameters - Name : * NO NAME * - Offset : 2653 - CU offset : 132 - Attrs : - DW_TAG_base_type - Name : int - Offset : 2656 - CU offset : 135 - Attrs : name byte_size encoding - byte size : 4 - DW_TAG_variable - Name : a - Offset : 2663 - CU offset : 142 - Attrs : location name decl_file decl_line external type -EOF - -rm -f testfile2 testfile5 show-die-info.out - -exit 0 diff --git a/tests/run-strip-test.sh b/tests/run-strip-test.sh deleted file mode 100644 index aab37f48..00000000 --- a/tests/run-strip-test.sh +++ /dev/null @@ -1,33 +0,0 @@ -#! /bin/sh -# Copyright (C) 1999, 2000, 2002, 2003 Red Hat, Inc. -# Written by Ulrich Drepper <drepper@redhat.com>, 1999. -# -# This program is Open Source software; you can redistribute it and/or -# modify it under the terms of the Open Software License version 1.0 as -# published by the Open Source Initiative. -# -# You should have received a copy of the Open Software License along -# with this program; if not, you may obtain a copy of the Open Software -# License version 1.0 from http://www.opensource.org/licenses/osl.php or -# by writing the Open Source Initiative c/o Lawrence Rosen, Esq., -# 3001 King Ranch Road, Ukiah, CA 95482. -set -e - -# Don't fail if we cannot decompress the file. -bunzip2 -c $srcdir/testfile11.bz2 > testfile11 2>/dev/null || exit 0 - -# Don't fail if we cannot decompress the file. -bunzip2 -c $srcdir/testfile7.bz2 > testfile7 2>/dev/null || exit 0 - -LD_LIBRARY_PATH=../libebl:../libelf${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH \ - ../src/strip -o testfile.temp testfile11 - -cmp testfile7 testfile.temp - -# Check elflint and the expected result. -LD_LIBRARY_PATH=../libebl:../libelf${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH \ - ../src/elflint -q testfile.temp - -rm -f testfile11 testfile7 testfile.temp - -exit 0 diff --git a/tests/run-strip-test2.sh b/tests/run-strip-test2.sh deleted file mode 100644 index f385a865..00000000 --- a/tests/run-strip-test2.sh +++ /dev/null @@ -1,33 +0,0 @@ -#! /bin/sh -# Copyright (C) 1999, 2000, 2002 Red Hat, Inc. -# Written by Ulrich Drepper <drepper@redhat.com>, 1999. -# -# This program is Open Source software; you can redistribute it and/or -# modify it under the terms of the Open Software License version 1.0 as -# published by the Open Source Initiative. -# -# You should have received a copy of the Open Software License along -# with this program; if not, you may obtain a copy of the Open Software -# License version 1.0 from http://www.opensource.org/licenses/osl.php or -# by writing the Open Source Initiative c/o Lawrence Rosen, Esq., -# 3001 King Ranch Road, Ukiah, CA 95482. -set -e - -# Don't fail if we cannot decompress the file. -bunzip2 -c $srcdir/testfile8.bz2 > testfile8 2>/dev/null || exit 0 - -# Don't fail if we cannot decompress the file. -bunzip2 -c $srcdir/testfile9.bz2 > testfile9 2>/dev/null || exit 0 - -LD_LIBRARY_PATH=../libebl:../libelf${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH \ - ../src/strip -o testfile.temp testfile8 - -cmp testfile9 testfile.temp - -# Check elflint and the expected result. -LD_LIBRARY_PATH=../libebl:../libelf${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH \ - ../src/elflint -q testfile.temp - -rm -f testfile8 testfile9 testfile.temp - -exit 0 diff --git a/tests/run-strip-test3.sh b/tests/run-strip-test3.sh deleted file mode 100644 index 5ff4a5a9..00000000 --- a/tests/run-strip-test3.sh +++ /dev/null @@ -1,33 +0,0 @@ -#! /bin/sh -# Copyright (C) 1999, 2000, 2002, 2003 Red Hat, Inc. -# Written by Ulrich Drepper <drepper@redhat.com>, 1999. -# -# This program is Open Source software; you can redistribute it and/or -# modify it under the terms of the Open Software License version 1.0 as -# published by the Open Source Initiative. -# -# You should have received a copy of the Open Software License along -# with this program; if not, you may obtain a copy of the Open Software -# License version 1.0 from http://www.opensource.org/licenses/osl.php or -# by writing the Open Source Initiative c/o Lawrence Rosen, Esq., -# 3001 King Ranch Road, Ukiah, CA 95482. -set -e - -# Don't fail if we cannot decompress the file. -bunzip2 -c $srcdir/testfile12.bz2 > testfile12 2>/dev/null || exit 0 - -# Don't fail if we cannot decompress the file. -bunzip2 -c $srcdir/testfile13.bz2 > testfile13 2>/dev/null || exit 0 - -LD_LIBRARY_PATH=../libebl:../libelf${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH \ - ../src/strip -o testfile.temp testfile12 - -cmp testfile13 testfile.temp - -# Check elflint and the expected result. -LD_LIBRARY_PATH=../libebl:../libelf${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH \ - ../src/elflint -q testfile.temp - -rm -f testfile12 testfile13 testfile.temp - -exit 0 diff --git a/tests/saridx.c b/tests/saridx.c deleted file mode 100644 index 4abc892f..00000000 --- a/tests/saridx.c +++ /dev/null @@ -1,253 +0,0 @@ -/* Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <config.h> - -#include <error.h> -#include <fcntl.h> -#include <gelf.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <time.h> -#include <unistd.h> - - -static const char *machines[] = -{ -#define MACHINE(name) [name] = #name - MACHINE (EM_NONE), - MACHINE (EM_M32), - MACHINE (EM_SPARC), - MACHINE (EM_386), - MACHINE (EM_68K), - MACHINE (EM_88K), - MACHINE (EM_860), - MACHINE (EM_MIPS), - MACHINE (EM_MIPS_RS3_LE), - MACHINE (EM_PARISC), - MACHINE (EM_VPP500), - MACHINE (EM_SPARC32PLUS), - MACHINE (EM_960), - MACHINE (EM_PPC), - MACHINE (EM_PPC64), - MACHINE (EM_V800), - MACHINE (EM_FR20), - MACHINE (EM_RH32), - MACHINE (EM_RCE), - MACHINE (EM_ARM), - MACHINE (EM_FAKE_ALPHA), - MACHINE (EM_SH), - MACHINE (EM_SPARCV9), - MACHINE (EM_TRICORE), - MACHINE (EM_ARC), - MACHINE (EM_H8_300), - MACHINE (EM_H8_300H), - MACHINE (EM_H8S), - MACHINE (EM_H8_500), - MACHINE (EM_IA_64), - MACHINE (EM_MIPS_X), - MACHINE (EM_COLDFIRE), - MACHINE (EM_68HC12), - MACHINE (EM_MMA), - MACHINE (EM_PCP), - MACHINE (EM_NCPU), - MACHINE (EM_NDR1), - MACHINE (EM_STARCORE), - MACHINE (EM_ME16), - MACHINE (EM_ST100), - MACHINE (EM_TINYJ), - MACHINE (EM_FX66), - MACHINE (EM_ST9PLUS), - MACHINE (EM_ST7), - MACHINE (EM_68HC16), - MACHINE (EM_68HC11), - MACHINE (EM_68HC08), - MACHINE (EM_68HC05), - MACHINE (EM_SVX), - MACHINE (EM_ST19), - MACHINE (EM_VAX) -}; - - -int -main (int argc, char *argv[]) -{ - int fd; - Elf *elf; - Elf_Cmd cmd; - size_t n; - int arg = 1; - int verbose = 0; - - /* Recognize optional verbosity flag. */ - if (arg < argc && strcmp (argv[arg], "-v") == 0) - { - verbose = 1; - ++arg; - } - - /* Any more arguments available. */ - if (arg >= argc) - error (EXIT_FAILURE, 0, "No input file given"); - - /* Open the input file. */ - fd = open (argv[arg], O_RDONLY); - if (fd == -1) - { - perror ("cannot open input file"); - exit (1); - } - - /* Set the ELF version we are using here. */ - if (elf_version (EV_CURRENT) == EV_NONE) - { - puts ("ELF library too old"); - exit (1); - } - - /* Start reading the file. */ - cmd = ELF_C_READ; - elf = elf_begin (fd, cmd, NULL); - if (elf == NULL) - { - printf ("elf_begin: %s\n", elf_errmsg (-1)); - exit (1); - } - - /* If it is no archive punt. */ - if (elf_kind (elf) != ELF_K_AR) - { - printf ("%s is not an archive\n", argv[1]); - exit (1); - } - - if (verbose) - { - /* The verbose variant. We print a lot of information. */ - Elf *subelf; - char buf[100]; - time_t t; - - /* Get the elements of the archive one after the other. */ - while ((subelf = elf_begin (fd, cmd, elf)) != NULL) - { - /* The the header for this element. */ - Elf_Arhdr *arhdr = elf_getarhdr (subelf); - - if (arhdr == NULL) - { - printf ("cannot get arhdr: %s\n", elf_errmsg (-1)); - break; - } - - switch (elf_kind (subelf)) - { - case ELF_K_ELF: - fputs ("ELF file:\n", stdout); - break; - - case ELF_K_AR: - fputs ("archive:\n", stdout); - break; - - default: - fputs ("unknown file:\n", stdout); - break; - } - - /* Print general information. */ - t = arhdr->ar_date; - strftime (buf, sizeof buf, "%Y-%m-%dT%H:%M:%S%z", gmtime (&t)); - printf (" name : \"%s\"\n" - " time : %s\n" - " uid : %ld\n" - " gid : %ld\n" - " mode : %o\n" - " size : %ld\n" - " rawname : \"%s\"\n", - arhdr->ar_name, - buf, - (long int) arhdr->ar_uid, - (long int) arhdr->ar_gid, - arhdr->ar_mode, - (long int) arhdr->ar_size, - arhdr->ar_rawname); - - /* For ELF files we can provide some more information. */ - if (elf_kind (subelf) == ELF_K_ELF) - { - GElf_Ehdr ehdr; - - /* Get the ELF header. */ - if (gelf_getehdr (subelf, &ehdr) == NULL) - printf (" *** cannot get ELF header: %s\n", elf_errmsg (-1)); - else - { - printf (" binary class : %s\n", - ehdr.e_ident[EI_CLASS] == ELFCLASS32 - ? "ELFCLASS32" : "ELFCLASS64"); - printf (" data encoding: %s\n", - ehdr.e_ident[EI_DATA] == ELFDATA2LSB - ? "ELFDATA2LSB" : "ELFDATA2MSB"); - printf (" binary type : %s\n", - ehdr.e_type == ET_REL - ? "relocatable" - : (ehdr.e_type == ET_EXEC - ? "executable" - : (ehdr.e_type == ET_DYN - ? "dynamic" - : "core file"))); - printf (" machine : %s\n", - (ehdr.e_machine >= (sizeof (machines) - / sizeof (machines[0])) - || machines[ehdr.e_machine] == NULL) - ? "???" - : machines[ehdr.e_machine]); - } - } - - /* Get next archive element. */ - cmd = elf_next (subelf); - if (elf_end (subelf) != 0) - printf ("error while freeing sub-ELF descriptor: %s\n", - elf_errmsg (-1)); - } - } - else - { - /* The simple version. Only print a bit of information. */ - Elf_Arsym *arsym = elf_getarsym (elf, &n); - - if (n == 0) - printf ("no symbol table in archive: %s\n", elf_errmsg (-1)); - else - { - --n; - - while (n-- > 0) - printf ("name = \"%s\", offset = %ld, hash = %lx\n", - arsym[n].as_name, (long int) arsym[n].as_off, - arsym[n].as_hash); - } - } - - /* Free the ELF handle. */ - if (elf_end (elf) != 0) - printf ("error while freeing ELF descriptor: %s\n", elf_errmsg (-1)); - - /* Close the underlying file. */ - close (fd); - - return 0; -} diff --git a/tests/scnnames.c b/tests/scnnames.c deleted file mode 100644 index de30312e..00000000 --- a/tests/scnnames.c +++ /dev/null @@ -1,81 +0,0 @@ -/* Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <config.h> - -#include <errno.h> -#include <fcntl.h> -#include <gelf.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> - -int -main (int argc, char *argv[]) -{ - Elf *elf; - int fd; - GElf_Ehdr ehdr; - size_t strndx; - Elf_Scn *scn; - - fd = open (argv[1], O_RDONLY); - if (fd == -1) - { - printf ("cannot open \"%s\": %s\n", argv[1], strerror (errno)); - exit (1); - } - - elf_version (EV_CURRENT); - - elf = elf_begin (fd, ELF_C_READ, NULL); - if (elf == NULL) - { - printf ("cannot open ELF file: %s\n", elf_errmsg (-1)); - exit (1); - } - - if (elf_kind (elf) != ELF_K_ELF) - { - printf ("\"%s\" is not an ELF file\n", argv[1]); - exit (1); - } - - if (gelf_getehdr (elf, &ehdr) == NULL) - { - printf ("cannot get the ELF header: %s\n", elf_errmsg (-1)); - exit (1); - } - - strndx = ehdr.e_shstrndx; - - scn = NULL; - while ((scn = elf_nextscn (elf, scn)) != NULL) - { - char *name = NULL; - GElf_Shdr shdr; - - if (gelf_getshdr (scn, &shdr) != NULL) - name = elf_strptr (elf, strndx, (size_t) shdr.sh_name); - - printf ("section: `%s'\n", name); - } - - if (elf_end (elf) != 0) - { - printf ("error while freeing ELF descriptor: %s\n", elf_errmsg (-1)); - exit (1); - } - - return 0; -} diff --git a/tests/sectiondump.c b/tests/sectiondump.c deleted file mode 100644 index f19a2151..00000000 --- a/tests/sectiondump.c +++ /dev/null @@ -1,178 +0,0 @@ -/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <config.h> - -#include <errno.h> -#include <error.h> -#include <fcntl.h> -#include <gelf.h> -#include <inttypes.h> -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> - - -/* Prototypes for local functions. */ -static int handle_section (Elf *elf, Elf_Scn *scn); -static void print_bytes (Elf_Data *data); -static void print_symtab (Elf *elf, Elf_Data *data); - - -int -main (int argc, char *argv[]) -{ - Elf *elf; - int fd; - int cnt; - - if (argc <= 1) - exit (1); - - /* Open the test file. This is given as the first parameter to the - program. */ - fd = open (argv[1], O_RDONLY); - if (fd == -1) - error (EXIT_FAILURE, errno, "cannot open input file `%s'", argv[1]); - - /* Set the library versio we expect. */ - elf_version (EV_CURRENT); - - /* Create the ELF descriptor. */ - elf = elf_begin (fd, ELF_C_READ, NULL); - if (elf == NULL) - error (EXIT_FAILURE, 0, "cannot create ELF descriptor: %s", - elf_errmsg (0)); - - /* Now proces all the sections mentioned in the rest of the command line. */ - for (cnt = 2; cnt < argc; ++cnt) - if (handle_section (elf, elf_getscn (elf, atoi (argv[cnt]))) != 0) - /* When we encounter an error stop immediately. */ - error (EXIT_FAILURE, 0, "while processing section %d: %s", cnt, - elf_errmsg (0)); - - /* Close the descriptor. */ - if (elf_end (elf) != 0) - error (EXIT_FAILURE, 0, "failure while closing ELF descriptor: %s", - elf_errmsg (0)); - - return 0; -} - - -static int -handle_section (Elf *elf, Elf_Scn *scn) -{ - GElf_Ehdr *ehdr; - GElf_Ehdr ehdr_mem; - GElf_Shdr *shdr; - GElf_Shdr shdr_mem; - Elf_Data *data; - - /* First get the ELF and section header. */ - ehdr = gelf_getehdr (elf, &ehdr_mem); - shdr = gelf_getshdr (scn, &shdr_mem); - if (ehdr == NULL || shdr == NULL) - return 1; - - /* Print the information from the ELF section header. */ - printf ("name = %s\n" - "type = %" PRId32 "\n" - "flags = %" PRIx64 "\n" - "addr = %" PRIx64 "\n" - "offset = %" PRIx64 "\n" - "size = %" PRId64 "\n" - "link = %" PRId32 "\n" - "info = %" PRIx32 "\n" - "addralign = %" PRIx64 "\n" - "entsize = %" PRId64 "\n", - elf_strptr (elf, ehdr->e_shstrndx, shdr->sh_name), - shdr->sh_type, - shdr->sh_flags, - shdr->sh_addr, - shdr->sh_offset, - shdr->sh_size, - shdr->sh_link, - shdr->sh_info, - shdr->sh_addralign, - shdr->sh_entsize); - - /* Get the section data now. */ - data = elf_getdata (scn, NULL); - if (data == NULL) - return 1; - - /* Now proces the different section types accordingly. */ - switch (shdr->sh_type) - { - case SHT_SYMTAB: - print_symtab (elf, data); - break; - - case SHT_PROGBITS: - default: - print_bytes (data); - break; - } - - /* Separate form the next section. */ - puts (""); - - /* All done correctly. */ - return 0; -} - - -static void -print_bytes (Elf_Data *data) -{ - size_t size = data->d_size; - off_t offset = data->d_off; - unsigned char *buf = (unsigned char *) data->d_buf; - size_t cnt; - - for (cnt = 0; cnt < size; cnt += 16) - { - size_t inner; - - printf ("%*Zx: ", sizeof (size_t) == 4 ? 8 : 16, (size_t) offset + cnt); - - for (inner = 0; inner < 16 && cnt + inner < size; ++inner) - printf (" %02hhx", buf[cnt + inner]); - - puts (""); - } -} - - -static void -print_symtab (Elf *elf, Elf_Data *data) -{ - int class = gelf_getclass (elf); - size_t nsym = data->d_size / (class == ELFCLASS32 - ? sizeof (Elf32_Sym) : sizeof (Elf64_Sym)); - size_t cnt; - - for (cnt = 0; cnt < nsym; ++cnt) - { - GElf_Sym sym_mem; - GElf_Sym *sym = gelf_getsym (data, cnt, &sym_mem); - - printf ("%5Zu: %*" PRIx64 " %6" PRIx64 " %4d\n", - cnt, - class == ELFCLASS32 ? 8 : 16, - sym->st_value, - sym->st_size, - GELF_ST_TYPE (sym->st_info)); - } -} diff --git a/tests/show-abbrev.c b/tests/show-abbrev.c deleted file mode 100644 index 7017932f..00000000 --- a/tests/show-abbrev.c +++ /dev/null @@ -1,127 +0,0 @@ -/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <config.h> - -#include <fcntl.h> -#include <inttypes.h> -#include <libdw.h> -#include <stdio.h> -#include <unistd.h> - - -int -main (int argc, char *argv[]) -{ - int cnt; - - for (cnt = 1; cnt < argc; ++cnt) - { - int fd = open (argv[cnt], O_RDONLY); - Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ); - if (dbg == NULL) - { - printf ("%s not usable: %s\n", argv[cnt], dwarf_errmsg (-1)); - close (fd); - continue; - } - - Dwarf_Off cuoff = 0; - Dwarf_Off old_cuoff = 0; - size_t hsize; - while (dwarf_nextcu (dbg, cuoff, &cuoff, &hsize, NULL, NULL, NULL) == 0) - { - /* Get the DIE for the CU. */ - Dwarf_Die die; - if (dwarf_offdie (dbg, old_cuoff + hsize, &die) == NULL) - /* Something went wrong. */ - break; - - Dwarf_Off offset = 0; - - while (1) - { - size_t length; - Dwarf_Abbrev *abbrev = dwarf_getabbrev (&die, offset, &length); - if (abbrev == NULL) - /* End of the list. */ - break; - - unsigned tag = dwarf_getabbrevtag (abbrev); - if (tag == 0) - { - printf ("dwarf_getabbrevtag at offset %llu returned error: %s\n", - (unsigned long long int) offset, - dwarf_errmsg (-1)); - break; - } - - unsigned code = dwarf_getabbrevcode (abbrev); - if (code == 0) - { - printf ("dwarf_getabbrevcode at offset %llu returned error: %s\n", - (unsigned long long int) offset, - dwarf_errmsg (-1)); - break; - } - - int children = dwarf_abbrevhaschildren (abbrev); - if (children < 0) - { - printf ("dwarf_abbrevhaschildren at offset %llu returned error: %s\n", - (unsigned long long int) offset, - dwarf_errmsg (-1)); - break; - } - - printf ("abbrev[%llu]: code = %u, tag = %u, children = %d\n", - (unsigned long long int) offset, code, tag, children); - - size_t attrcnt; - if (dwarf_getattrcnt (abbrev, &attrcnt) != 0) - { - printf ("dwarf_getattrcnt at offset %llu returned error: %s\n", - (unsigned long long int) offset, - dwarf_errmsg (-1)); - break; - } - - unsigned int attr_num; - unsigned int attr_form; - Dwarf_Off aboffset; - size_t j; - for (j = 0; j < attrcnt; ++j) - if (dwarf_getabbrevattr (abbrev, j, &attr_num, &attr_form, - &aboffset)) - printf ("dwarf_getabbrevattr for abbrev[%llu] and index %zu failed\n", - (unsigned long long int) offset, j); - else - printf ("abbrev[%llu]: attr[%zu]: code = %u, form = %u, offset = %" PRIu64 "\n", - (unsigned long long int) offset, j, attr_num, - attr_form, (uint64_t) aboffset); - - offset += length; - } - - old_cuoff = cuoff; - } - - if (dwarf_end (dbg) != 0) - printf ("dwarf_end failed for %s: %s\n", argv[cnt], - dwarf_errmsg (-1)); - - close (fd); - } - - return 0; -} diff --git a/tests/show-die-info.c b/tests/show-die-info.c deleted file mode 100644 index d4f992f3..00000000 --- a/tests/show-die-info.c +++ /dev/null @@ -1,475 +0,0 @@ -/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <config.h> - -#include <dwarf.h> -#include <inttypes.h> -#include <libelf.h> -#include <libdw.h> -#include <fcntl.h> -#include <stdio.h> -#include <string.h> -#include <unistd.h> - - -static const char *tagnames[] = -{ - [DW_TAG_array_type] = "DW_TAG_array_type", - [DW_TAG_class_type] = "DW_TAG_class_type", - [DW_TAG_entry_point] = "DW_TAG_entry_point", - [DW_TAG_enumeration_type] = "DW_TAG_enumeration_type", - [DW_TAG_formal_parameter] = "DW_TAG_formal_parameter", - [DW_TAG_imported_declaration] = "DW_TAG_imported_declaration", - [DW_TAG_label] = "DW_TAG_label", - [DW_TAG_lexical_block] = "DW_TAG_lexical_block", - [DW_TAG_member] = "DW_TAG_member", - [DW_TAG_pointer_type] = "DW_TAG_pointer_type", - [DW_TAG_reference_type] = "DW_TAG_reference_type", - [DW_TAG_compile_unit] = "DW_TAG_compile_unit", - [DW_TAG_string_type] = "DW_TAG_string_type", - [DW_TAG_structure_type] = "DW_TAG_structure_type", - [DW_TAG_subroutine_type] = "DW_TAG_subroutine_type", - [DW_TAG_typedef] = "DW_TAG_typedef", - [DW_TAG_union_type] = "DW_TAG_union_type", - [DW_TAG_unspecified_parameters] = "DW_TAG_unspecified_parameters", - [DW_TAG_variant] = "DW_TAG_variant", - [DW_TAG_common_block] = "DW_TAG_common_block", - [DW_TAG_common_inclusion] = "DW_TAG_common_inclusion", - [DW_TAG_inheritance] = "DW_TAG_inheritance", - [DW_TAG_inlined_subroutine] = "DW_TAG_inlined_subroutine", - [DW_TAG_module] = "DW_TAG_module", - [DW_TAG_ptr_to_member_type] = "DW_TAG_ptr_to_member_type", - [DW_TAG_set_type] = "DW_TAG_set_type", - [DW_TAG_subrange_type] = "DW_TAG_subrange_type", - [DW_TAG_with_stmt] = "DW_TAG_with_stmt", - [DW_TAG_access_declaration] = "DW_TAG_access_declaration", - [DW_TAG_base_type] = "DW_TAG_base_type", - [DW_TAG_catch_block] = "DW_TAG_catch_block", - [DW_TAG_const_type] = "DW_TAG_const_type", - [DW_TAG_constant] = "DW_TAG_constant", - [DW_TAG_enumerator] = "DW_TAG_enumerator", - [DW_TAG_file_type] = "DW_TAG_file_type", - [DW_TAG_friend] = "DW_TAG_friend", - [DW_TAG_namelist] = "DW_TAG_namelist", - [DW_TAG_namelist_item] = "DW_TAG_namelist_item", - [DW_TAG_packed_type] = "DW_TAG_packed_type", - [DW_TAG_subprogram] = "DW_TAG_subprogram", - [DW_TAG_template_type_param] = "DW_TAG_template_type_param", - [DW_TAG_template_value_param] = "DW_TAG_template_value_param", - [DW_TAG_thrown_type] = "DW_TAG_thrown_type", - [DW_TAG_try_block] = "DW_TAG_try_block", - [DW_TAG_variant_part] = "DW_TAG_variant_part", - [DW_TAG_variable] = "DW_TAG_variable", - [DW_TAG_volatile_type] = "DW_TAG_volatile_type" -}; -#define ntagnames (sizeof (tagnames) / sizeof (tagnames[0])) - - -const struct -{ - int code; - const char *name; -} attrs[] = -{ - { DW_AT_sibling, "sibling" }, - { DW_AT_location, "location" }, - { DW_AT_name, "name" }, - { DW_AT_ordering, "ordering" }, - { DW_AT_subscr_data, "subscr_data" }, - { DW_AT_byte_size, "byte_size" }, - { DW_AT_bit_offset, "bit_offset" }, - { DW_AT_bit_size, "bit_size" }, - { DW_AT_element_list, "element_list" }, - { DW_AT_stmt_list, "stmt_list" }, - { DW_AT_low_pc, "low_pc" }, - { DW_AT_high_pc, "high_pc" }, - { DW_AT_language, "language" }, - { DW_AT_member, "member" }, - { DW_AT_discr, "discr" }, - { DW_AT_discr_value, "discr_value" }, - { DW_AT_visibility, "visibility" }, - { DW_AT_import, "import" }, - { DW_AT_string_length, "string_length" }, - { DW_AT_common_reference, "common_reference" }, - { DW_AT_comp_dir, "comp_dir" }, - { DW_AT_const_value, "const_value" }, - { DW_AT_containing_type, "containing_type" }, - { DW_AT_default_value, "default_value" }, - { DW_AT_inline, "inline" }, - { DW_AT_is_optional, "is_optional" }, - { DW_AT_lower_bound, "lower_bound" }, - { DW_AT_producer, "producer" }, - { DW_AT_prototyped, "prototyped" }, - { DW_AT_return_addr, "return_addr" }, - { DW_AT_start_scope, "start_scope" }, - { DW_AT_stride_size, "stride_size" }, - { DW_AT_upper_bound, "upper_bound" }, - { DW_AT_abstract_origin, "abstract_origin" }, - { DW_AT_accessibility, "accessibility" }, - { DW_AT_address_class, "address_class" }, - { DW_AT_artificial, "artificial" }, - { DW_AT_base_types, "base_types" }, - { DW_AT_calling_convention, "calling_convention" }, - { DW_AT_count, "count" }, - { DW_AT_data_member_location, "data_member_location" }, - { DW_AT_decl_column, "decl_column" }, - { DW_AT_decl_file, "decl_file" }, - { DW_AT_decl_line, "decl_line" }, - { DW_AT_declaration, "declaration" }, - { DW_AT_discr_list, "discr_list" }, - { DW_AT_encoding, "encoding" }, - { DW_AT_external, "external" }, - { DW_AT_frame_base, "frame_base" }, - { DW_AT_friend, "friend" }, - { DW_AT_identifier_case, "identifier_case" }, - { DW_AT_macro_info, "macro_info" }, - { DW_AT_namelist_items, "namelist_items" }, - { DW_AT_priority, "priority" }, - { DW_AT_segment, "segment" }, - { DW_AT_specification, "specification" }, - { DW_AT_static_link, "static_link" }, - { DW_AT_type, "type" }, - { DW_AT_use_location, "use_location" }, - { DW_AT_variable_parameter, "variable_parameter" }, - { DW_AT_virtuality, "virtuality" }, - { DW_AT_vtable_elem_location, "vtable_elem_location" }, - { DW_AT_MIPS_fde, "MIPS_fde" }, - { DW_AT_MIPS_loop_begin, "MIPS_loop_begin" }, - { DW_AT_MIPS_tail_loop_begin, "MIPS_tail_loop_begin" }, - { DW_AT_MIPS_epilog_begin, "MIPS_epilog_begin" }, - { DW_AT_MIPS_loop_unroll_factor, "MIPS_loop_unroll_factor" }, - { DW_AT_MIPS_software_pipeline_depth, "MIPS_software_pipeline_depth" }, - { DW_AT_MIPS_linkage_name, "MIPS_linkage_name" }, - { DW_AT_MIPS_stride, "MIPS_stride" }, - { DW_AT_MIPS_abstract_name, "MIPS_abstract_name" }, - { DW_AT_MIPS_clone_origin, "MIPS_clone_origin" }, - { DW_AT_MIPS_has_inlines, "MIPS_has_inlines" }, - { DW_AT_MIPS_stride_byte, "MIPS_stride_byte" }, - { DW_AT_MIPS_stride_elem, "MIPS_stride_elem" }, - { DW_AT_MIPS_ptr_dopetype, "MIPS_ptr_dopetype" }, - { DW_AT_MIPS_allocatable_dopetype, "MIPS_allocatable_dopetype" }, - { DW_AT_MIPS_assumed_shape_dopetype, "MIPS_assumed_shape_dopetype" }, - { DW_AT_MIPS_assumed_size, "MIPS_assumed_size" }, - { DW_AT_sf_names, "sf_names" }, - { DW_AT_src_info, "src_info" }, - { DW_AT_mac_info, "mac_info" }, - { DW_AT_src_coords, "src_coords" }, - { DW_AT_body_begin, "body_begin" }, - { DW_AT_body_end, "body_end" } -}; -#define nattrs (sizeof (attrs) / sizeof (attrs[0])) - - -void -handle (Dwarf *dbg, Dwarf_Die *die, int n) -{ - Dwarf_Die child; - unsigned int tag; - const char *str; - char buf[30]; - const char *name; - Dwarf_Off off; - Dwarf_Off cuoff; - size_t cnt; - Dwarf_Addr addr; - int i; - - tag = dwarf_tag (die); - if (tag != DW_TAG_invalid) - { - if (tag < ntagnames) - str = tagnames[tag]; - else - { - snprintf (buf, sizeof buf, "%#x", tag); - str = buf; - } - } - else - str = "* NO TAG *"; - - name = dwarf_diename (die); - if (name == 0) - name = "* NO NAME *"; - - off = dwarf_dieoffset (die); - cuoff = dwarf_cuoffset (die); - - printf ("%*s%s\n", n * 5, "", str); - printf ("%*s Name : %s\n", n * 5, "", name); - printf ("%*s Offset : %lld\n", n * 5, "", (long long int) off); - printf ("%*s CU offset : %lld\n", n * 5, "", (long long int) cuoff); - - printf ("%*s Attrs :", n * 5, ""); - for (cnt = 0; cnt < nattrs; ++cnt) - if (dwarf_hasattr (die, attrs[cnt].code)) - printf (" %s", attrs[cnt].name); - puts (""); - - if (dwarf_hasattr (die, DW_AT_low_pc) && dwarf_lowpc (die, &addr) == 0) - { - Dwarf_Attribute attr; - Dwarf_Addr addr2; - printf ("%*s low PC : %#llx\n", - n * 5, "", (unsigned long long int) addr); - - if (dwarf_attr (die, DW_AT_low_pc, &attr) == NULL - || dwarf_formaddr (&attr, &addr2) != 0 - || addr != addr2) - puts ("************* DW_AT_low_pc verify failed ************"); - else if (! dwarf_hasform (&attr, DW_FORM_addr)) - puts ("************* DW_AT_low_pc form failed ************"); - else if (dwarf_whatform (&attr) != DW_FORM_addr) - puts ("************* DW_AT_low_pc form (2) failed ************"); - else if (dwarf_whatattr (&attr) != DW_AT_low_pc) - puts ("************* DW_AT_low_pc attr failed ************"); - } - if (dwarf_hasattr (die, DW_AT_high_pc) && dwarf_highpc (die, &addr) == 0) - { - Dwarf_Attribute attr; - Dwarf_Addr addr2; - printf ("%*s high PC : %#llx\n", - n * 5, "", (unsigned long long int) addr); - if (dwarf_attr (die, DW_AT_high_pc, &attr) == NULL - || dwarf_formaddr (&attr, &addr2) != 0 - || addr != addr2) - puts ("************* DW_AT_high_pc verify failed ************"); - else if (! dwarf_hasform (&attr, DW_FORM_addr)) - puts ("************* DW_AT_high_pc form failed ************"); - else if (dwarf_whatform (&attr) != DW_FORM_addr) - puts ("************* DW_AT_high_pc form (2) failed ************"); - else if (dwarf_whatattr (&attr) != DW_AT_high_pc) - puts ("************* DW_AT_high_pc attr failed ************"); - } - - if (dwarf_hasattr (die, DW_AT_byte_size) && (i = dwarf_bytesize (die)) != -1) - { - Dwarf_Attribute attr; - Dwarf_Word u2; - unsigned int u; - printf ("%*s byte size : %d\n", n * 5, "", i); - if (dwarf_attr (die, DW_AT_byte_size, &attr) == NULL - || dwarf_formudata (&attr, &u2) != 0 - || i != (int) u2) - puts ("************* DW_AT_byte_size verify failed ************"); - else if (! dwarf_hasform (&attr, DW_FORM_data1) - && ! dwarf_hasform (&attr, DW_FORM_data2) - && ! dwarf_hasform (&attr, DW_FORM_data4) - && ! dwarf_hasform (&attr, DW_FORM_data8) - && ! dwarf_hasform (&attr, DW_FORM_sdata) - && ! dwarf_hasform (&attr, DW_FORM_udata)) - puts ("************* DW_AT_byte_size form failed ************"); - else if ((u = dwarf_whatform (&attr)) == 0 - || (u != DW_FORM_data1 - && u != DW_FORM_data2 - && u != DW_FORM_data4 - && u != DW_FORM_data8 - && u != DW_FORM_sdata - && u != DW_FORM_udata)) - puts ("************* DW_AT_byte_size form (2) failed ************"); - else if (dwarf_whatattr (&attr) != DW_AT_byte_size) - puts ("************* DW_AT_byte_size attr failed ************"); - } - if (dwarf_hasattr (die, DW_AT_bit_size) && (i = dwarf_bitsize (die)) != -1) - { - Dwarf_Attribute attr; - Dwarf_Word u2; - unsigned int u; - printf ("%*s bit size : %d\n", n * 5, "", i); - if (dwarf_attr (die, DW_AT_bit_size, &attr) == NULL - || dwarf_formudata (&attr, &u2) != 0 - || i != (int) u2) - puts ("************* DW_AT_bit_size test failed ************"); - else if (! dwarf_hasform (&attr, DW_FORM_data1) - && ! dwarf_hasform (&attr, DW_FORM_data2) - && ! dwarf_hasform (&attr, DW_FORM_data4) - && ! dwarf_hasform (&attr, DW_FORM_data8) - && ! dwarf_hasform (&attr, DW_FORM_sdata) - && ! dwarf_hasform (&attr, DW_FORM_udata)) - puts ("************* DW_AT_bit_size form failed ************"); - else if ((u = dwarf_whatform (&attr)) == 0 - || (u != DW_FORM_data1 - && u != DW_FORM_data2 - && u != DW_FORM_data4 - && u != DW_FORM_data8 - && u != DW_FORM_sdata - && u != DW_FORM_udata)) - puts ("************* DW_AT_bit_size form (2) failed ************"); - else if (dwarf_whatattr (&attr) != DW_AT_bit_size) - puts ("************* DW_AT_bit_size attr failed ************"); - } - if (dwarf_hasattr (die, DW_AT_bit_offset) - && (i = dwarf_bitoffset (die)) != -1) - { - Dwarf_Attribute attr; - Dwarf_Word u2; - unsigned int u; - printf ("%*s bit offset: %d\n", n * 5, "", i); - if (dwarf_attr (die, DW_AT_bit_offset, &attr) == NULL - || dwarf_formudata (&attr, &u2) != 0 - || i != (int) u2) - puts ("************* DW_AT_bit_offset test failed ************"); - else if (! dwarf_hasform (&attr, DW_FORM_data1) - && ! dwarf_hasform (&attr, DW_FORM_data2) - && ! dwarf_hasform (&attr, DW_FORM_data4) - && ! dwarf_hasform (&attr, DW_FORM_data8) - && ! dwarf_hasform (&attr, DW_FORM_sdata) - && ! dwarf_hasform (&attr, DW_FORM_udata)) - puts ("************* DW_AT_bit_offset form failed ************"); - else if ((u = dwarf_whatform (&attr)) == 0 - || (u != DW_FORM_data1 - && u != DW_FORM_data2 - && u != DW_FORM_data4 - && u != DW_FORM_data8 - && u != DW_FORM_sdata - && u != DW_FORM_udata)) - puts ("************* DW_AT_bit_offset form (2) failed ************"); - else if (dwarf_whatattr (&attr) != DW_AT_bit_offset) - puts ("************* DW_AT_bit_offset attr failed ************"); - } - - if (dwarf_hasattr (die, DW_AT_language) && (i = dwarf_srclang (die)) != -1) - { - Dwarf_Attribute attr; - Dwarf_Word u2; - unsigned int u; - printf ("%*s language : %d\n", n * 5, "", i); - if (dwarf_attr (die, DW_AT_language, &attr) == NULL - || dwarf_formudata (&attr, &u2) != 0 - || i != (int) u2) - puts ("************* DW_AT_language test failed ************"); - else if (! dwarf_hasform (&attr, DW_FORM_data1) - && ! dwarf_hasform (&attr, DW_FORM_data2) - && ! dwarf_hasform (&attr, DW_FORM_data4) - && ! dwarf_hasform (&attr, DW_FORM_data8) - && ! dwarf_hasform (&attr, DW_FORM_sdata) - && ! dwarf_hasform (&attr, DW_FORM_udata)) - puts ("************* DW_AT_language form failed ************"); - else if ((u = dwarf_whatform (&attr)) == 0 - || (u != DW_FORM_data1 - && u != DW_FORM_data2 - && u != DW_FORM_data4 - && u != DW_FORM_data8 - && u != DW_FORM_sdata - && u != DW_FORM_udata)) - puts ("************* DW_AT_language form (2) failed ************"); - else if (dwarf_whatattr (&attr) != DW_AT_language) - puts ("************* DW_AT_language attr failed ************"); - } - - if (dwarf_hasattr (die, DW_AT_ordering) - && (i = dwarf_arrayorder (die)) != -1) - { - Dwarf_Attribute attr; - Dwarf_Word u2; - unsigned int u; - printf ("%*s ordering : %d\n", n * 5, "", i); - if (dwarf_attr (die, DW_AT_ordering, &attr) == NULL - || dwarf_formudata (&attr, &u2) != 0 - || i != (int) u2) - puts ("************* DW_AT_ordering test failed ************"); - else if (! dwarf_hasform (&attr, DW_FORM_data1) - && ! dwarf_hasform (&attr, DW_FORM_data2) - && ! dwarf_hasform (&attr, DW_FORM_data4) - && ! dwarf_hasform (&attr, DW_FORM_data8) - && ! dwarf_hasform (&attr, DW_FORM_sdata) - && ! dwarf_hasform (&attr, DW_FORM_udata)) - puts ("************* DW_AT_ordering failed ************"); - else if ((u = dwarf_whatform (&attr)) == 0 - || (u != DW_FORM_data1 - && u != DW_FORM_data2 - && u != DW_FORM_data4 - && u != DW_FORM_data8 - && u != DW_FORM_sdata - && u != DW_FORM_udata)) - puts ("************* DW_AT_ordering form (2) failed ************"); - else if (dwarf_whatattr (&attr) != DW_AT_ordering) - puts ("************* DW_AT_ordering attr failed ************"); - } - - if (dwarf_hasattr (die, DW_AT_comp_dir)) - { - Dwarf_Attribute attr; - if (dwarf_attr (die, DW_AT_comp_dir, &attr) == NULL - || (name = dwarf_formstring (&attr)) == NULL) - puts ("************* DW_AT_comp_dir attr failed ************"); - else - printf ("%*s directory : %s\n", n * 5, "", name); - } - - if (dwarf_hasattr (die, DW_AT_producer)) - { - Dwarf_Attribute attr; - if (dwarf_attr (die, DW_AT_producer, &attr) == NULL - || (name = dwarf_formstring (&attr)) == NULL) - puts ("************* DW_AT_comp_dir attr failed ************"); - else - printf ("%*s producer : %s\n", n * 5, "", name); - } - - if (dwarf_haschildren (die) != 0 && dwarf_child (die, &child) == 0) - handle (dbg, &child, n + 1); - if (dwarf_siblingof (die, die) == 0) - handle (dbg, die, n); -} - - -int -main (int argc, char *argv[]) -{ - int cnt; - - for (cnt = 1; cnt < argc; ++cnt) - { - int fd = open (argv[cnt], O_RDONLY); - Dwarf *dbg; - - printf ("file: %s\n", basename (argv[cnt])); - - dbg = dwarf_begin (fd, DWARF_C_READ); - if (dbg == NULL) - { - printf ("%s not usable\n", argv[cnt]); - close (fd); - continue; - } - - Dwarf_Off off = 0; - Dwarf_Off old_off = 0; - size_t hsize; - Dwarf_Off abbrev; - uint8_t addresssize; - uint8_t offsetsize; - while (dwarf_nextcu (dbg, off, &off, &hsize, &abbrev, &addresssize, - &offsetsize) == 0) - { - printf ("New CU: off = %llu, hsize = %zu, ab = %llu, as = %" PRIu8 - ", os = %" PRIu8 "\n", - (unsigned long long int) old_off, hsize, - (unsigned long long int) abbrev, addresssize, - offsetsize); - - Dwarf_Die die; - if (dwarf_offdie (dbg, old_off + hsize, &die) != NULL) - handle (dbg, &die, 1); - - old_off = off; - } - - dwarf_end (dbg); - close (fd); - } - - return 0; -} diff --git a/tests/showptable.c b/tests/showptable.c deleted file mode 100644 index afc1f26d..00000000 --- a/tests/showptable.c +++ /dev/null @@ -1,129 +0,0 @@ -/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 1998. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <config.h> - -#include <errno.h> -#include <fcntl.h> -#include <gelf.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -int -main (int argc, char *argv[]) -{ - Elf *elf; - int fd; - GElf_Ehdr ehdr; - int cnt; - - fd = open (argv[1], O_RDONLY); - if (fd == -1) - { - printf ("cannot open \"%s\": %s\n", argv[1], strerror (errno)); - exit (1); - } - - elf_version (EV_CURRENT); - - elf = elf_begin (fd, ELF_C_READ, NULL); - if (elf == NULL) - { - printf ("cannot open ELF file: %s\n", elf_errmsg (-1)); - exit (1); - } - - if (elf_kind (elf) != ELF_K_ELF) - { - printf ("\"%s\" is not an ELF file\n", argv[1]); - exit (1); - } - - if (gelf_getehdr (elf, &ehdr) == NULL) - { - printf ("cannot get the ELF header: %s\n", elf_errmsg (-1)); - exit (1); - } - - printf ("idx type %*s %*s %*s %*s %*s align flags\n", - gelf_getclass (elf) == ELFCLASS32 ? 9 : 17, "offset", - gelf_getclass (elf) == ELFCLASS32 ? 10 : 18, "vaddr", - gelf_getclass (elf) == ELFCLASS32 ? 10 : 18, "paddr", - gelf_getclass (elf) == ELFCLASS32 ? 9 : 12, "filesz", - gelf_getclass (elf) == ELFCLASS32 ? 9 : 12, "memsz"); - - for (cnt = 0; cnt < ehdr.e_phnum; ++cnt) - { - static const char *typenames[] = - { - [PT_NULL] = "NULL", - [PT_LOAD] = "LOAD", - [PT_DYNAMIC] = "DYNAMIC", - [PT_INTERP] = "INTERP", - [PT_NOTE] = "NOTE", - [PT_SHLIB] = "SHLIB", - [PT_PHDR] = "PHDR" - }; - GElf_Phdr mem; - GElf_Phdr *phdr = gelf_getphdr (elf, cnt, &mem); - char buf[19]; - const char *p_type = typenames[phdr->p_type]; - - /* If we don't know the name of the type we use the number value. */ - if (phdr->p_type >= PT_NUM) - { - snprintf (buf, sizeof (buf), "%x", phdr->p_type); - p_type = buf; - } - - printf ("%3d %-7s %#0*llx %#0*llx %#0*llx %#0*llx %#0*llx %#6llx ", - cnt, p_type, - gelf_getclass (elf) == ELFCLASS32 ? 9 : 17, - (unsigned long long int) phdr->p_offset, - gelf_getclass (elf) == ELFCLASS32 ? 10 : 18, - (unsigned long long int) phdr->p_vaddr, - gelf_getclass (elf) == ELFCLASS32 ? 10 : 18, - (unsigned long long int) phdr->p_paddr, - gelf_getclass (elf) == ELFCLASS32 ? 9 : 12, - (unsigned long long int) phdr->p_filesz, - gelf_getclass (elf) == ELFCLASS32 ? 9 : 12, - (unsigned long long int) phdr->p_memsz, - (unsigned long long int) phdr->p_align); - - putc_unlocked ((phdr->p_flags & PF_X) ? 'X' : ' ', stdout); - putc_unlocked ((phdr->p_flags & PF_W) ? 'W' : ' ', stdout); - putc_unlocked ((phdr->p_flags & PF_R) ? 'R' : ' ', stdout); - - putc_unlocked ('\n', stdout); - - if (phdr->p_type == PT_INTERP) - { - /* We can show the user the name of the interpreter. */ - size_t maxsize; - char *filedata = elf_rawfile (elf, &maxsize); - - if (filedata != NULL && phdr->p_offset < maxsize) - printf ("\t[Requesting program interpreter: %s]\n", - filedata + phdr->p_offset); - } - } - - if (elf_end (elf) != 0) - { - printf ("error while freeing ELF descriptor: %s\n", elf_errmsg (-1)); - exit (1); - } - - return 0; -} diff --git a/tests/test-nlist.c b/tests/test-nlist.c deleted file mode 100644 index 40eb320a..00000000 --- a/tests/test-nlist.c +++ /dev/null @@ -1,79 +0,0 @@ -/* Copyright (C) 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#include <nlist.h> -#include <stdio.h> -#include <stdlib.h> - - -int var = 1; - -int bss; - - -int -foo (int a) -{ - return a; -} - -int -main (int argc, char *argv[]) -{ - struct nlist nl[6] = - { - [0] = { .n_name = "var" }, - [1] = { .n_name = "bss" }, - [2] = { .n_name = "main" }, - [3] = { .n_name = "foo" }, - [4] = { .n_name = "not-there" }, - [5] = { .n_name = NULL }, - }; - int cnt; - int result = 0; - - if (nlist (".libs/test-nlist", nl) != 0 - && nlist ("./test-nlist", nl) != 0) - { - puts ("nlist failed"); - exit (1); - } - - for (cnt = 0; nl[cnt].n_name != NULL; ++cnt) - { - if (argc > 1) - /* For debugging. */ - printf ("nl[%d].n_name = \"%s\"\n" - "nl[%d].n_value = %ld\n" - "nl[%d].n_scnum = %d\n" - "nl[%d].n_type = %u\n" - "nl[%d].n_sclass = %d\n" - "nl[%d].n_numaux = %d\n\n", - cnt, nl[cnt].n_name, - cnt, nl[cnt].n_value, - cnt, nl[cnt].n_scnum, - cnt, nl[cnt].n_type, - cnt, nl[cnt].n_sclass, - cnt, nl[cnt].n_numaux); - - if ((cnt != 4 && nl[cnt].n_value == 0 && nl[cnt].n_scnum == 0 - && nl[cnt].n_type == 0 && nl[cnt].n_sclass == 0 - && nl[cnt].n_numaux == 0) - || (cnt == 4 && (nl[cnt].n_value != 0 || nl[cnt].n_scnum != 0 - || nl[cnt].n_type != 0 || nl[cnt].n_sclass != 0 - || nl[cnt].n_numaux != 0))) - result = 1; - } - - return foo (result); -} diff --git a/tests/testfile.bz2 b/tests/testfile.bz2 Binary files differdeleted file mode 100644 index bde9b126..00000000 --- a/tests/testfile.bz2 +++ /dev/null diff --git a/tests/testfile10.bz2 b/tests/testfile10.bz2 Binary files differdeleted file mode 100644 index e9dd5046..00000000 --- a/tests/testfile10.bz2 +++ /dev/null diff --git a/tests/testfile11.bz2 b/tests/testfile11.bz2 Binary files differdeleted file mode 100644 index d094b848..00000000 --- a/tests/testfile11.bz2 +++ /dev/null diff --git a/tests/testfile12.bz2 b/tests/testfile12.bz2 Binary files differdeleted file mode 100644 index 8bb5ad33..00000000 --- a/tests/testfile12.bz2 +++ /dev/null diff --git a/tests/testfile13.bz2 b/tests/testfile13.bz2 Binary files differdeleted file mode 100644 index 3b0bcb93..00000000 --- a/tests/testfile13.bz2 +++ /dev/null diff --git a/tests/testfile2.bz2 b/tests/testfile2.bz2 Binary files differdeleted file mode 100644 index 0771311b..00000000 --- a/tests/testfile2.bz2 +++ /dev/null diff --git a/tests/testfile3.bz2 b/tests/testfile3.bz2 Binary files differdeleted file mode 100644 index 30a456c7..00000000 --- a/tests/testfile3.bz2 +++ /dev/null diff --git a/tests/testfile4.bz2 b/tests/testfile4.bz2 Binary files differdeleted file mode 100644 index 25b25dfc..00000000 --- a/tests/testfile4.bz2 +++ /dev/null diff --git a/tests/testfile5.bz2 b/tests/testfile5.bz2 Binary files differdeleted file mode 100644 index 247313e0..00000000 --- a/tests/testfile5.bz2 +++ /dev/null diff --git a/tests/testfile6.bz2 b/tests/testfile6.bz2 Binary files differdeleted file mode 100644 index fd376b27..00000000 --- a/tests/testfile6.bz2 +++ /dev/null diff --git a/tests/testfile7.bz2 b/tests/testfile7.bz2 Binary files differdeleted file mode 100644 index 73452bbb..00000000 --- a/tests/testfile7.bz2 +++ /dev/null diff --git a/tests/testfile8.bz2 b/tests/testfile8.bz2 Binary files differdeleted file mode 100644 index 1ff4994c..00000000 --- a/tests/testfile8.bz2 +++ /dev/null diff --git a/tests/testfile9.bz2 b/tests/testfile9.bz2 Binary files differdeleted file mode 100644 index 40454bce..00000000 --- a/tests/testfile9.bz2 +++ /dev/null diff --git a/tests/update1.c b/tests/update1.c deleted file mode 100644 index decb09ba..00000000 --- a/tests/update1.c +++ /dev/null @@ -1,120 +0,0 @@ -/* Test program for elf_update function. - Copyright (C) 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <errno.h> -#include <fcntl.h> -#include <libelf.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - - -int -main (int argc, char *argv[]) -{ - const char *fname = "xxx"; - int fd; - Elf *elf; - Elf32_Ehdr *ehdr; - int i; - - fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666); - if (fd == -1) - { - printf ("cannot open `%s': %s\n", fname, strerror (errno)); - exit (1); - } - - elf_version (EV_CURRENT); - - elf = elf_begin (fd, ELF_C_WRITE, NULL); - if (elf == NULL) - { - printf ("cannot create ELF descriptor: %s\n", elf_errmsg (-1)); - exit (1); - } - - /* Create an ELF header. */ - ehdr = elf32_newehdr (elf); - if (ehdr == NULL) - { - printf ("cannot create ELF header: %s\n", elf_errmsg (-1)); - exit (1); - } - - /* Print the ELF header values. */ - if (argc > 1) - { - for (i = 0; i < EI_NIDENT; ++i) - printf (" %02x", ehdr->e_ident[i]); - printf ("\ -\ntype = %hu\nmachine = %hu\nversion = %u\nentry = %u\nphoff = %u\n" - "shoff = %u\nflags = %u\nehsize = %hu\nphentsize = %hu\n" - "phnum = %hu\nshentsize = %hu\nshnum = %hu\nshstrndx = %hu\n", - ehdr->e_type, ehdr->e_machine, ehdr->e_version, ehdr->e_entry, - ehdr->e_phoff, ehdr->e_shoff, ehdr->e_flags, ehdr->e_ehsize, - ehdr->e_phentsize, ehdr->e_phnum, ehdr->e_shentsize, - ehdr->e_shnum, ehdr->e_shstrndx); - } - - ehdr->e_ident[0] = 42; - ehdr->e_ident[4] = 1; - ehdr->e_ident[5] = 1; - ehdr->e_ident[6] = 2; - ehdr->e_ident[9] = 2; - ehdr->e_version = 1; - ehdr->e_ehsize = 1; - - /* Write out the file. */ - if (elf_update (elf, ELF_C_WRITE) < 0) - { - printf ("failure in elf_update: %s\n", elf_errmsg (-1)); - exit (1); - } - - /* Create an ELF header. */ - ehdr = elf32_newehdr (elf); - if (ehdr == NULL) - { - printf ("cannot create ELF header: %s\n", elf_errmsg (-1)); - exit (1); - } - - /* Print the ELF header values. */ - if (argc > 1) - { - for (i = 0; i < EI_NIDENT; ++i) - printf (" %02x", ehdr->e_ident[i]); - printf ("\ -\ntype = %hu\nmachine = %hu\nversion = %u\nentry = %u\nphoff = %u\n" - "shoff = %u\nflags = %u\nehsize = %hu\nphentsize = %hu\n" - "phnum = %hu\nshentsize = %hu\nshnum = %hu\nshstrndx = %hu\n", - ehdr->e_type, ehdr->e_machine, ehdr->e_version, ehdr->e_entry, - ehdr->e_phoff, ehdr->e_shoff, ehdr->e_flags, ehdr->e_ehsize, - ehdr->e_phentsize, ehdr->e_phnum, ehdr->e_shentsize, - ehdr->e_shnum, ehdr->e_shstrndx); - } - - if (elf_end (elf) != 0) - { - printf ("failure in elf_end: %s\n", elf_errmsg (-1)); - exit (1); - } - - return 0; -} diff --git a/tests/update2.c b/tests/update2.c deleted file mode 100644 index c595fba7..00000000 --- a/tests/update2.c +++ /dev/null @@ -1,143 +0,0 @@ -/* Test program for elf_update function. - Copyright (C) 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <errno.h> -#include <fcntl.h> -#include <libelf.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - - -int -main (int argc, char *argv[]) -{ - const char *fname = "xxx"; - int fd; - Elf *elf; - Elf32_Ehdr *ehdr; - Elf32_Phdr *phdr; - int i; - - fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666); - if (fd == -1) - { - printf ("cannot open `%s': %s\n", fname, strerror (errno)); - exit (1); - } - - elf_version (EV_CURRENT); - - elf = elf_begin (fd, ELF_C_WRITE, NULL); - if (elf == NULL) - { - printf ("cannot create ELF descriptor: %s\n", elf_errmsg (-1)); - exit (1); - } - - /* Create an ELF header. */ - ehdr = elf32_newehdr (elf); - if (ehdr == NULL) - { - printf ("cannot create ELF header: %s\n", elf_errmsg (-1)); - exit (1); - } - - /* Print the ELF header values. */ - if (argc > 1) - { - for (i = 0; i < EI_NIDENT; ++i) - printf (" %02x", ehdr->e_ident[i]); - printf ("\ -\ntype = %hu\nmachine = %hu\nversion = %u\nentry = %u\nphoff = %u\n" - "shoff = %u\nflags = %u\nehsize = %hu\nphentsize = %hu\n" - "phnum = %hu\nshentsize = %hu\nshnum = %hu\nshstrndx = %hu\n", - ehdr->e_type, ehdr->e_machine, ehdr->e_version, ehdr->e_entry, - ehdr->e_phoff, ehdr->e_shoff, ehdr->e_flags, ehdr->e_ehsize, - ehdr->e_phentsize, ehdr->e_phnum, ehdr->e_shentsize, - ehdr->e_shnum, ehdr->e_shstrndx); - } - - ehdr->e_ident[0] = 42; - ehdr->e_ident[4] = 1; - ehdr->e_ident[5] = 1; - ehdr->e_ident[6] = 2; - ehdr->e_type = ET_EXEC; - ehdr->e_version = 1; - ehdr->e_ehsize = 1; - elf_flagehdr (elf, ELF_C_SET, ELF_F_DIRTY); - - /* Create the program header. */ - phdr = elf32_newphdr (elf, 1); - if (phdr == NULL) - { - printf ("cannot create program header: %s\n", elf_errmsg (-1)); - exit (1); - } - - phdr[0].p_type = PT_PHDR; - elf_flagphdr (elf, ELF_C_SET, ELF_F_DIRTY); - - /* Let the library compute the internal structure information. */ - if (elf_update (elf, ELF_C_NULL) < 0) - { - printf ("failure in elf_update(NULL): %s\n", elf_errmsg (-1)); - exit (1); - } - - ehdr = elf32_getehdr (elf); - - phdr[0].p_offset = ehdr->e_phoff; - phdr[0].p_offset = ehdr->e_phoff; - phdr[0].p_vaddr = ehdr->e_phoff; - phdr[0].p_paddr = ehdr->e_phoff; - phdr[0].p_flags = PF_R | PF_X; - phdr[0].p_filesz = ehdr->e_phnum * elf32_fsize (ELF_T_PHDR, 1, EV_CURRENT); - phdr[0].p_memsz = ehdr->e_phnum * elf32_fsize (ELF_T_PHDR, 1, EV_CURRENT); - phdr[0].p_align = sizeof (Elf32_Word); - - /* Write out the file. */ - if (elf_update (elf, ELF_C_WRITE) < 0) - { - printf ("failure in elf_update(WRITE): %s\n", elf_errmsg (-1)); - exit (1); - } - - /* Print the ELF header values. */ - if (argc > 1) - { - for (i = 0; i < EI_NIDENT; ++i) - printf (" %02x", ehdr->e_ident[i]); - printf ("\ -\ntype = %hu\nmachine = %hu\nversion = %u\nentry = %u\nphoff = %u\n" - "shoff = %u\nflags = %u\nehsize = %hu\nphentsize = %hu\n" - "phnum = %hu\nshentsize = %hu\nshnum = %hu\nshstrndx = %hu\n", - ehdr->e_type, ehdr->e_machine, ehdr->e_version, ehdr->e_entry, - ehdr->e_phoff, ehdr->e_shoff, ehdr->e_flags, ehdr->e_ehsize, - ehdr->e_phentsize, ehdr->e_phnum, ehdr->e_shentsize, - ehdr->e_shnum, ehdr->e_shstrndx); - } - - if (elf_end (elf) != 0) - { - printf ("failure in elf_end: %s\n", elf_errmsg (-1)); - exit (1); - } - - return 0; -} diff --git a/tests/update3.c b/tests/update3.c deleted file mode 100644 index 06bc8ff6..00000000 --- a/tests/update3.c +++ /dev/null @@ -1,198 +0,0 @@ -/* Test program for elf_update function. - Copyright (C) 2000, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <errno.h> -#include <fcntl.h> -#include <libelf.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include <libebl.h> - - -int -main (int argc, char *argv[]) -{ - const char *fname = "xxx"; - int fd; - Elf *elf; - Elf32_Ehdr *ehdr; - Elf32_Phdr *phdr; - Elf_Scn *scn; - Elf32_Shdr *shdr; - Elf_Data *data; - struct Ebl_Strtab *shst; - struct Ebl_Strent *shstrtabse; - int i; - - fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666); - if (fd == -1) - { - printf ("cannot open `%s': %s\n", fname, strerror (errno)); - exit (1); - } - - elf_version (EV_CURRENT); - - elf_fill (0x42); - - elf = elf_begin (fd, ELF_C_WRITE, NULL); - if (elf == NULL) - { - printf ("cannot create ELF descriptor: %s\n", elf_errmsg (-1)); - exit (1); - } - - /* Create an ELF header. */ - ehdr = elf32_newehdr (elf); - if (ehdr == NULL) - { - printf ("cannot create ELF header: %s\n", elf_errmsg (-1)); - exit (1); - } - - /* Print the ELF header values. */ - if (argc > 1) - { - for (i = 0; i < EI_NIDENT; ++i) - printf (" %02x", ehdr->e_ident[i]); - printf ("\ -\ntype = %hu\nmachine = %hu\nversion = %u\nentry = %u\nphoff = %u\n" - "shoff = %u\nflags = %u\nehsize = %hu\nphentsize = %hu\n" - "phnum = %hu\nshentsize = %hu\nshnum = %hu\nshstrndx = %hu\n", - ehdr->e_type, ehdr->e_machine, ehdr->e_version, ehdr->e_entry, - ehdr->e_phoff, ehdr->e_shoff, ehdr->e_flags, ehdr->e_ehsize, - ehdr->e_phentsize, ehdr->e_phnum, ehdr->e_shentsize, - ehdr->e_shnum, ehdr->e_shstrndx); - } - - ehdr->e_ident[0] = 42; - ehdr->e_ident[4] = 1; - ehdr->e_ident[5] = 1; - ehdr->e_ident[6] = 2; - ehdr->e_type = ET_EXEC; - ehdr->e_version = 1; - ehdr->e_ehsize = 1; - elf_flagehdr (elf, ELF_C_SET, ELF_F_DIRTY); - - /* Create the program header. */ - phdr = elf32_newphdr (elf, 1); - if (phdr == NULL) - { - printf ("cannot create program header: %s\n", elf_errmsg (-1)); - exit (1); - } - - phdr[0].p_type = PT_PHDR; - elf_flagphdr (elf, ELF_C_SET, ELF_F_DIRTY); - - shst = ebl_strtabinit (true); - - scn = elf_newscn (elf); - if (scn == NULL) - { - printf ("cannot create SHSTRTAB section: %s\n", elf_errmsg (-1)); - exit (1); - } - shdr = elf32_getshdr (scn); - if (shdr == NULL) - { - printf ("cannot get header for SHSTRTAB section: %s\n", elf_errmsg (-1)); - exit (1); - } - - shstrtabse = ebl_strtabadd (shst, ".shstrtab", 0); - - shdr->sh_type = SHT_STRTAB; - shdr->sh_flags = 0; - shdr->sh_addr = 0; - shdr->sh_link = SHN_UNDEF; - shdr->sh_info = SHN_UNDEF; - shdr->sh_addralign = 1; - shdr->sh_entsize = 0; - - /* We have to store the section index in the ELF header. */ - ehdr->e_shstrndx = elf_ndxscn (scn); - - data = elf_newdata (scn); - if (data == NULL) - { - printf ("cannot create data SHSTRTAB section: %s\n", elf_errmsg (-1)); - exit (1); - } - - /* No more sections, finalize the section header string table. */ - ebl_strtabfinalize (shst, data); - - shdr->sh_name = ebl_strtaboffset (shstrtabse); - - /* Let the library compute the internal structure information. */ - if (elf_update (elf, ELF_C_NULL) < 0) - { - printf ("failure in elf_update(NULL): %s\n", elf_errmsg (-1)); - exit (1); - } - - ehdr = elf32_getehdr (elf); - - phdr[0].p_offset = ehdr->e_phoff; - phdr[0].p_offset = ehdr->e_phoff; - phdr[0].p_vaddr = ehdr->e_phoff; - phdr[0].p_paddr = ehdr->e_phoff; - phdr[0].p_flags = PF_R | PF_X; - phdr[0].p_filesz = ehdr->e_phnum * elf32_fsize (ELF_T_PHDR, 1, EV_CURRENT); - phdr[0].p_memsz = ehdr->e_phnum * elf32_fsize (ELF_T_PHDR, 1, EV_CURRENT); - phdr[0].p_align = sizeof (Elf32_Word); - - /* Write out the file. */ - if (elf_update (elf, ELF_C_WRITE) < 0) - { - printf ("failure in elf_update(WRITE): %s\n", elf_errmsg (-1)); - exit (1); - } - - /* We don't need the string table anymore. */ - ebl_strtabfree (shst); - - /* And the data allocated in the .shstrtab section. */ - free (data->d_buf); - - /* Print the ELF header values. */ - if (argc > 1) - { - for (i = 0; i < EI_NIDENT; ++i) - printf (" %02x", ehdr->e_ident[i]); - printf ("\ -\ntype = %hu\nmachine = %hu\nversion = %u\nentry = %u\nphoff = %u\n" - "shoff = %u\nflags = %u\nehsize = %hu\nphentsize = %hu\n" - "phnum = %hu\nshentsize = %hu\nshnum = %hu\nshstrndx = %hu\n", - ehdr->e_type, ehdr->e_machine, ehdr->e_version, ehdr->e_entry, - ehdr->e_phoff, ehdr->e_shoff, ehdr->e_flags, ehdr->e_ehsize, - ehdr->e_phentsize, ehdr->e_phnum, ehdr->e_shentsize, - ehdr->e_shnum, ehdr->e_shstrndx); - } - - if (elf_end (elf) != 0) - { - printf ("failure in elf_end: %s\n", elf_errmsg (-1)); - exit (1); - } - - return 0; -} diff --git a/tests/update4.c b/tests/update4.c deleted file mode 100644 index 17ef4702..00000000 --- a/tests/update4.c +++ /dev/null @@ -1,353 +0,0 @@ -/* Test program for elf_update function. - Copyright (C) 2000, 2001, 2002 Red Hat, Inc. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This program is Open Source software; you can redistribute it and/or - modify it under the terms of the Open Software License version 1.0 as - published by the Open Source Initiative. - - You should have received a copy of the Open Software License along - with this program; if not, you may obtain a copy of the Open Software - License version 1.0 from http://www.opensource.org/licenses/osl.php or - by writing the Open Source Initiative c/o Lawrence Rosen, Esq., - 3001 King Ranch Road, Ukiah, CA 95482. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <errno.h> -#include <fcntl.h> -#include <libelf.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> - -#include <libebl.h> - - -int -main (int argc, char *argv[]) -{ - const char fname[] = "xxx"; - int fd; - Elf *elf; - Elf32_Ehdr *ehdr; - Elf32_Phdr *phdr; - Elf_Scn *scn; - Elf32_Shdr *shdr; - Elf_Data *data; - struct Ebl_Strtab *shst; - struct Ebl_Strent *firstse; - struct Ebl_Strent *secondse; - struct Ebl_Strent *thirdse; - struct Ebl_Strent *fourthse; - struct Ebl_Strent *shstrtabse; - int i; - - fd = open (fname, O_RDWR | O_CREAT | O_TRUNC, 0666); - if (fd == -1) - { - printf ("cannot open `%s': %s\n", fname, strerror (errno)); - exit (1); - } - - elf_version (EV_CURRENT); - - elf_fill (0x42); - - elf = elf_begin (fd, ELF_C_WRITE, NULL); - if (elf == NULL) - { - printf ("cannot create ELF descriptor: %s\n", elf_errmsg (-1)); - exit (1); - } - - /* Create an ELF header. */ - ehdr = elf32_newehdr (elf); - if (ehdr == NULL) - { - printf ("cannot create ELF header: %s\n", elf_errmsg (-1)); - exit (1); - } - - /* Print the ELF header values. */ - if (argc > 1) - { - for (i = 0; i < EI_NIDENT; ++i) - printf (" %02x", ehdr->e_ident[i]); - printf ("\ -\ntype = %hu\nmachine = %hu\nversion = %u\nentry = %u\nphoff = %u\n" - "shoff = %u\nflags = %u\nehsize = %hu\nphentsize = %hu\n" - "phnum = %hu\nshentsize = %hu\nshnum = %hu\nshstrndx = %hu\n", - ehdr->e_type, ehdr->e_machine, ehdr->e_version, ehdr->e_entry, - ehdr->e_phoff, ehdr->e_shoff, ehdr->e_flags, ehdr->e_ehsize, - ehdr->e_phentsize, ehdr->e_phnum, ehdr->e_shentsize, - ehdr->e_shnum, ehdr->e_shstrndx); - } - - ehdr->e_ident[0] = 42; - ehdr->e_ident[4] = 1; - ehdr->e_ident[5] = 1; - ehdr->e_ident[6] = 2; - ehdr->e_type = ET_EXEC; - ehdr->e_version = 1; - ehdr->e_ehsize = 1; - elf_flagehdr (elf, ELF_C_SET, ELF_F_DIRTY); - - /* Create the program header. */ - phdr = elf32_newphdr (elf, 1); - if (phdr == NULL) - { - printf ("cannot create program header: %s\n", elf_errmsg (-1)); - exit (1); - } - - phdr[0].p_type = PT_PHDR; - elf_flagphdr (elf, ELF_C_SET, ELF_F_DIRTY); - - shst = ebl_strtabinit (true); - - scn = elf_newscn (elf); - if (scn == NULL) - { - printf ("cannot create first section: %s\n", elf_errmsg (-1)); - exit (1); - } - shdr = elf32_getshdr (scn); - if (shdr == NULL) - { - printf ("cannot get header for first section: %s\n", elf_errmsg (-1)); - exit (1); - } - - firstse = ebl_strtabadd (shst, ".first", 0); - - shdr->sh_type = SHT_PROGBITS; - shdr->sh_flags = SHF_ALLOC | SHF_EXECINSTR; - shdr->sh_addr = 0; - shdr->sh_link = 0; - shdr->sh_info = 0; - shdr->sh_entsize = 1; - - data = elf_newdata (scn); - if (data == NULL) - { - printf ("cannot create data first section: %s\n", elf_errmsg (-1)); - exit (1); - } - - data->d_buf = "hello"; - data->d_type = ELF_T_BYTE; - data->d_version = EV_CURRENT; - data->d_size = 5; - data->d_align = 16; - - - scn = elf_newscn (elf); - if (scn == NULL) - { - printf ("cannot create second section: %s\n", elf_errmsg (-1)); - exit (1); - } - shdr = elf32_getshdr (scn); - if (shdr == NULL) - { - printf ("cannot get header for second section: %s\n", elf_errmsg (-1)); - exit (1); - } - - secondse = ebl_strtabadd (shst, ".second", 0); - - shdr->sh_type = SHT_PROGBITS; - shdr->sh_flags = SHF_ALLOC | SHF_WRITE; - shdr->sh_addr = 0; - shdr->sh_link = 0; - shdr->sh_info = 0; - shdr->sh_entsize = 1; - - data = elf_newdata (scn); - if (data == NULL) - { - printf ("cannot create data second section: %s\n", elf_errmsg (-1)); - exit (1); - } - - data->d_buf = "world"; - data->d_type = ELF_T_BYTE; - data->d_version = EV_CURRENT; - data->d_size = 5; - data->d_align = 16; - - - scn = elf_newscn (elf); - if (scn == NULL) - { - printf ("cannot create third section: %s\n", elf_errmsg (-1)); - exit (1); - } - shdr = elf32_getshdr (scn); - if (shdr == NULL) - { - printf ("cannot get header for third section: %s\n", elf_errmsg (-1)); - exit (1); - } - - thirdse = ebl_strtabadd (shst, ".third", 0); - - shdr->sh_type = SHT_PROGBITS; - shdr->sh_flags = SHF_ALLOC | SHF_EXECINSTR; - shdr->sh_addr = 0; - shdr->sh_link = 0; - shdr->sh_info = 0; - shdr->sh_entsize = 1; - - data = elf_newdata (scn); - if (data == NULL) - { - printf ("cannot create data third section: %s\n", elf_errmsg (-1)); - exit (1); - } - - data->d_buf = "!!!!!"; - data->d_type = ELF_T_BYTE; - data->d_version = EV_CURRENT; - data->d_size = 5; - data->d_align = 16; - - - scn = elf_newscn (elf); - if (scn == NULL) - { - printf ("cannot create fourth section: %s\n", elf_errmsg (-1)); - exit (1); - } - shdr = elf32_getshdr (scn); - if (shdr == NULL) - { - printf ("cannot get header for fourth section: %s\n", elf_errmsg (-1)); - exit (1); - } - - fourthse = ebl_strtabadd (shst, ".fourth", 0); - - shdr->sh_type = SHT_NOBITS; - shdr->sh_flags = SHF_ALLOC | SHF_EXECINSTR; - shdr->sh_addr = 0; - shdr->sh_link = 0; - shdr->sh_info = 0; - shdr->sh_entsize = 1; - shdr->sh_size = 100; - - data = elf_newdata (scn); - if (data == NULL) - { - printf ("cannot create data fourth section: %s\n", elf_errmsg (-1)); - exit (1); - } - - data->d_buf = NULL; - data->d_type = ELF_T_BYTE; - data->d_version = EV_CURRENT; - data->d_size = 100; - data->d_align = 16; - - - scn = elf_newscn (elf); - if (scn == NULL) - { - printf ("cannot create SHSTRTAB section: %s\n", elf_errmsg (-1)); - exit (1); - } - shdr = elf32_getshdr (scn); - if (shdr == NULL) - { - printf ("cannot get header for SHSTRTAB section: %s\n", elf_errmsg (-1)); - exit (1); - } - - shstrtabse = ebl_strtabadd (shst, ".shstrtab", 0); - - shdr->sh_type = SHT_STRTAB; - shdr->sh_flags = 0; - shdr->sh_addr = 0; - shdr->sh_link = SHN_UNDEF; - shdr->sh_info = SHN_UNDEF; - shdr->sh_entsize = 1; - - /* We have to store the section index in the ELF header. */ - ehdr->e_shstrndx = elf_ndxscn (scn); - - data = elf_newdata (scn); - if (data == NULL) - { - printf ("cannot create data SHSTRTAB section: %s\n", elf_errmsg (-1)); - exit (1); - } - - /* No more sections, finalize the section header string table. */ - ebl_strtabfinalize (shst, data); - - elf32_getshdr (elf_getscn (elf, 1))->sh_name = ebl_strtaboffset (firstse); - elf32_getshdr (elf_getscn (elf, 2))->sh_name = ebl_strtaboffset (secondse); - elf32_getshdr (elf_getscn (elf, 3))->sh_name = ebl_strtaboffset (thirdse); - elf32_getshdr (elf_getscn (elf, 4))->sh_name = ebl_strtaboffset (fourthse); - shdr->sh_name = ebl_strtaboffset (shstrtabse); - - /* Let the library compute the internal structure information. */ - if (elf_update (elf, ELF_C_NULL) < 0) - { - printf ("failure in elf_update(NULL): %s\n", elf_errmsg (-1)); - exit (1); - } - - ehdr = elf32_getehdr (elf); - - phdr[0].p_offset = ehdr->e_phoff; - phdr[0].p_offset = ehdr->e_phoff; - phdr[0].p_vaddr = ehdr->e_phoff; - phdr[0].p_paddr = ehdr->e_phoff; - phdr[0].p_flags = PF_R | PF_X; - phdr[0].p_filesz = ehdr->e_phnum * elf32_fsize (ELF_T_PHDR, 1, EV_CURRENT); - phdr[0].p_memsz = ehdr->e_phnum * elf32_fsize (ELF_T_PHDR, 1, EV_CURRENT); - phdr[0].p_align = sizeof (Elf32_Word); - - /* Write out the file. */ - if (elf_update (elf, ELF_C_WRITE) < 0) - { - printf ("failure in elf_update(WRITE): %s\n", elf_errmsg (-1)); - exit (1); - } - - /* We don't need the string table anymore. */ - ebl_strtabfree (shst); - - /* And the data allocated in the .shstrtab section. */ - free (data->d_buf); - - /* Print the ELF header values. */ - if (argc > 1) - { - for (i = 0; i < EI_NIDENT; ++i) - printf (" %02x", ehdr->e_ident[i]); - printf ("\ -\ntype = %hu\nmachine = %hu\nversion = %u\nentry = %u\nphoff = %u\n" - "shoff = %u\nflags = %u\nehsize = %hu\nphentsize = %hu\n" - "phnum = %hu\nshentsize = %hu\nshnum = %hu\nshstrndx = %hu\n", - ehdr->e_type, ehdr->e_machine, ehdr->e_version, ehdr->e_entry, - ehdr->e_phoff, ehdr->e_shoff, ehdr->e_flags, ehdr->e_ehsize, - ehdr->e_phentsize, ehdr->e_phnum, ehdr->e_shentsize, - ehdr->e_shnum, ehdr->e_shstrndx); - } - - if (elf_end (elf) != 0) - { - printf ("failure in elf_end: %s\n", elf_errmsg (-1)); - exit (1); - } - - unlink (fname); - - return 0; -} |