This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: glibc 2.3 not binary compatible with glibc-2.2.5


On Sat, 5 Oct 2002, Roland McGrath wrote:

> > (gdb) bt
> > #0  0x401681a8 in __errno_location () from /lib/libpthread.so.0
> > #1  0x40032abc in __timer_signal_thread_rclk () from /lib/libc.so.6
> Ok, this is something we can work with.  If you'd compiled libc with -g (or
> if you did, install unstripped binaries in your chroot area) that would be
> handy.  But without that, do "disas $pc" at the crash--that should be the
> disassembly you showed before, but with symbols lined up so we can be sure
> what is what.  Also show "info shared" in the same run, and "bt full".

(gdb) disass $pc
Dump of assembler code for function __errno_location:
0x40168180 <__errno_location>:  sub    $0xc,%esp
0x40168183 <__errno_location+3>:        mov    %ebx,0x4(%esp,1)
0x40168187 <__errno_location+7>:        mov    %ebp,0x8(%esp,1)
0x4016818b <__errno_location+11>:       call   0x40168321  <__res_state+129>
0x40168190 <__errno_location+16>:       add    $0x69b4,%ebx
0x40168196 <__errno_location+22>:       mov    0x1e4(%ebx),%eax
0x4016819c <__errno_location+28>:       mov    %ebp,%edx
0x4016819e <__errno_location+30>:       cmp    (%eax),%ebp
0x401681a0 <__errno_location+32>:       jb     0x401681c0 <__errno_location+64>
0x401681a2 <__errno_location+34>:       mov    0x230(%ebx),%eax
0x401681a8 <__errno_location+40>:       mov    0x1b8(%eax),%eax
0x401681ae <__errno_location+46>:       mov    0x4(%esp,1),%ebx
0x401681b2 <__errno_location+50>:       mov    0x8(%esp,1),%ebp
0x401681b6 <__errno_location+54>:       add    $0xc,%esp
0x401681b9 <__errno_location+57>:       ret
0x401681ba <__errno_location+58>:       lea    0x0(%esi),%esi

(gdb) info shared
>From        To          Syms Read   Shared Object Library
0x40016a00  0x4001a3e0  Yes         /lib/librt.so.1
0x4003cb40  0x4013aea4  Yes         /lib/libc.so.6
0x401624d0  0x4016be30  Yes         /lib/libpthread.so.0
0x40000c00  0x40011044  Yes         /lib/ld-linux.so.2
(gdb) bt full
#0  0x401681a8 in __errno_location () from /lib/libpthread.so.0
No symbol table info available.
#1  0x40032abc in __timer_signal_thread_rclk () from /lib/libc.so.6
No symbol table info available.
(gdb)

> Then also send readelf -Wrs libpthread.so.0, which lets us make sense of
> the GOT references and so forth from the disassembly.

Attached.

> Send the config.status and config.h files from your libc build.

Also attached.

Attachment: readelf
Description: Readelf -Wrs

/* config.h.  Generated automatically by configure.  */
#if !defined __ASSEMBLER__ && !defined _ISOMAC && !defined __OPTIMIZE__
# error "glibc cannot be compiled without optimization"
#endif

/* Another evil option when it comes to compiling the C library is
   --ffast-math since it alters the ABI.  */
#if defined __FAST_MATH__ && !defined TEST_FAST_MATH
# error "glibc must not be compiled with -ffast-math"
#endif

/* Define if using GNU ld, with support for weak symbols in a.out,
   and for symbol set and warning messages extensions in a.out and ELF.
   This implies HAVE_WEAK_SYMBOLS; set by --with-gnu-ld.  */
#define	HAVE_GNU_LD 1

/* Define if using ELF, which supports weak symbols.
   This implies HAVE_ASM_WEAK_DIRECTIVE and NO_UNDERSCORES; set by
   --with-elf.  */
#define	HAVE_ELF 1

/* Define if using XCOFF. Set by --with-xcoff.  */
/* #undef	HAVE_XCOFF */

/* Define if C symbols are asm symbols.  Don't define if C symbols
   have a `_' prepended to make the asm symbol.  */
#define	NO_UNDERSCORES 1

/* Define if weak symbols are available via the `.weak' directive.  */
#define	HAVE_ASM_WEAK_DIRECTIVE 1

/* Define if weak symbols are available via the `.weakext' directive.  */
/* #undef	HAVE_ASM_WEAKEXT_DIRECTIVE */

/* Define to the assembler line separator character for multiple
   assembler instructions per line.  Default is `;'  */
/* #undef ASM_LINE_SEP */

/* Define if not using ELF, but `.init' and `.fini' sections are available.  */
/* #undef	HAVE_INITFINI */

/* Define if __attribute__((section("foo"))) puts quotes around foo.  */
/* #undef  HAVE_SECTION_QUOTES */

/* Define if using the GNU assembler, gas.  */
#define	HAVE_GNU_AS 1

/* Define if the assembler supports the `.set' directive.  */
#define	HAVE_ASM_SET_DIRECTIVE 1

/* Define to the name of the assembler's directive for
   declaring a symbol global (default `.globl').  */
#define	ASM_GLOBAL_DIRECTIVE .globl

/* Define to the prefix before `object' or `function' in the
   assembler's `.type' directive, if it has one.  */
#define	ASM_TYPE_DIRECTIVE_PREFIX @

/* Define a symbol_name as a global .symbol_name for ld.  */
/* #undef	HAVE_ASM_GLOBAL_DOT_NAME */

/* Define if _Unwind_Find_FDE should be exported from glibc.  */
#define  EXPORT_UNWIND_FIND_FDE 1

/* Define to use GNU libio instead of GNU stdio.
   This is defined by configure under --enable-libio.  */
#define	USE_IN_LIBIO 1

