patches/glibc/2.2.5/dl-machine-m68k.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Jul 28 21:34:41 2007 +0000 (2007-07-28)
changeset 301 2be7232a73ac
permissions -rw-r--r--
Bump version to 0.2.2.
yann@1
     1
Retrieved with
yann@1
     2
 wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/m68k/dl-machine.h.diff?r1=1.53&r2=1.55&cvsroot=glibc'
yann@1
     3
yann@1
     4
Fixes error
yann@1
     5
yann@1
     6
In file included from dynamic-link.h:21,
yann@1
     7
                 from dl-load.c:32:
yann@1
     8
../sysdeps/m68k/dl-machine.h:108: error: parse error before '.' token
yann@1
     9
../sysdeps/m68k/dl-machine.h:109: error: stray '@' in program
yann@1
    10
../sysdeps/m68k/dl-machine.h:120: error: syntax error at '#' token
yann@1
    11
../sysdeps/m68k/dl-machine.h:123: error: stray '\' in program
yann@1
    12
../sysdeps/m68k/dl-machine.h:123: error: missing terminating " character
yann@1
    13
../sysdeps/m68k/dl-machine.h:148: error: stray '@' in program
yann@1
    14
../sysdeps/m68k/dl-machine.h:152: error: syntax error at '#' token
yann@1
    15
../sysdeps/m68k/dl-machine.h:156: error: stray '@' in program
yann@1
    16
../sysdeps/m68k/dl-machine.h:161: error: stray '@' in program
yann@1
    17
../sysdeps/m68k/dl-machine.h:163: error: stray '@' in program
yann@1
    18
../sysdeps/m68k/dl-machine.h:166: error: stray '@' in program
yann@1
    19
In file included from dynamic-link.h:21,
yann@1
    20
                 from dl-load.c:32:
yann@1
    21
../sysdeps/m68k/dl-machine.h:175:4: invalid preprocessing directive #Call
yann@1
    22
../sysdeps/m68k/dl-machine.h:179: error: stray '@' in program
yann@1
    23
../sysdeps/m68k/dl-machine.h:180: error: stray '@' in program
yann@1
    24
../sysdeps/m68k/dl-machine.h:181: error: syntax error at '#' token
yann@1
    25
../sysdeps/m68k/dl-machine.h:182: error: syntax error at '#' token
yann@1
    26
../sysdeps/m68k/dl-machine.h:184: error: stray '@' in program
yann@1
    27
../sysdeps/m68k/dl-machine.h:187: error: missing terminating ' character
yann@1
    28
../sysdeps/m68k/dl-machine.h:190: error: missing terminating " character
yann@1
    29
dl-load.c: In function `_dl_map_object_from_fd':
yann@1
    30
dl-load.c:1089: warning: use of cast expressions as lvalues is deprecated
yann@1
    31
dl-load.c:1089: warning: use of cast expressions as lvalues is deprecated
yann@1
    32
dl-load.c:1109: warning: use of cast expressions as lvalues is deprecated
yann@1
    33
dl-load.c:1109: warning: use of cast expressions as lvalues is deprecated
yann@1
    34
make[2]: *** [/home/dank/wk/crosstool-0.28-rc24/build/m68k-unknown-linux-gnu/gcc-3.4.0-glibc-2.2.5/build-glibc/elf/dl-load.o] Error 1
yann@1
    35
yann@1
    36
===================================================================
yann@1
    37
RCS file: /cvs/glibc/libc/sysdeps/m68k/dl-machine.h,v
yann@1
    38
retrieving revision 1.53
yann@1
    39
retrieving revision 1.55
yann@1
    40
diff -u -r1.53 -r1.55
yann@1
    41
--- libc/sysdeps/m68k/dl-machine.h	2001/08/26 22:26:36	1.53
yann@1
    42
+++ libc/sysdeps/m68k/dl-machine.h	2002/02/01 10:28:20	1.55
yann@1
    43
@@ -1,5 +1,5 @@
yann@1
    44
 /* Machine-dependent ELF dynamic relocation inline functions.  m68k version.
yann@1
    45
-   Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc.
yann@1
    46
+   Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
yann@1
    47
    This file is part of the GNU C Library.
yann@1
    48
 
yann@1
    49
    The GNU C Library is free software; you can redistribute it and/or
yann@1
    50
@@ -85,11 +85,11 @@
yann@1
    51
 	{
yann@1
    52
 	  got[2] = (Elf32_Addr) &_dl_runtime_profile;
yann@1
    53
 
yann@1
    54
-	  if (_dl_name_match_p (_dl_profile, l))
yann@1
    55
+	  if (_dl_name_match_p (GL(dl_profile), l))
yann@1
    56
 	    {
yann@1
    57
 	      /* This is the object we are looking for.  Say that we really
yann@1
    58
 		 want profiling and the timers are started.  */
yann@1
    59
-	      _dl_profile_map = l;
yann@1
    60
+	      GL(dl_profile_map) = l;
yann@1
    61
 	    }
yann@1
    62
 	}
yann@1
    63
       else
yann@1
    64
@@ -104,22 +104,22 @@
yann@1
    65
 /* This code is used in dl-runtime.c to call the `fixup' function
