(ELF_MACHINE_START_ADDRESS): Define.
[kopensolaris-gnu/glibc.git] / sysdeps / hppa / dl-machine.h
index e6782b3..a3437b5 100644 (file)
@@ -1,5 +1,5 @@
 /* Machine-dependent ELF dynamic relocation inline functions.  PA-RISC version.
-   Copyright (C) 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1995,1996,1997,1999,2000,2001 Free Software Foundation, Inc.
    Contributed by David Huggins-Daines <dhd@debian.org>
    This file is part of the GNU C Library.
 
@@ -59,11 +59,11 @@ extern int __fptr_count;
 extern Elf32_Addr __hppa_make_fptr (const struct link_map *, Elf32_Addr,
                                    struct hppa_fptr **, struct hppa_fptr *);
 
-/* Return nonzero iff E_MACHINE is compatible with the running host.  */
+/* Return nonzero iff ELF header is compatible with the running host.  */
 static inline int
-elf_machine_matches_host (Elf32_Half e_machine)
+elf_machine_matches_host (const Elf32_Ehdr *ehdr)
 {
-  return e_machine == EM_PARISC;
+  return ehdr->e_machine == EM_PARISC;
 }
 
 
@@ -252,7 +252,7 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
        .text
        .globl _start
        .type _start,@function
-_start:        
+_start:
        /* The kernel does not give us an initial stack frame. */
        ldo     64(%sp),%sp
        /* Save the relevant arguments (yes, those are the correct
@@ -357,7 +357,7 @@ _dl_start_user:
        ldw     RT'_dl_loaded(%r1),%r26
        ldw     0(%r26),%r26
        /* envp = argv + argc + 1 */
-       sh2add  %r25,%r24,%r23  
+       sh2add  %r25,%r24,%r23
        bl      _dl_init,%r2
        ldo     4(%r23),%r23    /* delay slot */
 
@@ -448,6 +448,10 @@ __dl_fini_plabel:
 /* We only use RELA. */
 #define ELF_MACHINE_NO_REL 1
 
+/* Return the address of the entry point. */
+#define ELF_MACHINE_START_ADDRESS(map, start) \
+  DL_FUNCTION_ADDRESS (map, start)
+
 #endif /* !dl_machine_h */
 
 /* These are only actually used where RESOLVE_MAP is defined, anyway. */
@@ -575,10 +579,10 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
          const char *strtab;
 
          strtab = (const char *) D_PTR (map, l_info[DT_STRTAB]);
-         _dl_sysdep_error (_dl_argv[0] ?: "<program name unknown>",
-                           ": Symbol `", strtab + refsym->st_name,
-                           "' has different size in shared object, "
-                           "consider re-linking\n", NULL);
+         _dl_error_printf ("\
+%s: Symbol `%s' has different size in shared object, consider re-linking\n",
+                           _dl_argv[0] ?: "<program name unknown>",
+                           strtab + refsym->st_name);
        }
       memcpy (reloc_addr, (void *) value,
              MIN (sym->st_size, refsym->st_size));