summaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2006-08-25 06:45:16 +0000
committerJakub Jelinek <jakub@redhat.com>2006-08-25 06:45:16 +0000
commit44731509844946ccd2c2ee1de87901c171dadcc5 (patch)
tree83e065c21bd400661e9a594289ec3114cd10d051 /sysdeps
parent4728cb644861ff8c58586702bf6815c50a1c0dd2 (diff)
Updated to fedora-glibc-20060825T0639
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/generic/ldsodefs.h6
-rw-r--r--sysdeps/i386/bits/byteswap.h5
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h4
3 files changed, 8 insertions, 7 deletions
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
index ef2b685393..b7d0f9b7e7 100644
--- a/sysdeps/generic/ldsodefs.h
+++ b/sysdeps/generic/ldsodefs.h
@@ -59,8 +59,8 @@ __BEGIN_DECLS
/* Result of the lookup functions and how to retrieve the base address. */
typedef struct link_map *lookup_t;
-# define LOOKUP_VALUE(map) map
-# define LOOKUP_VALUE_ADDRESS(map) ((map) ? (map)->l_addr : 0)
+#define LOOKUP_VALUE(map) map
+#define LOOKUP_VALUE_ADDRESS(map) ((map) ? (map)->l_addr : 0)
/* On some architectures a pointer to a function is not just a pointer
to the actual code of the function but rather an architecture
@@ -76,7 +76,7 @@ typedef struct link_map *lookup_t;
/* On some architectures dladdr can't use st_size of all symbols this way. */
#define DL_ADDR_SYM_MATCH(L, SYM, MATCHSYM, ADDR) \
((ADDR) >= (L)->l_addr + (SYM)->st_value \
- && (((SYM)->st_size == 0 \
+ && ((((SYM)->st_shndx == SHN_UNDEF || (SYM)->st_size == 0) \
&& (ADDR) == (L)->l_addr + (SYM)->st_value) \
|| (ADDR) < (L)->l_addr + (SYM)->st_value + (SYM)->st_size) \
&& ((MATCHSYM) == NULL || (MATCHSYM)->st_value < (SYM)->st_value))
diff --git a/sysdeps/i386/bits/byteswap.h b/sysdeps/i386/bits/byteswap.h
index 33af208888..bed27559c5 100644
--- a/sysdeps/i386/bits/byteswap.h
+++ b/sysdeps/i386/bits/byteswap.h
@@ -1,5 +1,5 @@
/* Macros to swap the order of bytes in integer values.
- Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1997,1998,2000,2002,2003,2006 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
@@ -65,7 +65,8 @@ __bswap_16 (unsigned short int __bsx)
/* To swap the bytes in a word the i486 processors and up provide the
`bswap' opcode. On i386 we have to use three instructions. */
# if !defined __i486__ && !defined __pentium__ && !defined __pentiumpro__ \
- && !defined __pentium4__
+ && !defined __pentium4__ && !defined __k8__ && !defined __athlon__ \
+ && !defined __k6__
# define __bswap_32(x) \
(__extension__ \
({ register unsigned int __v, __x = (x); \
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h
index 1ead3dd63d..ac4a0d5aa9 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h
@@ -1,5 +1,5 @@
/* Run-time dynamic linker data structures for loaded ELF shared objects.
- Copyright (C) 2005 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2006 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
@@ -47,7 +47,7 @@ _dl_ppc64_addr_sym_match (const struct link_map *l, const ElfW(Sym) *sym,
return false;
}
}
- else if (sym->st_size == 0)
+ else if (sym->st_shndx == SHN_UNDEF || sym->st_size == 0)
{
if (addr != value)
return false;