This is the mail archive of the
libc-ports@sources.redhat.com
mailing list for the libc-ports project.
Re: MIPS build updates
- From: Daniel Jacobowitz <drow at false dot org>
- To: Atsushi Nemoto <anemo at mba dot ocn dot ne dot jp>
- Cc: libc-ports at sourceware dot org
- Date: Mon, 8 Jan 2007 10:27:32 -0500
- Subject: Re: MIPS build updates
- References: <20060508192356.GA13927@nevyn.them.org> <20070105.115711.63741881.nemoto@toshiba-tops.co.jp>
On Fri, Jan 05, 2007 at 11:57:11AM +0900, Atsushi Nemoto wrote:
> This cause a "extra tokens at end of #ifndef directive" warning.
>
> And it woule be better to make __LDSODEFS_H and _MIPS_LDSODEFS_H
> consistent. (_MIPS_LDSODEFS_H is already used in
> sysdeps/mips/elf/ldsodefs.h so using __LDSODEFS_H is preferred?)
Getting rid of the extra file is preferred, really. After checking
with Richard I committed this. Thank you for noticing.
--
Daniel Jacobowitz
CodeSourcery
Index: ChangeLog.mips
===================================================================
RCS file: /cvs/glibc/ports/ChangeLog.mips,v
retrieving revision 1.27
diff -u -p -r1.27 ChangeLog.mips
--- ChangeLog.mips 5 Jan 2007 02:21:53 -0000 1.27
+++ ChangeLog.mips 8 Jan 2007 15:26:41 -0000
@@ -1,3 +1,9 @@
+2007-01-08 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * sysdeps/mips/ldsodefs.h: Merge sysdeps/mips/elf/ldsodefs.h. Correct
+ multiple inclusion guard.
+ * sysdeps/mips/elf/ldsodefs.h: Delete file.
+
2007-01-04 Thiemo Seufer <ths@networkno.de>
* sysdeps/unix/sysv/linux/mips/bits/msq.h (struct msqid_ds): Update
Index: sysdeps/mips/ldsodefs.h
===================================================================
RCS file: /cvs/glibc/ports/sysdeps/mips/ldsodefs.h,v
retrieving revision 1.1
diff -u -p -r1.1 ldsodefs.h
--- sysdeps/mips/ldsodefs.h 8 May 2006 19:19:56 -0000 1.1
+++ sysdeps/mips/ldsodefs.h 8 Jan 2007 15:26:41 -0000
@@ -1,5 +1,5 @@
/* Run-time dynamic linker data structures for loaded ELF shared objects.
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2002, 2003, 2006, 2007 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
@@ -17,7 +17,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#ifndef __LDSODEFS_H \
+#ifndef _MIPS_LDSODEFS_H
#define _MIPS_LDSODEFS_H 1
#include <elf.h>
@@ -61,6 +61,90 @@ struct La_mips_64_retval;
struct La_mips_64_retval *, \
const char *);
+/* The MIPS ABI specifies that the dynamic section has to be read-only. */
+
+#define DL_RO_DYN_SECTION 1
+
#include_next <ldsodefs.h>
+/* The 64-bit MIPS ELF ABI uses an unusual reloc format. Each
+ relocation entry specifies up to three actual relocations, all at
+ the same address. The first relocation which required a symbol
+ uses the symbol in the r_sym field. The second relocation which
+ requires a symbol uses the symbol in the r_ssym field. If all
+ three relocations require a symbol, the third one uses a zero
+ value.
+
+ We define these structures in internal headers because we're not
+ sure we want to make them part of the ABI yet. Eventually, some of
+ this may move into elf/elf.h. */
+
+/* An entry in a 64 bit SHT_REL section. */
+
+typedef struct
+{
+ Elf32_Word r_sym; /* Symbol index */
+ unsigned char r_ssym; /* Special symbol for 2nd relocation */
+ unsigned char r_type3; /* 3rd relocation type */
+ unsigned char r_type2; /* 2nd relocation type */
+ unsigned char r_type1; /* 1st relocation type */
+} _Elf64_Mips_R_Info;
+
+typedef union
+{
+ Elf64_Xword r_info_number;
+ _Elf64_Mips_R_Info r_info_fields;
+} _Elf64_Mips_R_Info_union;
+
+typedef struct
+{
+ Elf64_Addr r_offset; /* Address */
+ _Elf64_Mips_R_Info_union r_info; /* Relocation type and symbol index */
+} Elf64_Mips_Rel;
+
+typedef struct
+{
+ Elf64_Addr r_offset; /* Address */
+ _Elf64_Mips_R_Info_union r_info; /* Relocation type and symbol index */
+ Elf64_Sxword r_addend; /* Addend */
+} Elf64_Mips_Rela;
+
+#define ELF64_MIPS_R_SYM(i) \
+ ((__extension__ (_Elf64_Mips_R_Info_union)(i)).r_info_fields.r_sym)
+#define ELF64_MIPS_R_TYPE(i) \
+ (((_Elf64_Mips_R_Info_union)(i)).r_info_fields.r_type1 \
+ | ((Elf32_Word)(__extension__ (_Elf64_Mips_R_Info_union)(i) \
+ ).r_info_fields.r_type2 << 8) \
+ | ((Elf32_Word)(__extension__ (_Elf64_Mips_R_Info_union)(i) \
+ ).r_info_fields.r_type3 << 16) \
+ | ((Elf32_Word)(__extension__ (_Elf64_Mips_R_Info_union)(i) \
+ ).r_info_fields.r_ssym << 24))
+#define ELF64_MIPS_R_INFO(sym, type) \
+ (__extension__ (_Elf64_Mips_R_Info_union) \
+ (__extension__ (_Elf64_Mips_R_Info) \
+ { (sym), ELF64_MIPS_R_SSYM (type), \
+ ELF64_MIPS_R_TYPE3 (type), \
+ ELF64_MIPS_R_TYPE2 (type), \
+ ELF64_MIPS_R_TYPE1 (type) \
+ }).r_info_number)
+/* These macros decompose the value returned by ELF64_MIPS_R_TYPE, and
+ compose it back into a value that it can be used as an argument to
+ ELF64_MIPS_R_INFO. */
+#define ELF64_MIPS_R_SSYM(i) (((i) >> 24) & 0xff)
+#define ELF64_MIPS_R_TYPE3(i) (((i) >> 16) & 0xff)
+#define ELF64_MIPS_R_TYPE2(i) (((i) >> 8) & 0xff)
+#define ELF64_MIPS_R_TYPE1(i) ((i) & 0xff)
+#define ELF64_MIPS_R_TYPEENC(type1, type2, type3, ssym) \
+ ((type1) \
+ | ((Elf32_Word)(type2) << 8) \
+ | ((Elf32_Word)(type3) << 16) \
+ | ((Elf32_Word)(ssym) << 24))
+
+#undef ELF64_R_SYM
+#define ELF64_R_SYM(i) ELF64_MIPS_R_SYM (i)
+#undef ELF64_R_TYPE
+#define ELF64_R_TYPE(i) ELF64_MIPS_R_TYPE (i)
+#undef ELF64_R_INFO
+#define ELF64_R_INFO(sym, type) ELF64_MIPS_R_INFO ((sym), (type))
+
#endif
Index: sysdeps/mips/elf/ldsodefs.h
===================================================================
RCS file: sysdeps/mips/elf/ldsodefs.h
diff -N sysdeps/mips/elf/ldsodefs.h
--- sysdeps/mips/elf/ldsodefs.h 22 Mar 2003 15:07:05 -0000 1.4
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,109 +0,0 @@
-/* Run-time dynamic linker data structures for loaded ELF shared objects.
- Copyright (C) 2000, 2002, 2003 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 _MIPS_LDSODEFS_H
-#define _MIPS_LDSODEFS_H
-
-/* The MIPS ABI specifies that the dynamic section has to be read-only. */
-
-#define DL_RO_DYN_SECTION 1
-
-#include_next <ldsodefs.h>
-
-/* The 64-bit MIPS ELF ABI uses an unusual reloc format. Each
- relocation entry specifies up to three actual relocations, all at
- the same address. The first relocation which required a symbol
- uses the symbol in the r_sym field. The second relocation which
- requires a symbol uses the symbol in the r_ssym field. If all
- three relocations require a symbol, the third one uses a zero
- value.
-
- We define these structures in internal headers because we're not
- sure we want to make them part of the ABI yet. Eventually, some of
- this may move into elf/elf.h. */
-
-/* An entry in a 64 bit SHT_REL section. */
-
-typedef struct
-{
- Elf32_Word r_sym; /* Symbol index */
- unsigned char r_ssym; /* Special symbol for 2nd relocation */
- unsigned char r_type3; /* 3rd relocation type */
- unsigned char r_type2; /* 2nd relocation type */
- unsigned char r_type1; /* 1st relocation type */
-} _Elf64_Mips_R_Info;
-
-typedef union
-{
- Elf64_Xword r_info_number;
- _Elf64_Mips_R_Info r_info_fields;
-} _Elf64_Mips_R_Info_union;
-
-typedef struct
-{
- Elf64_Addr r_offset; /* Address */
- _Elf64_Mips_R_Info_union r_info; /* Relocation type and symbol index */
-} Elf64_Mips_Rel;
-
-typedef struct
-{
- Elf64_Addr r_offset; /* Address */
- _Elf64_Mips_R_Info_union r_info; /* Relocation type and symbol index */
- Elf64_Sxword r_addend; /* Addend */
-} Elf64_Mips_Rela;
-
-#define ELF64_MIPS_R_SYM(i) \
- ((__extension__ (_Elf64_Mips_R_Info_union)(i)).r_info_fields.r_sym)
-#define ELF64_MIPS_R_TYPE(i) \
- (((_Elf64_Mips_R_Info_union)(i)).r_info_fields.r_type1 \
- | ((Elf32_Word)(__extension__ (_Elf64_Mips_R_Info_union)(i) \
- ).r_info_fields.r_type2 << 8) \
- | ((Elf32_Word)(__extension__ (_Elf64_Mips_R_Info_union)(i) \
- ).r_info_fields.r_type3 << 16) \
- | ((Elf32_Word)(__extension__ (_Elf64_Mips_R_Info_union)(i) \
- ).r_info_fields.r_ssym << 24))
-#define ELF64_MIPS_R_INFO(sym, type) \
- (__extension__ (_Elf64_Mips_R_Info_union) \
- (__extension__ (_Elf64_Mips_R_Info) \
- { (sym), ELF64_MIPS_R_SSYM (type), \
- ELF64_MIPS_R_TYPE3 (type), \
- ELF64_MIPS_R_TYPE2 (type), \
- ELF64_MIPS_R_TYPE1 (type) \
- }).r_info_number)
-/* These macros decompose the value returned by ELF64_MIPS_R_TYPE, and
- compose it back into a value that it can be used as an argument to
- ELF64_MIPS_R_INFO. */
-#define ELF64_MIPS_R_SSYM(i) (((i) >> 24) & 0xff)
-#define ELF64_MIPS_R_TYPE3(i) (((i) >> 16) & 0xff)
-#define ELF64_MIPS_R_TYPE2(i) (((i) >> 8) & 0xff)
-#define ELF64_MIPS_R_TYPE1(i) ((i) & 0xff)
-#define ELF64_MIPS_R_TYPEENC(type1, type2, type3, ssym) \
- ((type1) \
- | ((Elf32_Word)(type2) << 8) \
- | ((Elf32_Word)(type3) << 16) \
- | ((Elf32_Word)(ssym) << 24))
-
-#undef ELF64_R_SYM
-#define ELF64_R_SYM(i) ELF64_MIPS_R_SYM (i)
-#undef ELF64_R_TYPE
-#define ELF64_R_TYPE(i) ELF64_MIPS_R_TYPE (i)
-#undef ELF64_R_INFO
-#define ELF64_R_INFO(sym, type) ELF64_MIPS_R_INFO ((sym), (type))
-
-#endif