From ca1c6bec7377899f7ad4e0e90f38f046adaee0d5 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 24 Jan 1994 17:41:21 +0000 Subject: [PATCH] * aoutx.h (translate_symbol_table): The string index 0 has a special meaning for normal symbols, but not for dynamic symbols. --- bfd/ChangeLog | 5 +++++ bfd/aoutx.h | 10 +++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 1a92dcd104f..04efe083e34 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +Mon Jan 24 12:38:54 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) + + * aoutx.h (translate_symbol_table): The string index 0 has a + special meaning for normal symbols, but not for dynamic symbols. + Sat Jan 22 12:26:01 1994 Stu Grossman (grossman at cygnus.com) * sparclynx.c: Setup appropriate macros to enable core file diff --git a/bfd/aoutx.h b/bfd/aoutx.h index 41107193dad..b7d2d44ab0e 100644 --- a/bfd/aoutx.h +++ b/bfd/aoutx.h @@ -1410,7 +1410,15 @@ translate_symbol_table (abfd, in, ext, count, str, strsize, dynamic) x = GET_WORD (abfd, ext->e_strx); in->symbol.the_bfd = abfd; - if (x < strsize) + + /* For the normal symbols, the zero index points at the number + of bytes in the string table but is to be interpreted as the + null string. For the dynamic symbols, the number of bytes in + the string table is stored in the __DYNAMIC structure and the + zero index points at an actual string. */ + if (x == 0 && ! dynamic) + in->symbol.name = ""; + else if (x < strsize) in->symbol.name = str + x; else return false; -- 2.30.2