yann@1
    66
    and then redirect to the address it returns.  */
yann@1
    67
 #define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name) \
yann@1
    68
-"| Trampoline for " #fixup_name "
yann@1
    69
-	.globl " #tramp_name "
yann@1
    70
-	.type " #tramp_name ", @function
yann@1
    71
-" #tramp_name ":
yann@1
    72
-	| Save %a0 (struct return address) and %a1.
yann@1
    73
-	move.l %a0, -(%sp)
yann@1
    74
-	move.l %a1, -(%sp)
yann@1
    75
-	| Call the real address resolver.
yann@1
    76
-	jbsr " #fixup_name "
yann@1
    77
-	| Restore register %a0 and %a1.
yann@1
    78
-	move.l (%sp)+, %a1
yann@1
    79
-	move.l (%sp)+, %a0
yann@1
    80
-	| Pop parameters
yann@1
    81
-	addq.l #8, %sp
yann@1
    82
-	| Call real function.
yann@1
    83
-	jmp (%d0)
yann@1
    84
+"| Trampoline for " #fixup_name "\n\
yann@1
    85
+	.globl " #tramp_name "\n\
yann@1
    86
+	.type " #tramp_name ", @function\n\
yann@1
    87
+" #tramp_name ":\n\
yann@1
    88
+	| Save %a0 (struct return address) and %a1.\n\
yann@1
    89
+	move.l %a0, -(%sp)\n\
yann@1
    90
+	move.l %a1, -(%sp)\n\
yann@1
    91
+	| Call the real address resolver.\n\
yann@1
    92
+	jbsr " #fixup_name "\n\
yann@1
    93
+	| Restore register %a0 and %a1.\n\
yann@1
    94
+	move.l (%sp)+, %a1\n\
yann@1
    95
+	move.l (%sp)+, %a0\n\
yann@1
    96
+	| Pop parameters\n\
yann@1
    97
+	addq.l #8, %sp\n\
yann@1
    98
+	| Call real function.\n\
yann@1
    99
+	jmp (%d0)\n\
yann@1
   100
 	.size " #tramp_name ", . - " #tramp_name "\n"
yann@1
   101
 #ifndef PROF
yann@1
   102
 #define ELF_MACHINE_RUNTIME_TRAMPOLINE \
yann@1
   103
@@ -143,50 +143,50 @@
yann@1
   104
    its return value is the user program's entry point.  */
yann@1
   105
 
yann@1
   106
 #define RTLD_START asm ("\
yann@1
   107
-	.text
yann@1
   108
-	.globl _start
yann@1
   109
-	.type _start,@function
yann@1
   110
-_start:
yann@1
   111
-	move.l %sp, -(%sp)
yann@1
   112
-	jbsr _dl_start
yann@1
   113
-	addq.l #4, %sp
yann@1
   114
-	/* FALLTHRU */
yann@1
   115
-
yann@1
   116
-	.globl _dl_start_user
yann@1
   117
-	.type _dl_start_user,@function
yann@1
   118
-_dl_start_user:
yann@1
   119
-	| Save the user entry point address in %a4.
yann@1
   120
-	move.l %d0, %a4
yann@1
   121
-	| Point %a5 at the GOT.
yann@1
   122
-	lea _GLOBAL_OFFSET_TABLE_@GOTPC(%pc), %a5
yann@1
   123
-	| Remember the highest stack address.
yann@1
   124
-	move.l %sp, ([__libc_stack_end@GOT.w, %a5])
yann@1
   125
-	| See if we were run as a command with the executable file
yann@1
   126
-	| name as an extra leading argument.
yann@1
   127
-	move.l ([_dl_skip_args@GOT.w, %a5]), %d0
yann@1
   128
-	| Pop the original argument count
yann@1
   129
-	move.l (%sp)+, %d1
yann@1
   130
-	| Subtract _dl_skip_args from it.
yann@1
   131
-	sub.l %d0, %d1
yann@1
   132
-	| Adjust the stack pointer to skip _dl_skip_args words.
yann@1
   133
-	lea (%sp, %d0*4), %sp
yann@1
   134
