1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00
* manual/Makefile (TEXI2PDF): Change to texi2dvi --pdf.
	Suggested by Minko Markov <mmarkov@home.com>.

2001-01-02  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* sysdeps/powerpc/elf/start.S (__data_start): Make it global.
	* sysdeps/powerpc/dl-machine.c (dl_reloc_overflow): Print the name of
	the failing symbol.
	(__process_machine_rela): Pass symbol to dl_reloc_overflow().

2001-01-02  Ben Collins  <bcollins@debian.org>

	* time/tzset.c (tzset_internal): Make sure we fall back to UTC
	if TZ is not set and TZDEFAULT is not present.

2001-01-01  Ben Collins  <bcollins@debian.org>

	* string/strings.h: Make sure we declare our functions even if
	string.h is already included, based on whether or not __USE_BSD is
	defined.

2001-01-02  Ulrich Drepper  <drepper@redhat.com>

	* dlfcn/dlerror.c (dlerror): Handle call of dlerror() before any
	other dlopen() and dlsym().
	Based on a patch by Ben Collins <bcollins@debian.org>.

2001-01-02  Andreas Jaeger  <aj@suse.de>

	* dlfcn/errmsg1.c (main): Call dlerror initially.
	Reported by Ben Collins <bcollins@debian.org>.

2001-01-02  Ulrich Drepper  <drepper@redhat.com>
This commit is contained in:
Ulrich Drepper
2001-01-03 04:50:22 +00:00
parent 3470b82679
commit fb0dd05043
8 changed files with 82 additions and 29 deletions

View File

@ -1,3 +1,37 @@
2001-01-02 Ulrich Drepper <drepper@redhat.com>
* manual/Makefile (TEXI2PDF): Change to texi2dvi --pdf.
Suggested by Minko Markov <mmarkov@home.com>.
2001-01-02 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
* sysdeps/powerpc/elf/start.S (__data_start): Make it global.
* sysdeps/powerpc/dl-machine.c (dl_reloc_overflow): Print the name of
the failing symbol.
(__process_machine_rela): Pass symbol to dl_reloc_overflow().
2001-01-02 Ben Collins <bcollins@debian.org>
* time/tzset.c (tzset_internal): Make sure we fall back to UTC
if TZ is not set and TZDEFAULT is not present.
2001-01-01 Ben Collins <bcollins@debian.org>
* string/strings.h: Make sure we declare our functions even if
string.h is already included, based on whether or not __USE_BSD is
defined.
2001-01-02 Ulrich Drepper <drepper@redhat.com>
* dlfcn/dlerror.c (dlerror): Handle call of dlerror() before any
other dlopen() and dlsym().
Based on a patch by Ben Collins <bcollins@debian.org>.
2001-01-02 Andreas Jaeger <aj@suse.de>
* dlfcn/errmsg1.c (main): Call dlerror initially.
Reported by Ben Collins <bcollins@debian.org>.
2001-01-02 Ulrich Drepper <drepper@redhat.com> 2001-01-02 Ulrich Drepper <drepper@redhat.com>
* intl/dcigettext.c (guess_category_value): Rewrite so that LANGUAGE * intl/dcigettext.c (guess_category_value): Rewrite so that LANGUAGE

View File

