Port-arm archive

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

Re: [TEST CASE] String offset errors on evbarm 8.99 [PR 54159]



Forgotten script attached.

On Wed, Aug 07, 2019 at 08:35:09PM +0200, tlaronde wrote:
> Description: the linker complains about string offsets in .strtab that
> are pass the end of the section. This can be seen equally with a
> cross-linker or a native linker on earmv7hf.
> 
> How to reproduce: this is triggered by the use of the:
> 
> 	-Wl,-retain-symbols-file -Wl,./some_exported_list
> 
> This can be tested with dummy modules (the script joined allows to
> create a variable number of modules---the "from" and "to" decimal
> numbers of first and last letter---with an alphabetical letter as
> name, and as the name of a function inside the dummy; by default, it
> creates 'a' to 'd' C files; it suffices to exhibit the problems).
> 
> Scope: it seemed to be only a debug problem at first since the .strtab
> section is only used in this case. But it could trigger more profound
> problems if a symbol is 'a' or 'd' conflicting with "$a" and "$d". In
> some cases (this is not constant), even 'c' disappears.
> 
> First analysis: when a symbol is named 'a' or 'd', even if explicitely
> exported, it never appears in the .strtab; but '$a' and '$d' are
> always there.
> 
> In the export table, except (always) symbols named 'a' or 'd' (that
> never appear), the only strings are '$a', '$d' and the strings present
> in the exported_list given as an argument to the "-retain-symbols-file".
> 
> But some strings that are still associated with some symbols are not
> present and these are the ones the linker complains about.
> 
> In the simplest case, the addition of '$d' can mask the symptoms (no
> more complaints of the linker) because some missing strings are the
> c source file names ($module.c) and some functions present in the crt*
> modules, and these are associated with '$d'. But in pkgsrc
> security/p11-kit, when more libraries are linked against the library
> created, some strings are still missing (for the linker) even when
> adding '$d' to the exported list.
> 
> What's next? I will have some spare time next week and will tackle
> the problem on the ld source level. But I have only the knowledge given
> by John R. Levine's "Linkers & Loaders" book, and I have never dived in
> the binutils sources. So if this rings a bell to someone more
> knowledgeable who can tackle the problem himself...
> 
> At the very least, I would like to be pointed to some
> documentation, particularily about what are these special symbols '$a'
> '$d' (and '$t' and what else?) and what is special about the earmv7
> case.
> 
> HTH,
> -- 
>         Thierry Laronde <tlaronde +AT+ polynum +dot+ com>
>                      http://www.kergis.com/
>                        http://www.sbfa.fr/
> Key fingerprint = 0FF7 E906 FBAF FE95 FD89  250D 52B1 AE95 6006 F40C

-- 
        Thierry Laronde <tlaronde +AT+ polynum +dot+ com>
                     http://www.kergis.com/
                       http://www.sbfa.fr/
Key fingerprint = 0FF7 E906 FBAF FE95 FD89  250D 52B1 AE95 6006 F40C

Attachment: compile.sh
Description: Bourne shell script



Home | Main Index | Thread Index | Old Index