bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug ld/20828] [MIPS] produces invalid dynamic symbol table when --gc-se


From: address@hidden
Subject: [Bug ld/20828] [MIPS] produces invalid dynamic symbol table when --gc-sections is used since PR ld/13177 fix
Date: Thu, 24 Nov 2016 20:04:05 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=20828

--- Comment #8 from Maciej W. Rozycki <address@hidden> ---
By the MIPS psABI's definition you shall not have external GGA_NONE
symbols as any GGA_NONE symbols will be assigned to the local GOT part,
whose entries are only relocated by the base address at the load time.
Symbols in the GGA_NONE class will normally not have dynsym entries,
except from selected section symbols.

Any external symbols belong to the GGA_NORMAL and GGA_RELOC_ONLY
classes -- depending on whether there are any GOT relocations implying
signed 16-bit GP-relative access referring to them or not -- and they
will be assigned to the global GOT part.  The indices of those symbols
will be mapped between the GOT and the dynsym table, as mandated by the
MIPS psABI, according to the DT_MIPS_LOCAL_GOTNO and DT_MIPS_GOTSYM
dynamic tags, such that individual entry's indices relative to the
beginning of the global part of both tables will be the same.

NB GGA stands for Global GOT Area.

I agree the presence of (non-section) local symbols in the dynsym table
is a generic issue, and given that `elf_gc_sweep_symbol' appears to be
the only place where they are created I think that rather than
adjusting this piece of code to assign these symbols to the GGA_NONE
class it will make sense to discard them altogether.  Unless there is
an actual need for them, that is, which I yet need to be told about.
FAOD it is not incorrect to have them -- it is just useless.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]