aboutsummaryrefslogtreecommitdiff
path: root/gcc/mips-tdump.c
diff options
context:
space:
mode:
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>2012-03-12 15:35:56 +0000
committerRainer Orth <ro@gcc.gnu.org>2012-03-12 15:35:56 +0000
commit5c30094f4820c9798d60403a53fea2c8b2935de6 (patch)
treea3fe9558870fae03ba4adf923e24cdedd6074642 /gcc/mips-tdump.c
parent370d8a3d6bd6f72598eed3474d2817b1af77d961 (diff)
downloadgcc-5c30094f4820c9798d60403a53fea2c8b2935de6.zip
gcc-5c30094f4820c9798d60403a53fea2c8b2935de6.tar.gz
gcc-5c30094f4820c9798d60403a53fea2c8b2935de6.tar.bz2
Remove obsolete Tru64 UNIX V5.1B support
libstdc++-v3: * configure.host: Remove osf* handling. * config/os/osf: Remove. * doc/xml/manual/using.xml: Remove OSF reference. * testsuite/18_support/pthread_guard.cc: Remove alpha*-*-osf* handling. * testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc: Likewise. * testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise. * testsuite/21_strings/basic_string/pthread18185.cc: Likewise. * testsuite/21_strings/basic_string/pthread4.cc: Likewise. * testsuite/22_locale/locale/cons/12658_thread-1.cc: Likewise. * testsuite/22_locale/locale/cons/12658_thread-2.cc: Likewise. * testsuite/23_containers/list/pthread1.cc: Likewise. * testsuite/23_containers/list/pthread5.cc: Likewise. * testsuite/23_containers/map/pthread6.cc: Likewise. * testsuite/23_containers/vector/debug/multithreaded_swap.cc: Likewise. * testsuite/27_io/basic_ofstream/pthread2.cc: Likewise. * testsuite/27_io/basic_ostringstream/pthread3.cc: Likewise. * testsuite/30_threads/async/42819.cc: Likewise. * libstdc++-v3/testsuite/30_threads/async/49668.cc: Likewise. * libstdc++-v3/testsuite/30_threads/async/any.cc: Likewise. * libstdc++-v3/testsuite/30_threads/async/async.cc: Likewise. * libstdc++-v3/testsuite/30_threads/async/launch.cc: Likewise. * libstdc++-v3/testsuite/30_threads/async/sync.cc: Likewise. * libstdc++-v3/testsuite/30_threads/call_once/39909.cc: Likewise. * libstdc++-v3/testsuite/30_threads/call_once/49668.cc: Likewise. * libstdc++-v3/testsuite/30_threads/call_once/call_once1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/condition_variable/cons/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/condition_variable/members/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/condition_variable/members/2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/condition_variable/native_handle/typesizes.cc: Likewise. * libstdc++-v3/testsuite/30_threads/condition_variable_any/50862.cc: Likewise. * libstdc++-v3/testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/condition_variable_any/members/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/condition_variable_any/members/2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/future/cons/move.cc: Likewise. * libstdc++-v3/testsuite/30_threads/future/members/45133.cc: Likewise. * libstdc++-v3/testsuite/30_threads/future/members/get.cc: Likewise. * libstdc++-v3/testsuite/30_threads/future/members/get2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/future/members/share.cc: Likewise. * libstdc++-v3/testsuite/30_threads/future/members/valid.cc: Likewise. * libstdc++-v3/testsuite/30_threads/future/members/wait.cc: Likewise. * libstdc++-v3/testsuite/30_threads/future/members/wait_for.cc: Likewise. * libstdc++-v3/testsuite/30_threads/future/members/wait_until.cc: Likewise. * libstdc++-v3/testsuite/30_threads/lock/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/lock/2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/lock/3.cc: Likewise. * libstdc++-v3/testsuite/30_threads/lock/4.cc: Likewise. * libstdc++-v3/testsuite/30_threads/lock_guard/cons/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/mutex/cons/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise. * libstdc++-v3/testsuite/30_threads/mutex/lock/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/mutex/native_handle/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/mutex/native_handle/typesizes.cc: Likewise. * libstdc++-v3/testsuite/30_threads/mutex/try_lock/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/mutex/try_lock/2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/mutex/unlock/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/packaged_task/49668.cc: Likewise. * libstdc++-v3/testsuite/30_threads/packaged_task/cons/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/packaged_task/cons/2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/packaged_task/cons/3.cc: Likewise. * libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc.cc: Likewise. * libstdc++-v3/testsuite/30_threads/packaged_task/cons/move.cc: Likewise. * libstdc++-v3/testsuite/30_threads/packaged_task/cons/move_assign.cc: Likewise. * libstdc++-v3/testsuite/30_threads/packaged_task/members/get_future.cc: Likewise. * libstdc++-v3/testsuite/30_threads/packaged_task/members/get_future2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke.cc: Likewise. * libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke3.cc: Likewise. * libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke4.cc: Likewise. * libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke5.cc: Likewise. * libstdc++-v3/testsuite/30_threads/packaged_task/members/reset.cc: Likewise. * libstdc++-v3/testsuite/30_threads/packaged_task/members/reset2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/packaged_task/members/swap.cc: Likewise. * libstdc++-v3/testsuite/30_threads/packaged_task/members/valid.cc: Likewise. * libstdc++-v3/testsuite/30_threads/promise/cons/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/promise/cons/alloc.cc: Likewise. * libstdc++-v3/testsuite/30_threads/promise/cons/move.cc: Likewise. * libstdc++-v3/testsuite/30_threads/promise/cons/move_assign.cc: Likewise. * libstdc++-v3/testsuite/30_threads/promise/members/get_future.cc: Likewise. * libstdc++-v3/testsuite/30_threads/promise/members/get_future2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/promise/members/set_exception.cc: Likewise. * libstdc++-v3/testsuite/30_threads/promise/members/set_exception2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/promise/members/set_value.cc: Likewise. * libstdc++-v3/testsuite/30_threads/promise/members/set_value2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/promise/members/set_value3.cc: Likewise. * libstdc++-v3/testsuite/30_threads/promise/members/swap.cc: Likewise. * libstdc++-v3/testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc: Likewise. * libstdc++-v3/testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc: Likewise. * libstdc++-v3/testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc: Likewise. * libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/native_handle/typesizes.cc: Likewise. * libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc: Likewise. * libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/shared_future/cons/move.cc: Likewise. * libstdc++-v3/testsuite/30_threads/shared_future/members/45133.cc: Likewise. * libstdc++-v3/testsuite/30_threads/shared_future/members/get.cc: Likewise. * libstdc++-v3/testsuite/30_threads/shared_future/members/get2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/shared_future/members/valid.cc: Likewise. * libstdc++-v3/testsuite/30_threads/shared_future/members/wait.cc: Likewise. * libstdc++-v3/testsuite/30_threads/shared_future/members/wait_for.cc: Likewise. * libstdc++-v3/testsuite/30_threads/shared_future/members/wait_until.cc: Likewise. * libstdc++-v3/testsuite/30_threads/this_thread/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/this_thread/2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/this_thread/3.cc: Likewise. * libstdc++-v3/testsuite/30_threads/this_thread/4.cc: Likewise. * libstdc++-v3/testsuite/30_threads/thread/cons/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/thread/cons/2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/thread/cons/3.cc: Likewise. * libstdc++-v3/testsuite/30_threads/thread/cons/4.cc: Likewise. * libstdc++-v3/testsuite/30_threads/thread/cons/49668.cc: Likewise. * libstdc++-v3/testsuite/30_threads/thread/cons/5.cc: Likewise. * libstdc++-v3/testsuite/30_threads/thread/cons/6.cc: Likewise. * libstdc++-v3/testsuite/30_threads/thread/cons/7.cc: Likewise. * libstdc++-v3/testsuite/30_threads/thread/cons/8.cc: Likewise. * libstdc++-v3/testsuite/30_threads/thread/cons/9.cc: Likewise. * libstdc++-v3/testsuite/30_threads/thread/cons/moveable.cc: Likewise. * libstdc++-v3/testsuite/30_threads/thread/members/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/thread/members/2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/thread/members/3.cc: Likewise. * libstdc++-v3/testsuite/30_threads/thread/members/4.cc: Likewise. * libstdc++-v3/testsuite/30_threads/thread/members/5.cc: Likewise. * libstdc++-v3/testsuite/30_threads/thread/members/hardware_concurrency.cc: Likewise. * libstdc++-v3/testsuite/30_threads/thread/swap/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/timed_mutex/cons/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise. * libstdc++-v3/testsuite/30_threads/timed_mutex/lock/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/timed_mutex/native_handle/typesizes.cc: Likewise. * libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise. * libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/try_lock/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/try_lock/2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/try_lock/3.cc: Likewise. * libstdc++-v3/testsuite/30_threads/try_lock/4.cc: Likewise. * libstdc++-v3/testsuite/30_threads/unique_lock/cons/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/unique_lock/cons/2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/unique_lock/cons/3.cc: Likewise. * libstdc++-v3/testsuite/30_threads/unique_lock/cons/4.cc: Likewise. * libstdc++-v3/testsuite/30_threads/unique_lock/cons/5.cc: Likewise. * libstdc++-v3/testsuite/30_threads/unique_lock/cons/6.cc: Likewise. * libstdc++-v3/testsuite/30_threads/unique_lock/locking/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/unique_lock/locking/2.cc: Likewise. * libstdc++-v3/testsuite/30_threads/unique_lock/locking/3.cc: Likewise. * libstdc++-v3/testsuite/30_threads/unique_lock/locking/4.cc: Likewise. * libstdc++-v3/testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise. * libstdc++-v3/testsuite/30_threads/unique_lock/modifiers/2.cc: Likewise. * libstdc++-v3/testsuite/ext/rope/pthread7-rope.cc: Likewise. * libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/thread/default_weaktoshared.cc: Likewise. * libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/thread/mutex_weaktoshared.cc: Likewise. libobjc: * configure.ac (enable_objc_gc): Remove alpha*-dec-osf* handling. * configure: Regenerate. * thr.c (_XOPEN_SOURCE): Define unconditionally. libjava: * configure.ac (alpha*-dec-osf*): Remove. * configure: Regenerate. * configure.host (alpha*-dec-osf*): Remove. * gnu/java/net/natPlainDatagramSocketImplPosix.cc (setOption): Use IPV6_MULTICAST_IF unconditionally. * gnu/java/net/natPlainDatagramSocketImplWin32.cc (setOption): Likewise. * gnu/java/net/natPlainSocketImplPosix.cc (gnu::java::net::PlainSocketImpl::accept): Use ::accept instead of _Jv_accept. * include/posix-signal.h [__alpha__ && __osf__]: Remove. * include/posix.h (_POSIX_PII_SOCKET): Don't define. (_Jv_accept): Remove. * java/io/File.java (File._access): Rename to access. Change callers. (File._stat): Likewise. * java/io/File.h: Regenerate. * classpath/lib/java/io/File.class: Regenerate. * java/io/natFilePosix.cc (java::io::File::_access): Rename to access. (java::io::File::_stat): Rename to stat. * java/io/natFileWin32.cc: Likewise. * testsuite/libjava.jni/jni.exp (gcj_jni_get_cxxflags_invocation): Remove alpha*-dec-osf* handling. * testsuite/libjava.jvmti/jvmti-interp.exp (gcj_jni_compile_c_to_so): Likewise. * testsuite/libjava.jvmti/jvmti.exp (gcj_jvmti_compile_cxx_to_o): Likewise. libitm: * configure.tgt (*-*-osf*): Remove. * configure: Regenerate. libgomp: * configure.tgt (alpha*-dec-osf*): Remove. * config/osf/sem.h: Remove. * config/posix/lock.c (_XOPEN_SOURCE): Define unconditionally. libgfortran: * configure.ac: Remove Tru64 reference. * acinclude.m4 (LIBGFOR_GTHREAD_WEAK): Remove alpha*-dec-osf* handling. * configure: Regenerate. * intrinsics/c99_functions.c [__osf__]: Remove. libgcc: * config.host: Remove alpha*-dec-osf5.1* handling. * config/alpha/gthr-posix.c: Remove. * config/alpha/libgcc-osf5.ver: Remove. * config/alpha/osf5-unwind.h: Remove. * config/alpha/t-osf-pthread: Remove. * config/alpha/t-slibgcc-osf: Remove. * config/t-crtfm (crtfastmath.o): Remove -frandom-seed. * gthr-posix.h [!_REENTRANT && __osf__] (_REENTRANT): Don't define. [__osf__ && _PTHREAD_USE_MANGLED_NAMES_]: Remove. * mkmap-flat.awk: Remove osf_export handling. gnattools: * configure.ac: Remove alpha*-dec-osf* handling. * configure: Regenerate. gcc/testsuite: * g++.dg/abi/rtti3.C: Remove alpha*-dec-osf* handling. * g++.dg/abi/thunk4.C: Likewise. * g++.dg/cdce3.C: Don't skip on*-dec-osf5*. Adapt line numbers. * g++.dg/compat/struct-layout-1_generate.c: Remove alpha*-dec-osf* handling. * g++.dg/cpp0x/constexpr-rom.C: Likewise. * g++.dg/eh/spbp.C: Likewise. * g++.dg/ext/label13.C: Likewise. * g++.dg/guality/guality.exp: Likewise. * g++.dg/other/anon5.C: Likewise. * g++.dg/other/pragma-ep-1.C: Remove. * g++.dg/warn/miss-format-1.C: Remove alpha*-dec-osf* handling. * g++.dg/warn/pr31246.C: Likewise. * g++.dg/warn/weak1.C: Likewise. * g++.old-deja/g++.eh/badalloc1.C: Likewise. * g++.old-deja/g++.ext/attrib5.C: Likewise. * gcc.c-torture/compile/limits-declparen.c: Likewise. * gcc.c-torture/compile/limits-pointer.c: Likewise. * gcc.c-torture/execute/20001229-1.c: Remove __osf__ handling. * gcc.dg/attr-weakref-1.c: Remove alpha*-dec-osf* handling. * gcc.dg/c99-stdint-6.c: Remove alpha*-dec-osf5* handling. * gcc.dg/c99-tgmath-1.c: Likewise. * gcc.dg/c99-tgmath-2.c: Likewise. * gcc.dg/c99-tgmath-3.c: Likewise. * gcc.dg/c99-tgmath-4.c: Likewise. * gcc.dg/compat/struct-layout-1_generate.c: Remove alpha*-dec-osf* handling. * gcc.dg/debug/pr49032.c: Likewise. * gcc.dg/guality/guality.exp: Likewise. * gcc.dg/intmax_t-1.c: Likewise. * gcc.dg/pr48616.c: Likewise. * gcc.dg/pragma-ep-1.c: Remove. * gcc.dg/pragma-ep-2.c: Remove. * gcc.dg/pragma-ep-3.c: Remove. * gcc.dg/torture/pr47917.c: Remove alpha*-dec-osf5* handling. * gcc.dg/tree-ssa/pr42585.c: Remove alpha*-dec-osf* handling. * gcc.misc-tests/gcov-14.c: Likewise. * gfortran.dg/guality/guality.exp: Likewise. * lib/target-supports.exp (check_weak_available): Likewise. (add_options_for_tls): Likewise. (check_ascii_locale_available): Likewise. * obj-c++.dg/dwarf-2.mm: Likewise. * objc.dg/dwarf-1.m: Likewise. * objc.dg/dwarf-2.m: Likewise. gcc/c-family: * c-cppbuiltin.c (c_cpp_builtins): Remove #pragma extern_prefix handling. * c-pragma.c (handle_pragma_extern_prefix): Remove. (init_pragma): Don't register extern_prefix. gcc/po: * EXCLUDES (mips-tdump.c, mips-tfile.c): Remove. gcc: * config.gcc (alpha*-dec-osf5.1*): Remove. * config.host (alpha*-dec-osf*): Remove. * configure.ac (*-*-osf*): Remove. (alpha*-dec-osf*): Remove. * configure: Regenerate. * config/alpha/host-osf.c, config/alpha/osf5.h, config/alpha/osf5.opt, config/alpha/va_list.h, config/alpha/x-osf: Remove. * config/alpha/alpha.h (TARGET_LD_BUGGY_LDGP): Remove. * config/alpha/alpha.c (struct machine_function): Update comment. (alpha_start_function): Remove Tru64 UNIX as handling for max_frame_size. * config/alpha/alpha.md ("exception_receiver"): Remove TARGET_LD_BUGGY_LDGP. ("*exception_receiver_2"): Likewise. * except.c (finish_eh_generation): Remove Tru64 reference. * ginclude/stdarg.h [_HIDDEN_VA_LIST]: Don't undef _VA_LIST. * system.h (TARGET_HANDLE_PRAGMA_EXTERN_PREFIX): Poison. * target.def (handle_pragma_extern_prefix): Remove. * Makefile.in (mips-tfile.o-warn): Remove. (ALL_HOST_BACKEND_OBJS): Remove mips-tfile.o, mips-tdump.o. (mips-tfile, mips-tfile.o, mips-tdump, mips-tdump.o): Remove. * mips-tdump.c, mips-tfile.c: Remove. * doc/extend.texi (Symbol-Renaming Pragmas): Remove #pragma extern_prefix. * doc/install.texi (Binaries): Remove Tru64 UNIX reference. (Specific, alpha*-dec-osf5.1): Note removal. * doc/tm.texi.in (Misc, TARGET_HANDLE_PRAGMA_EXTERN_PREFIX): Remove. * doc/tm.texi: Regenerate. * doc/trouble.texi (Cross-Compiler Problems): Remove. gcc/ada: * gcc-interface/Makefile.in (alpha*-dec-osf*): Remove. * a-intnam-tru64.ads, mlib-tgt-specific-tru64.adb, s-mastop-tru64.adb, s-osinte-tru64.adb, s-osinte-tru64.ads, s-taprop-tru64.adb, s-tasinf-tru64.ads, s-taspri-tru64.ads, system-tru64.ads: Remove. * adaint.c (__gnat_number_of_cpus) [__alpha__ && __osf__]: Remove. [IS_CROSS] [!(__alpha__ && __osf__)]: Remove. * env.c [__alpha__ && __osf__]: Remove. * gsocket.h (_OSF_SOURCE): Remove. (HAVE_THREAD_SAFE_GETxxxBYyyy) [__osf__]: Remove. * init.c [__alpha__ && __osf__]: Remove. * link.c [__osf__]: Remove. * s-oscons-tmplt.c [__alpha__ && __osf__]: Remove. [__osf__ && !_SS_MAXSIZE]: Remove. * sysdep.c [__osf__]: Remove. * terminals.c [__alpha__ && __osf__]: Remove. [OSF1]: Remove. * g-traceb.ads: Remove Tru64 reference. * g-trasym.ads: Likewise. * gnat_ugn.texi (Linking a Mixed C++ & Ada Program): Likewise. (Summary of Run-Time Configurations): Likewise. * memtrack.adb: Likewise. fixincludes: * inclhack.def (alpha___extern_prefix): Remove. (alpha___extern_prefix_standards): Remove. (alpha___extern_prefix_sys_stat): Remove. (alpha_bad_lval): Remove. (alpha_pthread): Remove. (alpha_pthread_gcc): Remove. (alpha_pthread_init): Remove. * fixincl.x: Regenerate. * tests/base/pthread.h [ALPHA_PTHREAD_CHECK]: Remove. [ALPHA_PTHREAD_GCC_CHECK]: Remove. [ALPHA_PTHREAD_INIT_CHECK]: Remove. * tests/base/standards.h: Remove. * tests/base/sys/stat.h [ALPHA___EXTERN_PREFIX_SYS_STAT_CHECK]: Remove. * tests/base/testing.h [ALPHA___EXTERN_PREFIX_CHECK]: Remove. [ALPHA_BAD_LVAL_CHECK]: Remove. contrib: * config-list.mk (LIST): Remove alpha-dec-osf5.1. config: * weakref.m4 (GCC_CHECK_ELF_STYLE_WEAKREF): Remove alpha*-dec-osf*. toplevel: * MAINTAINERS (OS Port Maintainers): Remove osf. * configure.ac (enable_libgomp): Remove *-*-osf*. (with_stabs): Remove alpha*-*-osf*. * configure: Regenerate. From-SVN: r185240
Diffstat (limited to 'gcc/mips-tdump.c')
-rw-r--r--gcc/mips-tdump.c1525
1 files changed, 0 insertions, 1525 deletions
diff --git a/gcc/mips-tdump.c b/gcc/mips-tdump.c
deleted file mode 100644
index 49ebb89..0000000
--- a/gcc/mips-tdump.c
+++ /dev/null
@@ -1,1525 +0,0 @@
-/* Read and manage MIPS symbol tables from object modules.
- Copyright (C) 1991, 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2003, 2004,
- 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
- Contributed by hartzell@boulder.colorado.edu,
- Rewritten by meissner@osf.org.
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option) any later
-version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-#include "config.h"
-#include "system.h"
-#include "version.h"
-#ifdef index
-#undef index
-#endif
-#include <a.out.h>
-
-/* Include getopt.h for the sake of getopt_long. */
-#include "getopt.h"
-
-/* Macros for mips-tfile.c to encapsulate stabs in ECOFF, and for
- mips-tdump.c to print them out.
-
- These must match the corresponding definitions in gdb/mipsread.c.
- Unfortunately, gcc and gdb do not currently share any directories. */
-
-#define CODE_MASK 0x8F300
-#define MIPS_IS_STAB(sym) (((sym)->index & 0xFFF00) == CODE_MASK)
-#define MIPS_MARK_STAB(code) ((code)+CODE_MASK)
-#define MIPS_UNMARK_STAB(code) ((code)-CODE_MASK)
-
-#define uchar unsigned char
-#define ushort unsigned short
-#define uint unsigned int
-#define ulong unsigned long
-
-
-/* Redefinition of storage classes as an enumeration for better
- debugging. */
-
-#ifndef stStaParam
-#define stStaParam 16 /* Fortran static parameters */
-#endif
-
-#ifndef btVoid
-#define btVoid 26 /* void basic type */
-#endif
-
-typedef enum sc {
- sc_Nil = scNil, /* no storage class */
- sc_Text = scText, /* text symbol */
- sc_Data = scData, /* initialized data symbol */
- sc_Bss = scBss, /* un-initialized data symbol */
- sc_Register = scRegister, /* value of symbol is register number */
- sc_Abs = scAbs, /* value of symbol is absolute */
- sc_Undefined = scUndefined, /* who knows? */
- sc_CdbLocal = scCdbLocal, /* variable's value is IN se->va.?? */
- sc_Bits = scBits, /* this is a bit field */
- sc_CdbSystem = scCdbSystem, /* var's value is IN CDB's address space */
- sc_RegImage = scRegImage, /* register value saved on stack */
- sc_Info = scInfo, /* symbol contains debugger information */
- sc_UserStruct = scUserStruct, /* addr in struct user for current process */
- sc_SData = scSData, /* load time only small data */
- sc_SBss = scSBss, /* load time only small common */
- sc_RData = scRData, /* load time only read only data */
- sc_Var = scVar, /* Var parameter (fortran,pascal) */
- sc_Common = scCommon, /* common variable */
- sc_SCommon = scSCommon, /* small common */
- sc_VarRegister = scVarRegister, /* Var parameter in a register */
- sc_Variant = scVariant, /* Variant record */
- sc_SUndefined = scSUndefined, /* small undefined(external) data */
- sc_Init = scInit, /* .init section symbol */
- sc_Max = scMax /* Max storage class+1 */
-} sc_t;
-
-/* Redefinition of symbol type. */
-
-typedef enum st {
- st_Nil = stNil, /* Nuthin' special */
- st_Global = stGlobal, /* external symbol */
- st_Static = stStatic, /* static */
- st_Param = stParam, /* procedure argument */
- st_Local = stLocal, /* local variable */
- st_Label = stLabel, /* label */
- st_Proc = stProc, /* " " Procedure */
- st_Block = stBlock, /* beginning of block */
- st_End = stEnd, /* end (of anything) */
- st_Member = stMember, /* member (of anything - struct/union/enum */
- st_Typedef = stTypedef, /* type definition */
- st_File = stFile, /* file name */
- st_RegReloc = stRegReloc, /* register relocation */
- st_Forward = stForward, /* forwarding address */
- st_StaticProc = stStaticProc, /* load time only static procs */
- st_StaParam = stStaParam, /* Fortran static parameters */
- st_Constant = stConstant, /* const */
-#ifdef stStruct
- st_Struct = stStruct, /* struct */
- st_Union = stUnion, /* union */
- st_Enum = stEnum, /* enum */
-#endif
- st_Str = stStr, /* string */
- st_Number = stNumber, /* pure number (i.e. 4 NOR 2+2) */
- st_Expr = stExpr, /* 2+2 vs. 4 */
- st_Type = stType, /* post-coercion SER */
- st_Max = stMax /* max type+1 */
-} st_t;
-
-/* Redefinition of type qualifiers. */
-
-typedef enum tq {
- tq_Nil = tqNil, /* bt is what you see */
- tq_Ptr = tqPtr, /* pointer */
- tq_Proc = tqProc, /* procedure */
- tq_Array = tqArray, /* duh */
- tq_Far = tqFar, /* longer addressing - 8086/8 land */
- tq_Vol = tqVol, /* volatile */
- tq_Max = tqMax /* Max type qualifier+1 */
-} tq_t;
-
-/* Redefinition of basic types. */
-
-typedef enum bt {
- bt_Nil = btNil, /* undefined */
- bt_Adr = btAdr, /* address - integer same size as pointer */
- bt_Char = btChar, /* character */
- bt_UChar = btUChar, /* unsigned character */
- bt_Short = btShort, /* short */
- bt_UShort = btUShort, /* unsigned short */
- bt_Int = btInt, /* int */
- bt_UInt = btUInt, /* unsigned int */
- bt_Long = btLong, /* long */
- bt_ULong = btULong, /* unsigned long */
- bt_Float = btFloat, /* float (real) */
- bt_Double = btDouble, /* Double (real) */
- bt_Struct = btStruct, /* Structure (Record) */
- bt_Union = btUnion, /* Union (variant) */
- bt_Enum = btEnum, /* Enumerated */
- bt_Typedef = btTypedef, /* defined via a typedef, isymRef points */
- bt_Range = btRange, /* subrange of int */
- bt_Set = btSet, /* pascal sets */
- bt_Complex = btComplex, /* fortran complex */
- bt_DComplex = btDComplex, /* fortran double complex */
- bt_Indirect = btIndirect, /* forward or unnamed typedef */
- bt_FixedDec = btFixedDec, /* Fixed Decimal */
- bt_FloatDec = btFloatDec, /* Float Decimal */
- bt_String = btString, /* Varying Length Character String */
- bt_Bit = btBit, /* Aligned Bit String */
- bt_Picture = btPicture, /* Picture */
- bt_Void = btVoid, /* void */
- bt_Max = btMax /* Max basic type+1 */
-} bt_t;
-
-/* Redefinition of the language codes. */
-
-typedef enum lang {
- lang_C = langC,
- lang_Pascal = langPascal,
- lang_Fortran = langFortran,
- lang_Assembler = langAssembler,
- lang_Machine = langMachine,
- lang_Nil = langNil,
- lang_Ada = langAda,
- lang_Pl1 = langPl1,
- lang_Cobol = langCobol
-} lang_t;
-
-/* Redefinition of the debug level codes. */
-
-typedef enum glevel {
- glevel_0 = GLEVEL_0,
- glevel_1 = GLEVEL_1,
- glevel_2 = GLEVEL_2,
- glevel_3 = GLEVEL_3
-} glevel_t;
-
-
-/* Keep track of the active scopes. */
-typedef struct scope {
- struct scope *prev; /* previous scope */
- ulong open_sym; /* symbol opening scope */
- sc_t sc; /* storage class */
- st_t st; /* symbol type */
-} scope_t;
-
-struct filehdr global_hdr; /* a.out header */
-
-int errors = 0; /* # of errors */
-int want_aux = 0; /* print aux table */
-int want_line = 0; /* print line numbers */
-int want_rfd = 0; /* print relative file desc's */
-int want_scope = 0; /* print scopes for every symbol */
-int tfile = 0; /* no global header file */
-int version = 0; /* print version # */
-int verbose = 0;
-int tfile_fd; /* file descriptor of .T file */
-off_t tfile_offset; /* current offset in .T file */
-scope_t *cur_scope = 0; /* list of active scopes */
-scope_t *free_scope = 0; /* list of freed scopes */
-HDRR sym_hdr; /* symbolic header */
-char *l_strings; /* local strings */
-char *e_strings; /* external strings */
-SYMR *l_symbols; /* local symbols */
-EXTR *e_symbols; /* external symbols */
-LINER *lines; /* line numbers */
-DNR *dense_nums; /* dense numbers */
-OPTR *opt_symbols; /* optimization symbols */
-AUXU *aux_symbols; /* Auxiliary symbols */
-char *aux_used; /* map of which aux syms are used */
-FDR *file_desc; /* file tables */
-ulong *rfile_desc; /* relative file tables */
-PDR *proc_desc; /* procedure tables */
-
-/* Forward reference for functions. */
-static void *read_seek (void *, size_t, off_t, const char *);
-static void read_tfile (void);
-static void print_global_hdr (struct filehdr *);
-static void print_sym_hdr (HDRR *);
-static void print_file_desc (FDR *, int);
-static void print_symbol (SYMR *, int, const char *, AUXU *, int, FDR *);
-static void print_aux (AUXU, int, int);
-static void emit_aggregate (char *, AUXU, AUXU, const char *, FDR *);
-static const char *st_to_string (st_t);
-static const char *sc_to_string (sc_t);
-static const char *glevel_to_string (glevel_t);
-static const char *lang_to_string (lang_t);
-static const char *type_to_string (AUXU *, int, FDR *);
-
-extern char *optarg;
-extern int optind;
-extern int opterr;
-
-/* Create a table of debugging stab-codes and corresponding names. */
-
-#define __define_stab(NAME, CODE, STRING) {(int)CODE, STRING},
-const struct {const short code; const char string[10];} stab_names[] = {
-#include "stab.def"
-#undef __define_stab
-};
-
-/* Command line options for getopt_long. */
-
-static const struct option options[] =
-{
- { "version", 0, 0, 'V' },
- { "verbose", 0, 0, 'v' },
- { 0, 0, 0, 0 }
-};
-
-/* Read some bytes at a specified location, and return a pointer.
- Read_seek takes a pointer PTR to a buffer or NULL and reads SIZE
- bytes from offset OFFSET. In case of errors CONTEXT is used as
- error message. */
-
-static void *
-read_seek (void *ptr, size_t size, off_t offset, const char *context)
-{
- long read_size = 0;
-
- if (size == 0) /* nothing to read */
- return ptr;
-
- if (!ptr)
- ptr = xmalloc (size);
-
- if ((tfile_offset != offset && lseek (tfile_fd, offset, 0) == -1)
- || (read_size = read (tfile_fd, ptr, size)) < 0)
- {
- perror (context);
- exit (1);
- }
-
- if (read_size != (long) size)
- {
- fprintf (stderr, "%s: read %ld bytes, expected %ld bytes\n",
- context, read_size, (long) size);
- exit (1);
- }
-
- tfile_offset = offset + size;
- return ptr;
-}
-
-
-/* Convert language code to string format. */
-
-static const char *
-lang_to_string (lang_t lang)
-{
- switch (lang)
- {
- case langC: return "C";
- case langPascal: return "Pascal";
- case langFortran: return "Fortran";
- case langAssembler: return "Assembler";
- case langMachine: return "Machine";
- case langNil: return "Nil";
- case langAda: return "Ada";
- case langPl1: return "Pl1";
- case langCobol: return "Cobol";
- }
-
- return "Unknown language";
-}
-
-
-/* Convert storage class to string. */
-
-static const char *
-sc_to_string (sc_t storage_class)
-{
- switch(storage_class)
- {
- case sc_Nil: return "Nil";
- case sc_Text: return "Text";
- case sc_Data: return "Data";
- case sc_Bss: return "Bss";
- case sc_Register: return "Register";
- case sc_Abs: return "Abs";
- case sc_Undefined: return "Undefined";
- case sc_CdbLocal: return "CdbLocal";
- case sc_Bits: return "Bits";
- case sc_CdbSystem: return "CdbSystem";
- case sc_RegImage: return "RegImage";
- case sc_Info: return "Info";
- case sc_UserStruct: return "UserStruct";
- case sc_SData: return "SData";
- case sc_SBss: return "SBss";
- case sc_RData: return "RData";
- case sc_Var: return "Var";
- case sc_Common: return "Common";
- case sc_SCommon: return "SCommon";
- case sc_VarRegister: return "VarRegister";
- case sc_Variant: return "Variant";
- case sc_SUndefined: return "SUndefined";
- case sc_Init: return "Init";
- case sc_Max: return "Max";
- }
-
- return "???";
-}
-
-
-/* Convert symbol type to string. */
-
-static const char *
-st_to_string (st_t symbol_type)
-{
- switch(symbol_type)
- {
- case st_Nil: return "Nil";
- case st_Global: return "Global";
- case st_Static: return "Static";
- case st_Param: return "Param";
- case st_Local: return "Local";
- case st_Label: return "Label";
- case st_Proc: return "Proc";
- case st_Block: return "Block";
- case st_End: return "End";
- case st_Member: return "Member";
- case st_Typedef: return "Typedef";
- case st_File: return "File";
- case st_RegReloc: return "RegReloc";
- case st_Forward: return "Forward";
- case st_StaticProc: return "StaticProc";
- case st_Constant: return "Constant";
- case st_StaParam: return "StaticParam";
-#ifdef stStruct
- case st_Struct: return "Struct";
- case st_Union: return "Union";
- case st_Enum: return "Enum";
-#endif
- case st_Str: return "String";
- case st_Number: return "Number";
- case st_Expr: return "Expr";
- case st_Type: return "Type";
- case st_Max: return "Max";
- }
-
- return "???";
-}
-
-
-/* Convert debug level to string. */
-
-static const char *
-glevel_to_string (glevel_t g_level)
-{
- switch(g_level)
- {
- case GLEVEL_0: return "G0";
- case GLEVEL_1: return "G1";
- case GLEVEL_2: return "G2";
- case GLEVEL_3: return "G3";
- }
-
- return "??";
-}
-
-
-/* Convert the type information to string format. */
-
-static const char *
-type_to_string (AUXU *aux_ptr, int index, FDR *fdp)
-{
- AUXU u;
- struct qual {
- tq_t type;
- int low_bound;
- int high_bound;
- int stride;
- } qualifiers[7];
-
- bt_t basic_type;
- int i;
- static char buffer1[1024];
- static char buffer2[1024];
- char *p1 = buffer1;
- char *p2 = buffer2;
- char *used_ptr = aux_used + (aux_ptr - aux_symbols);
-
- for (i = 0; i < 7; i++)
- {
- qualifiers[i].low_bound = 0;
- qualifiers[i].high_bound = 0;
- qualifiers[i].stride = 0;
- }
-
- used_ptr[index] = 1;
- u = aux_ptr[index++];
- if (u.isym == -1)
- return "-1 (no type)";
-
- basic_type = (bt_t) u.ti.bt;
- qualifiers[0].type = (tq_t) u.ti.tq0;
- qualifiers[1].type = (tq_t) u.ti.tq1;
- qualifiers[2].type = (tq_t) u.ti.tq2;
- qualifiers[3].type = (tq_t) u.ti.tq3;
- qualifiers[4].type = (tq_t) u.ti.tq4;
- qualifiers[5].type = (tq_t) u.ti.tq5;
- qualifiers[6].type = tq_Nil;
-
- /*
- * Go get the basic type.
- */
- switch (basic_type)
- {
- case bt_Nil: /* undefined */
- strcpy (p1, "nil");
- break;
-
- case bt_Adr: /* address - integer same size as pointer */
- strcpy (p1, "address");
- break;
-
- case bt_Char: /* character */
- strcpy (p1, "char");
- break;
-
- case bt_UChar: /* unsigned character */
- strcpy (p1, "unsigned char");
- break;
-
- case bt_Short: /* short */
- strcpy (p1, "short");
- break;
-
- case bt_UShort: /* unsigned short */
- strcpy (p1, "unsigned short");
- break;
-
- case bt_Int: /* int */
- strcpy (p1, "int");
- break;
-
- case bt_UInt: /* unsigned int */
- strcpy (p1, "unsigned int");
- break;
-
- case bt_Long: /* long */
- strcpy (p1, "long");
- break;
-
- case bt_ULong: /* unsigned long */
- strcpy (p1, "unsigned long");
- break;
-
- case bt_Float: /* float (real) */
- strcpy (p1, "float");
- break;
-
- case bt_Double: /* Double (real) */
- strcpy (p1, "double");
- break;
-
- /* Structures add 1-2 aux words:
- 1st word is [ST_RFDESCAPE, offset] pointer to struct def;
- 2nd word is file index if 1st word rfd is ST_RFDESCAPE. */
-
- case bt_Struct: /* Structure (Record) */
- emit_aggregate (p1, aux_ptr[index], aux_ptr[index+1], "struct", fdp);
- used_ptr[index] = 1;
- if (aux_ptr[index].rndx.rfd == ST_RFDESCAPE)
- used_ptr[++index] = 1;
-
- index++; /* skip aux words */
- break;
-
- /* Unions add 1-2 aux words:
- 1st word is [ST_RFDESCAPE, offset] pointer to union def;
- 2nd word is file index if 1st word rfd is ST_RFDESCAPE. */
-
- case bt_Union: /* Union */
- emit_aggregate (p1, aux_ptr[index], aux_ptr[index+1], "union", fdp);
- used_ptr[index] = 1;
- if (aux_ptr[index].rndx.rfd == ST_RFDESCAPE)
- used_ptr[++index] = 1;
-
- index++; /* skip aux words */
- break;
-
- /* Enumerations add 1-2 aux words:
- 1st word is [ST_RFDESCAPE, offset] pointer to enum def;
- 2nd word is file index if 1st word rfd is ST_RFDESCAPE. */
-
- case bt_Enum: /* Enumeration */
- emit_aggregate (p1, aux_ptr[index], aux_ptr[index+1], "enum", fdp);
- used_ptr[index] = 1;
- if (aux_ptr[index].rndx.rfd == ST_RFDESCAPE)
- used_ptr[++index] = 1;
-
- index++; /* skip aux words */
- break;
-
- case bt_Typedef: /* defined via a typedef, isymRef points */
- strcpy (p1, "typedef");
- break;
-
- case bt_Range: /* subrange of int */
- strcpy (p1, "subrange");
- break;
-
- case bt_Set: /* pascal sets */
- strcpy (p1, "set");
- break;
-
- case bt_Complex: /* fortran complex */
- strcpy (p1, "complex");
- break;
-
- case bt_DComplex: /* fortran double complex */
- strcpy (p1, "double complex");
- break;
-
- case bt_Indirect: /* forward or unnamed typedef */
- strcpy (p1, "forward/unnamed typedef");
- break;
-
- case bt_FixedDec: /* Fixed Decimal */
- strcpy (p1, "fixed decimal");
- break;
-
- case bt_FloatDec: /* Float Decimal */
- strcpy (p1, "float decimal");
- break;
-
- case bt_String: /* Varying Length Character String */
- strcpy (p1, "string");
- break;
-
- case bt_Bit: /* Aligned Bit String */
- strcpy (p1, "bit");
- break;
-
- case bt_Picture: /* Picture */
- strcpy (p1, "picture");
- break;
-
- case bt_Void: /* Void */
- strcpy (p1, "void");
- break;
-
- default:
- sprintf (p1, "Unknown basic type %d", (int) basic_type);
- break;
- }
-
- p1 += strlen (buffer1);
-
- /*
- * If this is a bitfield, get the bitsize.
- */
- if (u.ti.fBitfield)
- {
- int bitsize;
-
- used_ptr[index] = 1;
- bitsize = aux_ptr[index++].width;
- sprintf (p1, " : %d", bitsize);
- p1 += strlen (buffer1);
- }
-
-
- /*
- * Deal with any qualifiers.
- */
- if (qualifiers[0].type != tq_Nil)
- {
- /*
- * Snarf up any array bounds in the correct order. Arrays
- * store 5 successive words in the aux. table:
- * word 0 RNDXR to type of the bounds (i.e., int)
- * word 1 Current file descriptor index
- * word 2 low bound
- * word 3 high bound (or -1 if [])
- * word 4 stride size in bits
- */
- for (i = 0; i < 7; i++)
- {
- if (qualifiers[i].type == tq_Array)
- {
- qualifiers[i].low_bound = aux_ptr[index+2].dnLow;
- qualifiers[i].high_bound = aux_ptr[index+3].dnHigh;
- qualifiers[i].stride = aux_ptr[index+4].width;
- used_ptr[index] = 1;
- used_ptr[index+1] = 1;
- used_ptr[index+2] = 1;
- used_ptr[index+3] = 1;
- used_ptr[index+4] = 1;
- index += 5;
- }
- }
-
- /*
- * Now print out the qualifiers.
- */
- for (i = 0; i < 6; i++)
- {
- switch (qualifiers[i].type)
- {
- case tq_Nil:
- case tq_Max:
- break;
-
- case tq_Ptr:
- strcpy (p2, "ptr to ");
- p2 += sizeof ("ptr to ")-1;
- break;
-
- case tq_Vol:
- strcpy (p2, "volatile ");
- p2 += sizeof ("volatile ")-1;
- break;
-
- case tq_Far:
- strcpy (p2, "far ");
- p2 += sizeof ("far ")-1;
- break;
-
- case tq_Proc:
- strcpy (p2, "func. ret. ");
- p2 += sizeof ("func. ret. ");
- break;
-
- case tq_Array:
- {
- int first_array = i;
- int j;
-
- /* Print array bounds reversed (i.e., in the order the C
- programmer writes them). C is such a fun language.... */
-
- while (i < 5 && qualifiers[i+1].type == tq_Array)
- i++;
-
- for (j = i; j >= first_array; j--)
- {
- strcpy (p2, "array [");
- p2 += sizeof ("array [")-1;
- if (qualifiers[j].low_bound != 0)
- sprintf (p2,
- "%ld:%ld {%ld bits}",
- (long) qualifiers[j].low_bound,
- (long) qualifiers[j].high_bound,
- (long) qualifiers[j].stride);
-
- else if (qualifiers[j].high_bound != -1)
- sprintf (p2,
- "%ld {%ld bits}",
- (long) (qualifiers[j].high_bound + 1),
- (long) (qualifiers[j].stride));
-
- else
- sprintf (p2, " {%ld bits}", (long) (qualifiers[j].stride));
-
- p2 += strlen (p2);
- strcpy (p2, "] of ");
- p2 += sizeof ("] of ")-1;
- }
- }
- break;
- }
- }
- }
-
- strcpy (p2, buffer1);
- return buffer2;
-}
-
-
-/* Print out the global file header for object files. */
-
-static void
-print_global_hdr (struct filehdr *ptr)
-{
- char *time = ctime ((time_t *)&ptr->f_timdat);
- ushort flags = ptr->f_flags;
-
- printf("Global file header:\n");
- printf(" %-*s 0x%x\n", 24, "magic number", (ushort) ptr->f_magic);
- printf(" %-*s %d\n", 24, "# sections", (int) ptr->f_nscns);
- printf(" %-*s %ld, %s", 24, "timestamp", (long) ptr->f_timdat, time);
- printf(" %-*s %ld\n", 24, "symbolic header offset", (long) ptr->f_symptr);
- printf(" %-*s %ld\n", 24, "symbolic header size", (long) ptr->f_nsyms);
- printf(" %-*s %ld\n", 24, "optional header", (long) ptr->f_opthdr);
- printf(" %-*s 0x%x", 24, "flags", (ushort) flags);
-
- if ((flags & F_RELFLG) != 0)
- printf (", F_RELFLG");
-
- if ((flags & F_EXEC) != 0)
- printf (", F_EXEC");
-
- if ((flags & F_LNNO) != 0)
- printf (", F_LNNO");
-
- if ((flags & F_LSYMS) != 0)
- printf (", F_LSYMS");
-
- if ((flags & F_MINMAL) != 0)
- printf (", F_MINMAL");
-
- if ((flags & F_UPDATE) != 0)
- printf (", F_UPDATE");
-
- if ((flags & F_SWABD) != 0)
- printf (", F_SWABD");
-
- if ((flags & F_AR16WR) != 0)
- printf (", F_AR16WR");
-
- if ((flags & F_AR32WR) != 0)
- printf (", F_AR32WR");
-
- if ((flags & F_AR32W) != 0)
- printf (", F_AR32W");
-
- if ((flags & F_PATCH) != 0)
- printf (", F_PATCH/F_NODF");
-
- printf ("\n\n");
-}
-
-
-/* Print out the symbolic header. */
-
-static void
-print_sym_hdr (HDRR *sym_ptr)
-{
- int width = 20;
-
- printf("Symbolic header, magic number = 0x%04x, vstamp = %d.%d:\n\n",
- sym_ptr->magic & 0xffff,
- (sym_ptr->vstamp & 0xffff) >> 8,
- sym_ptr->vstamp & 0xff);
-
- printf(" %-*s %11s %11s %11s\n", width, "Info", "Offset", "Number", "Bytes");
- printf(" %-*s %11s %11s %11s\n", width, "====", "======", "======", "=====\n");
-
- printf(" %-*s %11ld %11ld %11ld [%d]\n", width, "Line numbers",
- (long) sym_ptr->cbLineOffset,
- (long) sym_ptr->cbLine,
- (long) sym_ptr->cbLine,
- (int) sym_ptr->ilineMax);
-
- printf(" %-*s %11ld %11ld %11ld\n", width, "Dense numbers",
- (long) sym_ptr->cbDnOffset,
- (long) sym_ptr->idnMax,
- (long) (sym_ptr->idnMax * sizeof (DNR)));
-
- printf(" %-*s %11ld %11ld %11ld\n", width, "Procedures Tables",
- (long) sym_ptr->cbPdOffset,
- (long) sym_ptr->ipdMax,
- (long) (sym_ptr->ipdMax * sizeof (PDR)));
-
- printf(" %-*s %11ld %11ld %11ld\n", width, "Local Symbols",
- (long) sym_ptr->cbSymOffset,
- (long) sym_ptr->isymMax,
- (long) (sym_ptr->isymMax * sizeof (SYMR)));
-
- printf(" %-*s %11ld %11ld %11ld\n", width, "Optimization Symbols",
- (long) sym_ptr->cbOptOffset,
- (long) sym_ptr->ioptMax,
- (long) (sym_ptr->ioptMax * sizeof (OPTR)));
-
- printf(" %-*s %11ld %11ld %11ld\n", width, "Auxiliary Symbols",
- (long) sym_ptr->cbAuxOffset,
- (long) sym_ptr->iauxMax,
- (long) (sym_ptr->iauxMax * sizeof (AUXU)));
-
- printf(" %-*s %11ld %11ld %11ld\n", width, "Local Strings",
- (long) sym_ptr->cbSsOffset,
- (long) sym_ptr->issMax,
- (long) sym_ptr->issMax);
-
- printf(" %-*s %11ld %11ld %11ld\n", width, "External Strings",
- (long) sym_ptr->cbSsExtOffset,
- (long) sym_ptr->issExtMax,
- (long) sym_ptr->issExtMax);
-
- printf(" %-*s %11ld %11ld %11ld\n", width, "File Tables",
- (long) sym_ptr->cbFdOffset,
- (long) sym_ptr->ifdMax,
- (long) (sym_ptr->ifdMax * sizeof (FDR)));
-
- printf(" %-*s %11ld %11ld %11ld\n", width, "Relative Files",
- (long) sym_ptr->cbRfdOffset,
- (long) sym_ptr->crfd,
- (long) (sym_ptr->crfd * sizeof (ulong)));
-
- printf(" %-*s %11ld %11ld %11ld\n", width, "External Symbols",
- (long) sym_ptr->cbExtOffset,
- (long) sym_ptr->iextMax,
- (long) (sym_ptr->iextMax * sizeof (EXTR)));
-}
-
-
-/* Print out a symbol. */
-
-static void
-print_symbol (SYMR *sym_ptr, int number, const char *strbase, AUXU *aux_base,
- int ifd, FDR *fdp)
-{
- sc_t storage_class = (sc_t) sym_ptr->sc;
- st_t symbol_type = (st_t) sym_ptr->st;
- ulong index = sym_ptr->index;
- char *used_ptr = aux_used + (aux_base - aux_symbols);
- scope_t *scope_ptr;
-
- printf ("\n Symbol# %d: \"%s\"\n", number, sym_ptr->iss + strbase);
-
- if (aux_base != (AUXU *) 0 && index != indexNil)
- switch (symbol_type)
- {
- case st_Nil:
- case st_Label:
- break;
-
- case st_File:
- case st_Block:
- printf (" End+1 symbol: %ld\n", index);
- if (want_scope)
- {
- if (free_scope == (scope_t *) 0)
- scope_ptr = (scope_t *) xmalloc (sizeof (scope_t));
- else
- {
- scope_ptr = free_scope;
- free_scope = scope_ptr->prev;
- }
- scope_ptr->open_sym = number;
- scope_ptr->st = symbol_type;
- scope_ptr->sc = storage_class;
- scope_ptr->prev = cur_scope;
- cur_scope = scope_ptr;
- }
- break;
-
- case st_End:
- if (storage_class == sc_Text || storage_class == sc_Info)
- printf (" First symbol: %ld\n", index);
- else
- {
- used_ptr[index] = 1;
- printf (" First symbol: %ld\n", (long) aux_base[index].isym);
- }
-
- if (want_scope)
- {
- if (cur_scope == (scope_t *) 0)
- printf (" Can't pop end scope\n");
- else
- {
- scope_ptr = cur_scope;
- cur_scope = scope_ptr->prev;
- scope_ptr->prev = free_scope;
- free_scope = scope_ptr;
- }
- }
- break;
-
- case st_Proc:
- case st_StaticProc:
- if (MIPS_IS_STAB(sym_ptr))
- ;
- else if (ifd == -1) /* local symbol */
- {
- used_ptr[index] = used_ptr[index+1] = 1;
- printf (" End+1 symbol: %-7ld Type: %s\n",
- (long) aux_base[index].isym,
- type_to_string (aux_base, index+1, fdp));
- }
- else /* global symbol */
- printf (" Local symbol: %ld\n", index);
-
- if (want_scope)
- {
- if (free_scope == (scope_t *) 0)
- scope_ptr = (scope_t *) xmalloc (sizeof (scope_t));
- else
- {
- scope_ptr = free_scope;
- free_scope = scope_ptr->prev;
- }
- scope_ptr->open_sym = number;
- scope_ptr->st = symbol_type;
- scope_ptr->sc = storage_class;
- scope_ptr->prev = cur_scope;
- cur_scope = scope_ptr;
- }
- break;
-
-#ifdef stStruct
- case st_Struct:
- case st_Union:
- case st_Enum:
- printf (" End+1 symbol: %lu\n", index);
- break;
-#endif
-
- default:
- if (!MIPS_IS_STAB (sym_ptr))
- {
- used_ptr[index] = 1;
- printf (" Type: %s\n",
- type_to_string (aux_base, index, fdp));
- }
- break;
- }
-
- if (want_scope)
- {
- printf (" Scopes: ");
- if (cur_scope == (scope_t *) 0)
- printf (" none\n");
- else
- {
- for (scope_ptr = cur_scope;
- scope_ptr != (scope_t *) 0;
- scope_ptr = scope_ptr->prev)
- {
- const char *sclass;
- if (scope_ptr->st == st_Proc || scope_ptr->st == st_StaticProc)
- sclass = "func.";
- else if (scope_ptr->st == st_File)
- sclass = "file";
- else if (scope_ptr->st == st_Block && scope_ptr->sc == sc_Text)
- sclass = "block";
- else if (scope_ptr->st == st_Block && scope_ptr->sc == sc_Info)
- sclass = "type";
- else
- sclass = "???";
-
- printf (" %ld [%s]", scope_ptr->open_sym, sclass);
- }
- printf ("\n");
- }
- }
-
- printf (" Value: %-13ld ",
- (long)sym_ptr->value);
- if (ifd == -1)
- printf ("String index: %ld\n", (long)sym_ptr->iss);
- else
- printf ("String index: %-11ld Ifd: %d\n",
- (long)sym_ptr->iss, ifd);
-
- printf (" Symbol type: %-11sStorage class: %-11s",
- st_to_string (symbol_type), sc_to_string (storage_class));
-
- if (MIPS_IS_STAB(sym_ptr))
- {
- int i = ARRAY_SIZE (stab_names);
- const char *stab_name = "stab";
- short code = MIPS_UNMARK_STAB(sym_ptr->index);
-
- while (--i >= 0)
- if (stab_names[i].code == code)
- {
- stab_name = stab_names[i].string;
- break;
- }
- printf ("Index: 0x%lx (%s)\n", (long)sym_ptr->index, stab_name);
- }
- else if (sym_ptr->st == stLabel && sym_ptr->index != indexNil)
- printf ("Index: %ld (line#)\n", (long)sym_ptr->index);
- else
- printf ("Index: %ld\n", (long)sym_ptr->index);
-
-}
-
-
-/* Print out a word from the aux. table in various formats. */
-
-static void
-print_aux (AUXU u, int auxi, int used)
-{
- printf ("\t%s#%-5d %11ld, [%4ld/%7ld], [%2d %1d:%1d %1x:%1x:%1x:%1x:%1x:%1x]\n",
- (used) ? " " : "* ",
- auxi,
- (long) u.isym,
- (long) u.rndx.rfd,
- (long) u.rndx.index,
- u.ti.bt,
- u.ti.fBitfield,
- u.ti.continued,
- u.ti.tq0,
- u.ti.tq1,
- u.ti.tq2,
- u.ti.tq3,
- u.ti.tq4,
- u.ti.tq5);
-}
-
-
-/* Write aggregate information to a string. */
-
-static void
-emit_aggregate (char *string, AUXU u, AUXU u2, const char *which, FDR *fdp)
-{
- unsigned int ifd = u.rndx.rfd;
- unsigned int index = u.rndx.index;
- const char *name;
-
- if (ifd == ST_RFDESCAPE)
- ifd = u2.isym;
-
- /* An ifd of -1 is an opaque type. An escaped index of 0 is a
- struct return type of a procedure compiled without -g. */
- if (ifd == 0xffffffff
- || (u.rndx.rfd == ST_RFDESCAPE && index == 0))
- name = "<undefined>";
- else if (index == indexNil)
- name = "<no name>";
- else
- {
- if (fdp == 0 || sym_hdr.crfd == 0)
- fdp = &file_desc[ifd];
- else
- fdp = &file_desc[rfile_desc[fdp->rfdBase + ifd]];
- name = &l_strings[fdp->issBase + l_symbols[index + fdp->isymBase].iss];
- }
-
- sprintf (string,
- "%s %s { ifd = %u, index = %u }",
- which, name, ifd, index);
-}
-
-
-/* Print out information about a file descriptor, and the symbols,
- procedures, and line numbers within it. */
-
-static void
-print_file_desc (FDR *fdp, int number)
-{
- char *str_base;
- AUXU *aux_base;
- int symi, pdi;
- int width = 20;
- char *used_base;
-
- str_base = l_strings + fdp->issBase;
- aux_base = aux_symbols + fdp->iauxBase;
- used_base = aux_used + (aux_base - aux_symbols);
-
- printf ("\nFile #%d, \"%s\"\n\n",
- number,
- fdp->rss != issNil ? str_base + fdp->rss : "<unknown>");
-
- printf (" Name index = %-10ld Readin = %s\n",
- (long) fdp->rss, (fdp->fReadin) ? "Yes" : "No");
-
- printf (" Merge = %-10s Endian = %s\n",
- (fdp->fMerge) ? "Yes" : "No",
- (fdp->fBigendian) ? "BIG" : "LITTLE");
-
- printf (" Debug level = %-10s Language = %s\n",
- glevel_to_string ((glevel_t) fdp->glevel),
- lang_to_string((lang_t) fdp->lang));
-
- printf (" Adr = 0x%08lx\n\n", (long) fdp->adr);
-
- printf(" %-*s %11s %11s %11s %11s\n", width, "Info", "Start", "Number", "Size", "Offset");
- printf(" %-*s %11s %11s %11s %11s\n", width, "====", "=====", "======", "====", "======");
-
- printf(" %-*s %11lu %11lu %11lu %11lu\n",
- width, "Local strings",
- (ulong) fdp->issBase,
- (ulong) fdp->cbSs,
- (ulong) fdp->cbSs,
- (ulong) (fdp->issBase + sym_hdr.cbSsOffset));
-
- printf(" %-*s %11lu %11lu %11lu %11lu\n",
- width, "Local symbols",
- (ulong) fdp->isymBase,
- (ulong) fdp->csym,
- (ulong) (fdp->csym * sizeof (SYMR)),
- (ulong) (fdp->isymBase * sizeof (SYMR) + sym_hdr.cbSymOffset));
-
- printf(" %-*s %11lu %11lu %11lu %11lu\n",
- width, "Line numbers",
- (ulong) fdp->cbLineOffset,
- (ulong) fdp->cline,
- (ulong) fdp->cbLine,
- (ulong) (fdp->cbLineOffset + sym_hdr.cbLineOffset));
-
- printf(" %-*s %11lu %11lu %11lu %11lu\n",
- width, "Optimization symbols",
- (ulong) fdp->ioptBase,
- (ulong) fdp->copt,
- (ulong) (fdp->copt * sizeof (OPTR)),
- (ulong) (fdp->ioptBase * sizeof (OPTR) + sym_hdr.cbOptOffset));
-
- printf(" %-*s %11lu %11lu %11lu %11lu\n",
- width, "Procedures",
- (ulong) fdp->ipdFirst,
- (ulong) fdp->cpd,
- (ulong) (fdp->cpd * sizeof (PDR)),
- (ulong) (fdp->ipdFirst * sizeof (PDR) + sym_hdr.cbPdOffset));
-
- printf(" %-*s %11lu %11lu %11lu %11lu\n",
- width, "Auxiliary symbols",
- (ulong) fdp->iauxBase,
- (ulong) fdp->caux,
- (ulong) (fdp->caux * sizeof (AUXU)),
- (ulong) (fdp->iauxBase * sizeof(AUXU) + sym_hdr.cbAuxOffset));
-
- printf(" %-*s %11lu %11lu %11lu %11lu\n",
- width, "Relative Files",
- (ulong) fdp->rfdBase,
- (ulong) fdp->crfd,
- (ulong) (fdp->crfd * sizeof (ulong)),
- (ulong) (fdp->rfdBase * sizeof(ulong) + sym_hdr.cbRfdOffset));
-
-
- if (want_scope && cur_scope != (scope_t *) 0)
- printf ("\n Warning scope does not start at 0!\n");
-
- /*
- * print the info about the symbol table.
- */
- printf ("\n There are %lu local symbols, starting at %lu\n",
- (ulong) fdp->csym,
- (ulong) (fdp->isymBase + sym_hdr.cbSymOffset));
-
- for(symi = fdp->isymBase; symi < (fdp->csym + fdp->isymBase); symi++)
- print_symbol (&l_symbols[symi],
- symi - fdp->isymBase,
- str_base,
- aux_base,
- -1,
- fdp);
-
- if (want_scope && cur_scope != (scope_t *) 0)
- printf ("\n Warning scope does not end at 0!\n");
-
- /*
- * print the aux. table if desired.
- */
-
- if (want_aux && fdp->caux != 0)
- {
- int auxi;
-
- printf ("\n There are %lu auxiliary table entries, starting at %lu.\n\n",
- (ulong) fdp->caux,
- (ulong) (fdp->iauxBase + sym_hdr.cbAuxOffset));
-
- for (auxi = fdp->iauxBase; auxi < (fdp->caux + fdp->iauxBase); auxi++)
- print_aux (aux_base[auxi], auxi, used_base[auxi]);
- }
-
- /*
- * print the relative file descriptors.
- */
- if (want_rfd && fdp->crfd != 0)
- {
- ulong *rfd_ptr, i;
-
- printf ("\n There are %lu relative file descriptors, starting at %lu.\n",
- (ulong) fdp->crfd,
- (ulong) fdp->rfdBase);
-
- rfd_ptr = rfile_desc + fdp->rfdBase;
- for (i = 0; i < (ulong) fdp->crfd; i++)
- {
- printf ("\t#%-5ld %11ld, 0x%08lx\n", i, *rfd_ptr, *rfd_ptr);
- rfd_ptr++;
- }
- }
-
- /*
- * do the procedure descriptors.
- */
- printf ("\n There are %lu procedure descriptor entries, ", (ulong) fdp->cpd);
- printf ("starting at %lu.\n", (ulong) fdp->ipdFirst);
-
- for (pdi = fdp->ipdFirst; pdi < (fdp->cpd + fdp->ipdFirst); pdi++)
- {
- PDR *proc_ptr = &proc_desc[pdi];
- printf ("\n\tProcedure descriptor %d:\n", (pdi - fdp->ipdFirst));
-
- if (l_symbols != 0)
- printf ("\t Name index = %-11ld Name = \"%s\"\n",
- (long) l_symbols[proc_ptr->isym + fdp->isymBase].iss,
- l_symbols[proc_ptr->isym + fdp->isymBase].iss + str_base);
-
- printf ("\t .mask 0x%08lx,%-9ld .fmask 0x%08lx,%ld\n",
- (long) proc_ptr->regmask,
- (long) proc_ptr->regoffset,
- (long) proc_ptr->fregmask,
- (long) proc_ptr->fregoffset);
-
- printf ("\t .frame $%d,%ld,$%d\n",
- (int) proc_ptr->framereg,
- (long) proc_ptr->frameoffset,
- (int) proc_ptr->pcreg);
-
- printf ("\t Opt. start = %-11ld Symbols start = %ld\n",
- (long) proc_ptr->iopt,
- (long) proc_ptr->isym);
-
- printf ("\t First line # = %-11ld Last line # = %ld\n",
- (long) proc_ptr->lnLow,
- (long) proc_ptr->lnHigh);
-
- printf ("\t Line Offset = %-11ld Address = 0x%08lx\n",
- (long) proc_ptr->cbLineOffset,
- (long) proc_ptr->adr);
-
- /*
- * print the line number entries.
- */
-
- if (want_line && fdp->cline != 0)
- {
- int delta, count;
- long cur_line = proc_ptr->lnLow;
- uchar *line_ptr = (((uchar *)lines) + proc_ptr->cbLineOffset
- + fdp->cbLineOffset);
- uchar *line_end;
-
- if (pdi == fdp->cpd + fdp->ipdFirst - 1) /* last procedure */
- line_end = ((uchar *)lines) + fdp->cbLine + fdp->cbLineOffset;
- else /* not last proc. */
- line_end = (((uchar *)lines) + proc_desc[pdi+1].cbLineOffset
- + fdp->cbLineOffset);
-
- printf ("\n\tThere are %lu bytes holding line numbers, starting at %lu.\n",
- (ulong) (line_end - line_ptr),
- (ulong) (fdp->ilineBase + sym_hdr.cbLineOffset));
-
- while (line_ptr < line_end)
- { /* sign extend nibble */
- delta = ((*line_ptr >> 4) ^ 0x8) - 0x8;
- count = (*line_ptr & 0xf) + 1;
- if (delta != -8)
- line_ptr++;
- else
- {
- delta = (((line_ptr[1]) & 0xff) << 8) + ((line_ptr[2]) & 0xff);
- delta = (delta ^ 0x8000) - 0x8000;
- line_ptr += 3;
- }
-
- cur_line += delta;
- printf ("\t Line %11ld, delta %5d, count %2d\n",
- cur_line,
- delta,
- count);
- }
- }
- }
-}
-
-
-/* Read in the portions of the .T file that we will print out. */
-
-static void
-read_tfile (void)
-{
- short magic;
- off_t sym_hdr_offset = 0;
-
- read_seek (&magic, sizeof (magic), 0, "Magic number");
- if (!tfile)
- {
- /* Print out the global header, since this is not a T-file. */
-
- read_seek (&global_hdr, sizeof (global_hdr), 0, "Global file header");
-
- print_global_hdr (&global_hdr);
-
- if (global_hdr.f_symptr == 0)
- {
- printf ("No symbolic header, Goodbye!\n");
- exit (1);
- }
-
- sym_hdr_offset = global_hdr.f_symptr;
- }
-
- read_seek (&sym_hdr, sizeof (sym_hdr), sym_hdr_offset, "Symbolic header");
-
- print_sym_hdr (&sym_hdr);
-
- lines = (LINER *) read_seek (NULL, sym_hdr.cbLine, sym_hdr.cbLineOffset,
- "Line numbers");
-
- dense_nums = (DNR *) read_seek (NULL, sym_hdr.idnMax * sizeof (DNR),
- sym_hdr.cbDnOffset, "Dense numbers");
-
- proc_desc = (PDR *) read_seek (NULL, sym_hdr.ipdMax * sizeof (PDR),
- sym_hdr.cbPdOffset, "Procedure tables");
-
- l_symbols = (SYMR *) read_seek (NULL, sym_hdr.isymMax * sizeof (SYMR),
- sym_hdr.cbSymOffset, "Local symbols");
-
- opt_symbols = (OPTR *) read_seek (NULL, sym_hdr.ioptMax * sizeof (OPTR),
- sym_hdr.cbOptOffset,
- "Optimization symbols");
-
- aux_symbols = (AUXU *) read_seek (NULL, sym_hdr.iauxMax * sizeof (AUXU),
- sym_hdr.cbAuxOffset, "Auxiliary symbols");
-
- if (sym_hdr.iauxMax > 0)
- aux_used = (char *) xcalloc (sym_hdr.iauxMax, 1);
-
- l_strings = (char *) read_seek (NULL, sym_hdr.issMax,
- sym_hdr.cbSsOffset, "Local string table");
-
- e_strings = (char *) read_seek (NULL, sym_hdr.issExtMax,
- sym_hdr.cbSsExtOffset,
- "External string table");
-
- file_desc = (FDR *) read_seek (NULL, sym_hdr.ifdMax * sizeof (FDR),
- sym_hdr.cbFdOffset, "File tables");
-
- rfile_desc = (ulong *) read_seek (NULL, sym_hdr.crfd * sizeof (ulong),
- sym_hdr.cbRfdOffset,
- "Relative file tables");
-
- e_symbols = (EXTR *) read_seek (NULL, sym_hdr.iextMax * sizeof (EXTR),
- sym_hdr.cbExtOffset, "External symbols");
-}
-
-
-
-extern int main (int, char **);
-
-int
-main (int argc, char **argv)
-{
- int i, opt;
-
- /*
- * Process arguments
- */
- while ((opt = getopt_long (argc, argv, "alrsvt", options, NULL)) != -1)
- switch (opt)
- {
- default: errors++; break;
- case 'a': want_aux++; break; /* print aux table */
- case 'l': want_line++; break; /* print line numbers */
- case 'r': want_rfd++; break; /* print relative fd's */
- case 's': want_scope++; break; /* print scope info */
- case 'v': verbose++; break; /* print version # */
- case 'V': version++; break; /* print version # */
- case 't': tfile++; break; /* this is a tfile (without header),
- and not a .o */
- }
-
- if (version)
- {
- printf ("mips-tdump %s%s\n", pkgversion_string, version_string);
- fputs ("Copyright (C) 2012 Free Software Foundation, Inc.\n", stdout);
- fputs ("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\n",
- stdout);
- exit (0);
- }
-
- if (optind != argc - 1)
- errors++;
-
- if (verbose || errors)
- fprintf (stderr, "mips-tdump (GCC) %s\n", version_string);
-
- if (errors)
- {
- fprintf (stderr, "Calling Sequence:\n");
- fprintf (stderr, "\t%s [-alrst] <object-or-T-file>\n", argv[0]);
- fprintf (stderr, "\n");
- fprintf (stderr, "switches:\n");
- fprintf (stderr, "\t-a Print out auxiliary table.\n");
- fprintf (stderr, "\t-l Print out line numbers.\n");
- fprintf (stderr, "\t-r Print out relative file descriptors.\n");
- fprintf (stderr, "\t-s Print out the current scopes for an item.\n");
- fprintf (stderr, "\t-t Assume there is no global header (ie, a T-file).\n");
- fprintf (stderr, "\t-v Print program version.\n");
- return 1;
- }
-
- /*
- * Open and process the input file.
- */
- tfile_fd = open (argv[optind], O_RDONLY);
- if (tfile_fd < 0)
- {
- perror (argv[optind]);
- return 1;
- }
-
- read_tfile ();
-
- /*
- * Print any global aux words if any.
- */
- if (want_aux)
- {
- long last_aux_in_use;
-
- if (sym_hdr.ifdMax != 0 && file_desc[0].iauxBase != 0)
- {
- printf ("\nGlobal auxiliary entries before first file:\n");
- for (i = 0; i < file_desc[0].iauxBase; i++)
- print_aux (aux_symbols[i], 0, aux_used[i]);
- }
-
- if (sym_hdr.ifdMax == 0)
- last_aux_in_use = 0;
- else
- last_aux_in_use
- = (file_desc[sym_hdr.ifdMax-1].iauxBase
- + file_desc[sym_hdr.ifdMax-1].caux - 1);
-
- if (last_aux_in_use < sym_hdr.iauxMax-1)
- {
- printf ("\nGlobal auxiliary entries after last file:\n");
- for (i = last_aux_in_use; i < sym_hdr.iauxMax; i++)
- print_aux (aux_symbols[i], i - last_aux_in_use, aux_used[i]);
- }
- }
-
- /*
- * Print the information for each file.
- */
- for (i = 0; i < sym_hdr.ifdMax; i++)
- print_file_desc (&file_desc[i], i);
-
- /*
- * Print the external symbols.
- */
- want_scope = 0; /* scope info is meaning for extern symbols */
- printf ("\nThere are %lu external symbols, starting at %lu\n",
- (ulong) sym_hdr.iextMax,
- (ulong) sym_hdr.cbExtOffset);
-
- for(i = 0; i < sym_hdr.iextMax; i++)
- print_symbol (&e_symbols[i].asym, i, e_strings,
- aux_symbols + file_desc[e_symbols[i].ifd].iauxBase,
- e_symbols[i].ifd,
- &file_desc[e_symbols[i].ifd]);
-
- /*
- * Print unused aux symbols now.
- */
-
- if (want_aux)
- {
- int first_time = 1;
-
- for (i = 0; i < sym_hdr.iauxMax; i++)
- {
- if (! aux_used[i])
- {
- if (first_time)
- {
- printf ("\nThe following auxiliary table entries were unused:\n\n");
- first_time = 0;
- }
-
- printf (" #%-5d %11ld 0x%08lx %s\n",
- i,
- (long) aux_symbols[i].isym,
- (long) aux_symbols[i].isym,
- type_to_string (aux_symbols, i, (FDR *) 0));
- }
- }
- }
-
- return 0;
-}