modlib: Move modlib_allocbuffer to modlib_sectname and modlib_symname
it's better to allocate the buffer just before really use it. Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
This commit is contained in:
parent
879dab08a6
commit
120c4a1660
@ -811,17 +811,6 @@ int modlib_bind(FAR struct module_s *modp,
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Allocate an I/O buffer. This buffer is used by mod_symname() to
|
||||
* accumulate the variable length symbol name.
|
||||
*/
|
||||
|
||||
ret = modlib_allocbuffer(loadinfo);
|
||||
if (ret < 0)
|
||||
{
|
||||
berr("ERROR: modlib_allocbuffer failed: %d\n", ret);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
/* Process relocations in every allocated section */
|
||||
|
||||
for (i = 1; i < loadinfo->ehdr.e_shnum; i++)
|
||||
|
@ -73,6 +73,17 @@ static inline int modlib_sectname(FAR struct mod_loadinfo_s *loadinfo,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* Allocate an I/O buffer. This buffer is used by modlib_sectname() to
|
||||
* accumulate the variable length symbol name.
|
||||
*/
|
||||
|
||||
ret = modlib_allocbuffer(loadinfo);
|
||||
if (ret < 0)
|
||||
{
|
||||
berr("ERROR: modlib_allocbuffer failed: %d\n", ret);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
/* Get the section name string table section header */
|
||||
|
||||
shstr = &loadinfo->shdr[shstrndx];
|
||||
|
@ -109,6 +109,17 @@ static int modlib_symname(FAR struct mod_loadinfo_s *loadinfo,
|
||||
return -ESRCH;
|
||||
}
|
||||
|
||||
/* Allocate an I/O buffer. This buffer is used by mod_symname() to
|
||||
* accumulate the variable length symbol name.
|
||||
*/
|
||||
|
||||
ret = modlib_allocbuffer(loadinfo);
|
||||
if (ret < 0)
|
||||
{
|
||||
berr("ERROR: modlib_allocbuffer failed: %d\n", ret);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
offset = sh_offset + sym->st_name;
|
||||
|
||||
/* Loop until we get the entire symbol name into memory */
|
||||
|
Loading…
Reference in New Issue
Block a user