PR24511, nm should not mark symbols in .init_array as "t"
KONRAD Frederic
frederic.konrad@adacore.com
Thu Feb 27 15:03:00 GMT 2020
More information about the Binutils mailing list
Thu Feb 27 15:03:00 GMT 2020
- Previous message (by thread): PR24511, nm should not mark symbols in .init_array as "t"
- Next message (by thread): bfd_stat_arch_elt buffer overflow
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Le 2/27/20 à 7:56 AM, Alan Modra a écrit :
> On Wed, Feb 26, 2020 at 06:08:46PM +0100, KONRAD Frederic wrote:
>> It seems that this patch has the side effect of marking the symbols in .idata as
>> "D" instead of "I" previously. Is that expected?
>
> I guess so, but also wrong. The patch should not have changed the
> order of decode_section_type and coff_section_type calls. I'm going
> to commit this to trunk and a patch that just reverses the calls to
> the branch, after testing.
>
> * syms.c (stt): Trim off all but 'e', 'i' and 'p' entries.
> (coff_section_type): Adjust comment.
> (decode_section_type): Likewise. Call coff_section_type before
> decode_section_type.
> (bfd_decode_symclass): Use 'c' for common sections other than
> the standard one.
Thanks for the fast answer,
I confirm that the patch below fix the behavior I had.
>
> diff --git a/bfd/syms.c b/bfd/syms.c
> index 8a5c89767a..c1de8ebab1 100644
> --- a/bfd/syms.c
> +++ b/bfd/syms.c
> @@ -565,30 +565,15 @@ struct section_to_type
> char type;
> };
>
> -/* Map section names to POSIX/BSD single-character symbol types.
> +/* Map special section names to POSIX/BSD single-character symbol types.
> This table is probably incomplete. It is sorted for convenience of
> adding entries. Since it is so short, a linear search is used. */
> static const struct section_to_type stt[] =
> {
> - {".bss", 'b'},
> - {"code", 't'}, /* MRI .text */
> - {".data", 'd'},
> - {"*DEBUG*", 'N'},
> - {".debug", 'N'}, /* MSVC's .debug (non-standard debug syms) */
> {".drectve", 'i'}, /* MSVC's .drective section */
> {".edata", 'e'}, /* MSVC's .edata (export) section */
> - {".fini", 't'}, /* ELF fini section */
> {".idata", 'i'}, /* MSVC's .idata (import) section */
> - {".init", 't'}, /* ELF init section */
> {".pdata", 'p'}, /* MSVC's .pdata (stack unwind) section */
> - {".rdata", 'r'}, /* Read only data. */
> - {".rodata", 'r'}, /* Read only data. */
> - {".sbss", 's'}, /* Small BSS (uninitialized data). */
> - {".scommon", 'c'}, /* Small common. */
> - {".sdata", 'g'}, /* Small initialized data. */
> - {".text", 't'},
> - {"vars", 'd'}, /* MRI .data */
> - {"zerovars", 'b'}, /* MRI .bss */
> {0, 0}
> };
>
> @@ -596,8 +581,7 @@ static const struct section_to_type stt[] =
> section S, or '?' for an unknown COFF section.
>
> Check for leading strings which match, followed by a number, '.',
> - or '$' so .text5 matches the .text entry, but .init_array doesn't
> - match the .init entry. */
> + or '$' so .idata5 matches the .idata entry. */
>
> static char
> coff_section_type (const char *s)
> @@ -619,7 +603,7 @@ coff_section_type (const char *s)
> SECTION, or '?' for an unknown section. This uses section flags to
> identify sections.
>
> - FIXME These types are unhandled: c, i, e, p. If we handled these also,
> + FIXME These types are unhandled: e, i, p. If we handled these also,
> we could perhaps obsolete coff_section_type. */
>
> static char
> @@ -668,7 +652,12 @@ bfd_decode_symclass (asymbol *symbol)
> char c;
>
> if (symbol->section && bfd_is_com_section (symbol->section))
> - return 'C';
> + {
> + if (symbol->section == bfd_com_section_ptr)
> + return 'C';
> + else
> + return 'c';
> + }
> if (bfd_is_und_section (symbol->section))
> {
> if (symbol->flags & BSF_WEAK)
> @@ -705,9 +694,9 @@ bfd_decode_symclass (asymbol *symbol)
> c = 'a';
> else if (symbol->section)
> {
> - c = decode_section_type (symbol->section);
> + c = coff_section_type (symbol->section->name);
> if (c == '?')
> - c = coff_section_type (symbol->section->name);
> + c = decode_section_type (symbol->section);
> }
> else
> return '?';
>
- Previous message (by thread): PR24511, nm should not mark symbols in .init_array as "t"
- Next message (by thread): bfd_stat_arch_elt buffer overflow
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list