System: Elk version 3.0 Patch #: 3 Priority: high Description: This patch is required to make Elk work under SGI Irix 6.2. config/sgi-irix6.2-cc: New config file for this platform. src/stab-elf.c: Added some checks that are required for shared objects created by the Irix 6.2 linker. Fix: From rn, say "| patch -p -N -d DIR", where DIR is the top of your Elk source directory tree. Outside of rn, say "cd DIR; patch -p -N include file and uses "struct dirent")? + # If not, the (obsolete) BSD-style interface with and + # "struct direct" is assumed. + + dirent=yes + + + # Does the system have the random/srandom library functions? If not, + # rand/srand will be used instead. + + random=yes + + + # Does the system have the index library function? If not, strchr + # will be used. + + index=yes + + + # Does the system have the bcopy, bzero, and bcmp library functions? + # If not, memcpy/memset/memcmp will be used. + + bstring=yes + + + # Does using the access system call require to be included? + # (Look into the manual page for access if in doubt.) + + include_unistd_h=yes + + + # If the FIONREAD ioctl command is defined, which file must be included? + + fionread_include='' + + + # What is the name of the a.out include file? + + aout_h='' + + + # The following variables control how certain system limits are obtained + # during runtime. + # + # If getdtablesize() is available to determine the maximum number of open + # files per process, set getdtablesize=yes. + # Alternatively, if POSIX-style sysconf() can be called with _SC_OPEN_MAX, + # set sysconf_open_max=yes. + # If neither is set to "yes", an educated guess will be made. + + getdtablesize=yes + sysconf_open_max= + + # If POSIX-style pathconf() can be invoked with _PC_PATH_MAX to determine + # the maximum pathname length, set pathconf_path_max=yes. + + pathconf_path_max=yes + + # If the system page size can be determined by calling getpagesize() + # set getpagesize=yes. + # Alternatively, if sysconf() can be invoked with _SC_PAGESIZE, set + # sysconf_pagesize=yes. + # These two variables are only required if the generational garbage + # collector is used. + + getpagesize=yes + sysconf_pagesize=yes + + + # Set reliable_signals=bsd if your system supports BSD-style reliable + # signals (has sigblock and related functions); set reliable_signals=posix + # for POSIX-style signals (sigprocmask, sigsets); otherwise old V7/SysV + # signal semantics are assumed. + + reliable_signals=posix + + + # To support dynamic loading of object files and "dump", the system's + # a.out format has to be known. Choose one of the following: + # + # coff ecoff xcoff elf macho hp9k convex + # + # Other values of "aout_format" are interpreted as BSD-style a.out format. + + aout_format=elf + + + # Which mechanism should be used to dynamically load object files? + # Possible values currently are: + # + # ld BSD-style incremental loading based on ld -A + # rld NeXT-style rld_load() + # shl HP-UX shl_load() + # dl SysVR4/SunOS5 dlopen() + # + # Leave load_obj empty if dynamic loading is not supported. + + load_obj=dl + + + # The following variables are only relevant if load_obj is set. + + # Linker options to produce a shared object from a .o file. + # Only used if load_obj=dl. + + ldflags_shared="-shared -dont_warn_unused" + + # The libraries against which dynamically loaded files are resolved + # at the time they are loaded. + + load_libraries= + + # Additional flags to be passed to the linker for an incremental + # linker run (ld -A). Ignored unless load_obj=ld. + + incremental_ldflags= + + # Systems with "aout_format=ecoff" may require a call to the cacheflush + # system call after an object file has been loaded. Which include file + # has to be included in this case? + + cachectl_h=unused + + # Is the ANSI-C atexit function supported to register an exit handler? + # If not, the exit library function will be redefined and will end in + # a call to _exit. + + atexit=yes + + + # Do the names of external functions in the symbol table always begin + # with a special character (such as underline)? If so, syms_begin_with + # should hold this character, otherwise leave it empty. + + syms_begin_with= + + + # The symbol prefixes of extension initialization and finalization + # functions (without the initial $syms_begin_with). Do not change + # these unless the compiler or linker restricts the length of symbols! + + init_prefix=elk_init_ + finit_prefix=elk_finit_ + + + # Is the "dump" function supported? + + can_dump=yes + + + # The following variables are only relevant if "can_dump=yes". + + # Is the fchmod system call broken or unavailable? + + fchmod_broken=no + + # These four variables are only relevant if the system has the BSD-style + # a.out format. + # segment_size is the segment size of the system's memory management + # unit, i.e. the number to a multiple of which the size of an a.out + # segment (e.g. .text) is rounded up. + # file_text_start is the file offset at which the text segment starts + # in an a.out file. + # mem_text_start is the starting address of the text segment in memory. + # text_length_adj must be set to "sizeof (struct exec)" if the length of + # the text segment stored in the a.out header includes the a.out header + # itself. + + segment_size=SEGSIZ + file_text_start='sizeof(struct exec)' + mem_text_start='(PAGSIZ+sizeof(struct exec))' + text_length_adj='sizeof(struct exec)' + + # Only relevant if "aout_format=coff": the system's pagesize. + + coff_pagesize= + + # Only relevant if "aout_format=hp9k" and "load_obj=shl" + + hp_shared_libraries=yes + + # Print debug messages when dumping + + debug_dump=yes + + + # Is the "termio" terminal interface supported by the system? If not, + # BSD-style tty handling will be used. + + termio=yes + + + # flush_stdio and flush_tty indicate how clear-input/output-port can + # flush (purge) a FILE pointer and a TTY file descriptor. + # Possible values of flush_stdio: + # bsd assume old BSD-style FILE* (with _cnt, _ptr, _base) + # fpurge use 4.4BSD-style fpurge stdio library function + # Possible values of flush_tty: + # tiocflush use TIOCFLUSH ioctl from + # tcflsh use TCFLSH ioctl from + # Leave the variable(s) empty if flushing is not supported. + + flush_stdio=bsd + flush_tty=tcflsh + + + # The interpreter uses the getrlimit function to determine the maximum + # stack size of the running program. If this function is not supported, + # set max_stack_size to a (fixed) maximum stack size (in bytes). + + max_stack_size= + + + # Is the mprotect system call supported? The generational garbage collector + # requires mprotect to implement incremental GC. $mprotect is ignored if + # generational_gc is set to "no" in the site file. Set mprotect=mmap if + # mprotect is supported, but only for mmap()ed memory. + + mprotect=yes + + + # How can a SIGSEGV or SIGBUS signal handler find out the address of + # the faulting memory reference? This variable is only used if + # $mprotect is "yes" or "mmap". Possible values are: + # + # siginfo handler is called with siginfo_t structure (enabled + # by a call to sigaction) + # sigcontext address is in the sigcontext structure (3rd arg, sc_badvaddr) + # arg4 address is delivered to handler as argument #4 + # aix use an AIX-specific hack to get hold of the bad address + # hpux use a HP-UX-specific hack + + sigsegv_addr=siginfo + + + # Does the system support the alloca library function, and does this + # function actually extend the stack? If in doubt, extract alloca.o + # from the C library and check if it contains the symbols malloc and free. + # If this is the case, forget it. + + use_alloca=yes + + + # Must be included to use alloca? Is "#pragma alloca" required? + + include_alloca_h=yes + pragma_alloca=no + + + # Does the system (or compiler) require certain objects (e.g. doubles) + # to be aligned at 8-byte boundaries? If not, 4-byte alignment will + # be assumed. + + align_8byte=no + + + # The C compiler used to compile the source code. + + cc=cc + + + # The name of the linker. This is usually just "ld", or /usr/ccs/bin/ld + # in SVR4-based systems. + + ld=ld + + + # The C compiler flags used for all files. + + cflags='-O' + + + # Are extra C compiler flags (such as -D_NO_PROTO) required to compile + # Motif applications? + + motif_cflags= + + + # Are extra C compiler flags (such as -G 0) required to compile + # dynamically loadable files? + + obj_cflags= + + + # Are extra linker flags (such as -G 0) required to link several object + # files together to one dynamically loadable file? + + obj_ldflags= + + + # The linker flags used to link the interpreter. + + ldflags='-lm -lelf' + + + # The lint flags. + + lintflags='-abxh' + + + # Are function prototypes in the header files required? If prototypes=yes, + # prototypes are used unconditionally; if prototypes=no, prototypes are + # not used; otherwise prototypes are only used if the source code is + # compiled with an ANSI-C- or C++-compiler. + + prototypes=yes + + + # Does your C preprocessor support the ANSI-C ## operator, although + # __STDC__ is not defined? + + ansi_cpp=no + + + # The UNIX extension likes to know which of the following system calls, + # library functions, and include files are supported by the system. + + gettimeofday=yes + ftime=no + vfork=no + gethostname=yes + uname=yes + mktemp=yes + tmpnam=yes + tempnam=yes + getcwd=yes + getwd=yes + rename=yes + waitpid=yes + wait3=yes + wait4=no + utime_h=yes + regcomp=yes + + + # Element type of the gidset argument of getgroups(); typically int + # or gid_t. Only needed by the UNIX extension. + + getgroups_type=gid_t *** src/stab-elf.c 1994/02/08 12:50:39 1.3 --- src/stab-elf.c 1996/09/24 10:32:07 *************** *** 42,52 **** */ section_name = elf_strptr (elf_ptr, shstrndx, (size_t)elf_shdr_ptr->sh_name); ! if (strcmp (section_name, ".strtab") == 0) { elf_str_index = elf_ndxscn (elf_scn_ptr); } } ! else if (elf_shdr_ptr->sh_type == SHT_SYMTAB) { symtab_ptr = elf_shdr_ptr; symtab_scn_ptr = elf_scn_ptr; } --- 42,54 ---- */ section_name = elf_strptr (elf_ptr, shstrndx, (size_t)elf_shdr_ptr->sh_name); ! if (strcmp (section_name, ".strtab") == 0 || ! strcmp (section_name, ".dynstr") == 0) { elf_str_index = elf_ndxscn (elf_scn_ptr); } } ! else if (elf_shdr_ptr->sh_type == SHT_SYMTAB || ! elf_shdr_ptr->sh_type == SHT_DYNSYM) { symtab_ptr = elf_shdr_ptr; symtab_scn_ptr = elf_scn_ptr; }