-	| Push back the modified argument count.
yann@1
   135
-	move.l %d1, -(%sp)
yann@1
   136
-	# Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env)
yann@1
   137
-	pea 8(%sp, %d1*4)
yann@1
   138
-	pea 8(%sp)
yann@1
   139
-	move.l %d1, -(%sp)
yann@1
   140
-	move.l ([_dl_loaded@GOT.w, %a5]), -(%sp)
yann@1
   141
-	jbsr _dl_init@PLTPC
yann@1
   142
-	addq.l #8, %sp
yann@1
   143
-	addq.l #8, %sp
yann@1
   144
-	| Pass our finalizer function to the user in %a1.
yann@1
   145
-	move.l _dl_fini@GOT.w(%a5), %a1
yann@1
   146
-	| Initialize %fp with the stack pointer.
yann@1
   147
-	move.l %sp, %fp
yann@1
   148
-	| Jump to the user's entry point.
yann@1
   149
-	jmp (%a4)
yann@1
   150
-	.size _dl_start_user, . - _dl_start_user
yann@1
   151
+	.text\n\
yann@1
   152
+	.globl _start\n\
yann@1
   153
+	.type _start,@function\n\
yann@1
   154
+_start:\n\
yann@1
   155
+	move.l %sp, -(%sp)\n\
yann@1
   156
+	jbsr _dl_start\n\
yann@1
   157
+	addq.l #4, %sp\n\
yann@1
   158
+	/* FALLTHRU */\n\
yann@1
   159
+\n\
yann@1
   160
+	.globl _dl_start_user\n\
yann@1
   161
+	.type _dl_start_user,@function\n\
yann@1
   162
+_dl_start_user:\n\
yann@1
   163
+	| Save the user entry point address in %a4.\n\
yann@1
   164
+	move.l %d0, %a4\n\
yann@1
   165
+	| Point %a5 at the GOT.\n\
yann@1
   166
+	lea _GLOBAL_OFFSET_TABLE_@GOTPC(%pc), %a5\n\
yann@1
   167
+	| Remember the highest stack address.\n\
yann@1
   168
+	move.l %sp, ([__libc_stack_end@GOT.w, %a5])\n\
yann@1
   169
+	| See if we were run as a command with the executable file\n\
yann@1
   170
+	| name as an extra leading argument.\n\
yann@1
   171
+	move.l ([_dl_skip_args@GOT.w, %a5]), %d0\n\
yann@1
   172
+	| Pop the original argument count\n\
yann@1
   173
+	move.l (%sp)+, %d1\n\
yann@1
   174
+	| Subtract _dl_skip_args from it.\n\
yann@1
   175
+	sub.l %d0, %d1\n\
yann@1
   176
+	| Adjust the stack pointer to skip _dl_skip_args words.\n\
yann@1
   177
+	lea (%sp, %d0*4), %sp\n\
yann@1
   178
+	| Push back the modified argument count.\n\
yann@1
   179
+	move.l %d1, -(%sp)\n\
yann@1
   180
+	# Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env)\n\
yann@1
   181
+	pea 8(%sp, %d1*4)\n\
yann@1
   182
+	pea 8(%sp)\n\
yann@1
   183
+	move.l %d1, -(%sp)\n\
yann@1
   184
+	move.l ([_rtld_global@GOT.w, %a5]), -(%sp)\n\
yann@1
   185
+	jbsr _dl_init@PLTPC\n\
yann@1
   186
+	addq.l #8, %sp\n\
yann@1
   187
+	addq.l #8, %sp\n\
yann@1
   188
+	| Pass our finalizer function to the user in %a1.\n\
yann@1
   189
+	move.l _dl_fini@GOT.w(%a5), %a1\n\
yann@1
   190
+	| Initialize %fp with the stack pointer.\n\
yann@1
   191
+	move.l %sp, %fp\n\
yann@1
   192
+	| Jump to the user's entry point.\n\
yann@1
   193
+	jmp (%a4)\n\
yann@1
   194
+	.size _dl_start_user, . - _dl_start_user\n\
yann@1
   195
 	.previous");
yann@1
   196
 
yann@1
   197
 /* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so
yann@1
   198
@@ -251,7 +251,7 @@
yann@1
   199
 	       found.  */
yann@1
   200
 	    break;
yann@1
   201
 	  if (sym->st_size > refsym->st_size
yann@1
   202
-	      || (sym->st_size < refsym->st_size && _dl_verbose))
yann@1
   203
+	      || (sym->st_size < refsym->st_size && GL(dl_verbose)))
yann@1
   204
 	    {
yann@1
   205
 	      extern char **_dl_argv;
yann@1
   206
 	      const char *strtab;