/* Define if using ELF and the assembler supports the `.previous'
   directive.  */
#define	HAVE_ASM_PREVIOUS_DIRECTIVE 1

/* Define if using ELF and the assembler supports the `.popsection'
   directive.  */
/* #undef	HAVE_ASM_POPSECTION_DIRECTIVE */

/* Define to the prefix Alpha/ELF GCC emits before ..ng symbols.  */
/* #undef  ASM_ALPHA_NG_SYMBOL_PREFIX */

/* Define if versioning of the library is wanted.  */
#define	DO_VERSIONING 1

/* Defined to the oldest ABI we support, like 2.1.  */
/* #undef GLIBC_OLDEST_ABI */

/* Define if static NSS modules are wanted.  */
/* #undef	DO_STATIC_NSS */

/* Define if gcc uses DWARF2 unwind information for exception support.  */
/* #undef	HAVE_DWARF2_UNWIND_INFO */

/* Define if gcc uses DWARF2 unwind information for exception support
   with static variable. */
/* #undef	HAVE_DWARF2_UNWIND_INFO_STATIC */

/* Define if the compiler supports __builtin_expect.  */
#define	HAVE_BUILTIN_EXPECT 1

/* Define if the compiler supports __builtin_memset.  */
/* #undef	HAVE_BUILTIN_MEMSET */

/* Define if the __thread keyword is supported.  */
/* #undef HAVE___THREAD */

/* Define if the regparm attribute shall be used for local functions
   (gcc on ix86 only).  */
#define	USE_REGPARMS 1

/* Defined on PowerPC if the GCC being used has a problem with clobbering
   certain registers (CR0, MQ, CTR, LR) in asm statements.  */
/* #undef	BROKEN_PPC_ASM_CR0 */

/* Define if the linker supports the -z combreloc option.  */
#define	HAVE_Z_COMBRELOC 1

/* Define if the assembler supported .protected.  */
#define	HAVE_PROTECTED 1

/* Define if the assembler supported .hidden.  */
#define	HAVE_HIDDEN 1

/* Define if the compiler supports __attribute__ ((visibility (...))).  */
/* #undef	HAVE_VISIBILITY_ATTRIBUTE */

/* Define if the compiler doesn't support __attribute__ ((visibility (...)))
   together with __asm__ redirection properly.  */
/* #undef	HAVE_BROKEN_VISIBILITY_ATTRIBUTE */

/* Define if the compiler doesn't support __attribute__ ((alias (...)))
   together with __asm__ redirection properly.  */
/* #undef	HAVE_BROKEN_ALIAS_ATTRIBUTE */

/* Define if _rtld_local structure should be forced into .sdata section.  */
/* #undef	HAVE_SDATA_SECTION */

/* Define if binutils support TLS handling.  */
/* #undef	HAVE_TLS_SUPPORT */

/* Define if the linker supports .preinit_array/.init_array/.fini_array
   sections.  */
#define	HAVE_INITFINI_ARRAY 1

/* Define if the access to static and hidden variables is position independent
   and does not need relocations.  */
#define	PI_STATIC_AND_HIDDEN 1

/* Define this to disable the `hidden_proto' et al macros in
   include/libc-symbols.h that avoid PLT slots in the shared objects.  */
/* #undef	NO_HIDDEN */


/* Defined to some form of __attribute__ ((...)) if the compiler supports
   a different, more efficient calling convention.  */
#if defined USE_REGPARMS && !defined PROF && !defined __BOUNDED_POINTERS__
# define internal_function __attribute__ ((regparm (3), stdcall))
#endif

/* Linux specific: minimum supported kernel version.  */
/* #undef	__LINUX_KERNEL_VERSION */

/* Override abi-tags ABI version if necessary.  */
/* #undef  __ABI_TAG_VERSION */

/* An extension in gcc 2.96 and up allows the subtraction of two
   local labels.  */
#define	HAVE_SUBTRACT_LOCAL_LABELS 1

/* bash 2.0 introduced the _XXX_GNU_nonoption_argv_flags_ variable to help
   getopt determine whether a parameter is a flag or not.  This features
   was disabled later since it caused trouble.  We are by default therefore
   disabling the support as well.  */
/* #undef USE_NONOPTION_FLAGS */

/* Mach/Hurd specific: define if mig supports the `retcode' keyword.  */
/* #undef	HAVE_MIG_RETCODE */

/* Mach specific: define if the `host_page_size' RPC is available.  */
/* #undef	HAVE_HOST_PAGE_SIZE */

/* Mach/i386 specific: define if the `i386_io_perm_*' RPCs are available.  */
/* #undef	HAVE_I386_IO_PERM_MODIFY */

/*
 */

#ifndef	_LIBC

/* These symbols might be defined by some sysdeps configures.
   They are used only in miscellaneous generator programs, not
   in compiling libc itself.   */

/* sysdeps/generic/configure.in */
/* #undef	HAVE_PSIGNAL */

/* sysdeps/unix/configure.in */
/* #undef	HAVE_STRERROR */

/* sysdeps/unix/common/configure.in */
/* #undef	HAVE_SYS_SIGLIST */
/* #undef	HAVE__SYS_SIGLIST */
/* #undef	HAVE__CTYPE_ */
/* #undef	HAVE___CTYPE_ */
/* #undef	HAVE___CTYPE */
/* #undef	HAVE__CTYPE__ */
/* #undef	HAVE__CTYPE */
/* #undef	HAVE__LOCP */

#endif

/*
 */

#ifdef	_LIBC

/* The zic and zdump programs need these definitions.  */

#define	HAVE_STRERROR	1

/* The locale code needs these definitions.  */

#define HAVE_REGEX 1

#endif

Attachment: config.status
Description: config status


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]