@ -46,7 +46,7 @@ static void free_key_mem (void *mem);
char * char *
dlerror (void) dlerror (void)
{ {
char *buf; char *buf = NULL;
struct dl_action_result *result; struct dl_action_result *result;
/* Get error string. */ /* Get error string. */
@ -64,9 +64,8 @@ dlerror (void)
free ((char *) result->errstring); free ((char *) result->errstring);
result->errstring = NULL; result->errstring = NULL;
} }
buf = NULL;
} }
else else if (result->errstring != NULL)
{ {
buf = (char *) result->errstring; buf = (char *) result->errstring;
if (__asprintf (&buf, result->errcode != 0 ? "%s: %s: %s" : "%s: %s", if (__asprintf (&buf, result->errcode != 0 ? "%s: %s: %s" : "%s: %s",

View File

@ -27,6 +27,12 @@ main (void)
void *h; void *h;
const char *s; const char *s;
/* Test that dlerror works initially. */
s = dlerror ();
printf ("dlerror() without prior dl*() call returned: %s\n", s);
if (s != NULL)
return 1;
h = dlopen ("errmsg1mod.so", RTLD_NOW); h = dlopen ("errmsg1mod.so", RTLD_NOW);
if (h != NULL) if (h != NULL)
{ {

View File

@ -1,4 +1,4 @@
# Copyright (C) 1992-1999, 2000 Free Software Foundation, Inc. # Copyright (C) 1992-1999, 2000, 2001 Free Software Foundation, Inc.
# This file is part of the GNU C Library. # This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or # The GNU C Library is free software; you can redistribute it and/or
@ -38,7 +38,7 @@ TEXI2DVI = texi2dvi
AWK = gawk AWK = gawk
endif endif
TEXI2PDF = pdftexinfo TEXI2PDF = texi2dvi --pdf
ifneq ($(strip $(MAKEINFO)),:) ifneq ($(strip $(MAKEINFO)),:)
all: info all: info

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991,92,96,97,99,2000 Free Software Foundation, Inc. /* Copyright (C) 1991,92,96,97,99,2000,2001 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -20,8 +20,9 @@
#define _STRINGS_H 1 #define _STRINGS_H 1
/* We don't need and should not read this file if <string.h> was already /* We don't need and should not read this file if <string.h> was already
read. */ read. The one exception being that if __USE_BSD isn't defined, then
#ifndef _STRING_H these aren't defined in string.h, so we need to define them here. */
#if !defined _STRING_H || !defined __USE_BSD
# include <features.h> # include <features.h>
# define __need_size_t # define __need_size_t

View File

@ -1,6 +1,5 @@
/* Machine-dependent ELF dynamic relocation functions. PowerPC version. /* Machine-dependent ELF dynamic relocation functions. PowerPC version.
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 Copyright (C) 1995,96,97,98,99,2000,2001 Free Software Foundation, Inc.
Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -368,13 +367,25 @@ __elf_machine_fixup_plt(struct link_map *map, const Elf32_Rela *reloc,
static void static void
dl_reloc_overflow (struct link_map *map, dl_reloc_overflow (struct link_map *map,
const char *name, const char *name,
Elf32_Addr *const reloc_addr) Elf32_Addr *const reloc_addr,
const Elf32_Sym *sym,
const Elf32_Sym *refsym)
{ {
char buffer[128]; char buffer[128];
char *t; char *t;
const Elf32_Sym *errsym = sym ?: refsym;
t = stpcpy (buffer, name); t = stpcpy (buffer, name);
t = stpcpy (t, " relocation at 0x00000000"); t = stpcpy (t, " relocation at 0x00000000");
_itoa_word ((unsigned) reloc_addr, t, 16, 0); _itoa_word ((unsigned) reloc_addr, t, 16, 0);
if (errsym)
{
const char *strtab;
strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
t = stpcpy (t, " for symbol `");
t = stpcpy (t, strtab + errsym->st_name);
t = stpcpy (t, "'");
}
t = stpcpy (t, " out of range"); t = stpcpy (t, " out of range");
_dl_signal_error (0, map->l_name, buffer); _dl_signal_error (0, map->l_name, buffer);
} }
@ -402,14 +413,14 @@ __process_machine_rela (struct link_map *map,
case R_PPC_ADDR24: case R_PPC_ADDR24:
if (finaladdr > 0x01fffffc && finaladdr < 0xfe000000) if (finaladdr > 0x01fffffc && finaladdr < 0xfe000000)
dl_reloc_overflow (map, "R_PPC_ADDR24", reloc_addr); dl_reloc_overflow (map, "R_PPC_ADDR24", reloc_addr, sym, refsym);
*reloc_addr = (*reloc_addr & 0xfc000003) | (finaladdr & 0x3fffffc); *reloc_addr = (*reloc_addr & 0xfc000003) | (finaladdr & 0x3fffffc);
break; break;
case R_PPC_ADDR16: case R_PPC_ADDR16:
case R_PPC_UADDR16: case R_PPC_UADDR16:
if (finaladdr > 0x7fff && finaladdr < 0x8000) if (finaladdr > 0x7fff && finaladdr < 0x8000)
dl_reloc_overflow (map, "R_PPC_ADDR16", reloc_addr); dl_reloc_overflow (map, "R_PPC_ADDR16", reloc_addr, sym, refsym);
*(Elf32_Half*) reloc_addr = finaladdr; *(Elf32_Half*) reloc_addr = finaladdr;
break; break;
@ -429,7 +440,7 @@ __process_machine_rela (struct link_map *map,
case R_PPC_ADDR14_BRTAKEN: case R_PPC_ADDR14_BRTAKEN:
case R_PPC_ADDR14_BRNTAKEN: case R_PPC_ADDR14_BRNTAKEN:
if (finaladdr > 0x7fff && finaladdr < 0x8000) if (finaladdr > 0x7fff && finaladdr < 0x8000)
dl_reloc_overflow (map, "R_PPC_ADDR14", reloc_addr); dl_reloc_overflow (map, "R_PPC_ADDR14", reloc_addr, sym, refsym);
*reloc_addr = (*reloc_addr & 0xffff0003) | (finaladdr & 0xfffc); *reloc_addr = (*reloc_addr & 0xffff0003) | (finaladdr & 0xfffc);
if (rinfo != R_PPC_ADDR14) if (rinfo != R_PPC_ADDR14)
*reloc_addr = ((*reloc_addr & 0xffdfffff) *reloc_addr = ((*reloc_addr & 0xffdfffff)
@ -441,7 +452,7 @@ __process_machine_rela (struct link_map *map,
{ {
Elf32_Sword delta = finaladdr - (Elf32_Word) reloc_addr; Elf32_Sword delta = finaladdr - (Elf32_Word) reloc_addr;
if (delta << 6 >> 6 != delta) if (delta << 6 >> 6 != delta)
dl_reloc_overflow (map, "R_PPC_REL14", reloc_addr); dl_reloc_overflow (map, "R_PPC_REL14", reloc_addr, sym, refsym);
*reloc_addr = (*reloc_addr & 0xfc000003) | (delta & 0x3fffffc); *reloc_addr = (*reloc_addr & 0xfc000003) | (delta & 0x3fffffc);
} }
break; break;

View File

@ -1,5 +1,5 @@
/* Startup code for programs linked with GNU libc. /* Startup code for programs linked with GNU libc.
Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -61,5 +61,6 @@ END(_start)
/* Define a symbol for the first piece of initialized data. */ /* Define a symbol for the first piece of initialized data. */
.section ".data" .section ".data"
.globl __data_start
__data_start: __data_start:
weak_alias (__data_start, data_start) weak_alias (__data_start, data_start)

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991-1999, 2000 Free Software Foundation, Inc. /* Copyright (C) 1991-1999, 2000, 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -175,7 +175,8 @@ tzset_internal (always)
/* No data file found. Default to UTC if nothing specified. */ /* No data file found. Default to UTC if nothing specified. */
if (tz == NULL || *tz == '\0') if (tz == NULL || *tz == '\0'
|| (TZDEFAULT != NULL && strcmp (tz, TZDEFAULT) == 0))
{ {
tz_rules[0].name = tz_rules[1].name = "UTC"; tz_rules[0].name = tz_rules[1].name = "UTC";
tz_rules[0].type = tz_rules[1].type = J0; tz_rules[0].type = tz_rules[1].type = J0;